#Область ОписаниеПеременных
&НаКлиенте
Перем ОткрытаФормаВыбораИсполнителя;
&НаКлиенте
Перем ОткрытаФормаВыбораПроверяющего;
&НаКлиенте
Перем КонтекстВыбора;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Объект.Ссылка.Пустая() Тогда
ИнициализироватьФорму();
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами");
ГиперссылкаФайлов = МодульРаботаСФайлами.ГиперссылкаФайлов();
ГиперссылкаФайлов.Размещение = "КоманднаяПанель";
МодульРаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ГиперссылкаФайлов);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбновитьДоступностьКомандОстановки();
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент");
МодульРаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ИнициализироватьФорму();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборРолиИсполнителя") Тогда
Если КонтекстВыбора = "ИсполнительПриИзменении" Тогда
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Объект.Исполнитель = ВыбранноеЗначение.РольИсполнителя;
КонецЕсли;
УстановитьДоступностьПроверяющего(ЭтотОбъект);
ИначеЕсли КонтекстВыбора = "ПроверяющийПриИзменении" Тогда
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда
Объект.Проверяющий = ВыбранноеЗначение.РольИсполнителя;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ИзмененаНастройкаОтложенногоСтарта" Тогда
Отложен = (Параметр.Отложен
И Параметр.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияПроцессовДляЗапуска.ГотовКСтарту"));
ДатаОтложенногоСтарта = Параметр.ДатаОтложенногоСтарта;
УстановитьСвойстваЭлементовФормы(ЭтотОбъект);
Если Элементы.ГруппаСостояние.Видимость Тогда
ИнфоНадписьЗаголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект));
Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1);
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент");
МодульРаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверитьДатуЗавершенияОтложенногоПроцесса(ТекущийОбъект, Отказ);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ИзменятьЗаданияЗаднимЧислом = ПолучитьФункциональнуюОпцию("ИзменятьЗаданияЗаднимЧислом");
Если НачальныйПризнакСтарта И ИзменятьЗаданияЗаднимЧислом Тогда
УстановитьПривилегированныйРежим(Истина);
ТекущийОбъект.ИзменитьРеквизитыНевыполненныхЗадач();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_Задание", ПараметрыЗаписи, Объект.Ссылка);
Оповестить("Запись_ЗадачаИсполнителя", ПараметрыЗаписи, Неопределено);
Если ПараметрыЗаписи.Свойство("Старт") И ПараметрыЗаписи.Старт Тогда
ПодключитьОбработчикОжидания("ОбновитьФорму", 0.2, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьФорму()
УстановитьСвойстваЭлементовФормы(ЭтотОбъект);
Если Элементы.ГруппаСостояние.Видимость Тогда
ИнфоНадписьЗаголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект));
Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1);
КонецЕсли;
ОбновитьДоступностьКомандОстановки();
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура НаПроверкеПриИзменении(Элемент)
УстановитьДоступностьПроверяющего(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПредметНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(, Объект.Предмет);
КонецПроцедуры
&НаКлиенте
Процедура ГлавнаяЗадачаНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(, Объект.ГлавнаяЗадача);
КонецПроцедуры
&НаКлиенте
Процедура ИнфоНадписьЗаголовокОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьНастройкуОтложенногоСтарта();
КонецПроцедуры
&НаКлиенте
Процедура ИсполнительНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
БизнесПроцессыИЗадачиКлиент.ВыбратьИсполнителя(Элемент, Объект.Исполнитель);
КонецПроцедуры
&НаКлиенте
Процедура ИсполнительПриИзменении(Элемент)
Если ОткрытаФормаВыбораИсполнителя = Истина Тогда
Возврат;
КонецЕсли;
ОсновнойОбъектАдресации = Неопределено;
ДополнительныйОбъектАдресации = Неопределено;
Если ТипЗнч(Объект.Исполнитель) = Тип("СправочникСсылка.РолиИсполнителей") И ЗначениеЗаполнено(Объект.Исполнитель) Тогда
Если ИспользуетсяСОбъектамиАдресации(Объект.Исполнитель) Тогда
КонтекстВыбора = "ИсполнительПриИзменении";
ПараметрыФормы = БизнесПроцессыИЗадачиКлиент.ПараметрыФормыВыбораРолиИсполнителя(Объект.Исполнитель,
ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации);
БизнесПроцессыИЗадачиКлиент.ОткрытьФормуВыбораРолиИсполнителя(ПараметрыФормы, ЭтотОбъект);
Возврат;
КонецЕсли;
КонецЕсли;
УстановитьДоступностьПроверяющего(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ИсполнительОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОткрытаФормаВыбораИсполнителя = ТипЗнч(ВыбранноеЗначение) = Тип("Структура");
Если ОткрытаФормаВыбораИсполнителя Тогда
СтандартнаяОбработка = Ложь;
Объект.Исполнитель = ВыбранноеЗначение.РольИсполнителя;
Объект.ОсновнойОбъектАдресации = ВыбранноеЗначение.ОсновнойОбъектАдресации;
Объект.ДополнительныйОбъектАдресации = ВыбранноеЗначение.ДополнительныйОбъектАдресации;
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИсполнительАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Текст) Тогда
СтандартнаяОбработка = Ложь;
ДанныеВыбора = СформироватьДанныеВыбораИсполнителя(Текст);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИсполнительОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Текст) Тогда
СтандартнаяОбработка = Ложь;
ДанныеВыбора = СформироватьДанныеВыбораИсполнителя(Текст);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверяющийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
БизнесПроцессыИЗадачиКлиент.ВыбратьИсполнителя(Элемент, Объект.Проверяющий);
КонецПроцедуры
&НаКлиенте
Процедура ПроверяющийПриИзменении(Элемент)
Если ОткрытаФормаВыбораПроверяющего = Истина Тогда
Возврат;
КонецЕсли;
ОсновнойОбъектАдресации = Неопределено;
ДополнительныйОбъектАдресации = Неопределено;
Если ТипЗнч(Объект.Проверяющий) = Тип("СправочникСсылка.РолиИсполнителей") И ЗначениеЗаполнено(Объект.Проверяющий) Тогда
Если ИспользуетсяСОбъектамиАдресации(Объект.Проверяющий) Тогда
КонтекстВыбора = "ПроверяющийПриИзменении";
ПараметрыФормы = БизнесПроцессыИЗадачиКлиент.ПараметрыФормыВыбораРолиИсполнителя(Объект.Проверяющий,
ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации);
БизнесПроцессыИЗадачиКлиент.ОткрытьФормуВыбораРолиИсполнителя(ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверяющийОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОткрытаФормаВыбораПроверяющего = ТипЗнч(ВыбранноеЗначение) = Тип("Структура");
Если ОткрытаФормаВыбораПроверяющего Тогда
СтандартнаяОбработка = Ложь;
Объект.Проверяющий = ВыбранноеЗначение.РольИсполнителя;
Объект.ОсновнойОбъектАдресацииПроверяющий = ВыбранноеЗначение.ОсновнойОбъектАдресации;
Объект.ДополнительныйОбъектАдресацииПроверяющий = ВыбранноеЗначение.ДополнительныйОбъектАдресации;
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверяющийАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Текст) Тогда
СтандартнаяОбработка = Ложь;
ДанныеВыбора = СформироватьДанныеВыбораИсполнителя(Текст);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверяющийОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Текст) Тогда
СтандартнаяОбработка = Ложь;
ДанныеВыбора = СформироватьДанныеВыбораИсполнителя(Текст);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СрокИсполненияПриИзменении(Элемент)
Если Объект.СрокИсполнения = НачалоДня(Объект.СрокИсполнения) Тогда
Объект.СрокИсполнения = КонецДня(Объект.СрокИсполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СрокПроверкиПриИзменении(Элемент)
Если Объект.СрокПроверки = НачалоДня(Объект.СрокПроверки) Тогда
Объект.СрокПроверки = КонецДня(Объект.СрокПроверки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент");
МодульРаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент");
МодульРаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент,
ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент");
МодульРаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания,
СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
ОчиститьСообщения();
Если Не ПроверитьЗаполнение() Тогда
Возврат;
КонецЕсли;
Записать();
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Остановить(Команда)
БизнесПроцессыИЗадачиКлиент.ОстановитьБизнесПроцессИзФормыОбъекта(ЭтотОбъект);
ОбновитьДоступностьКомандОстановки();
КонецПроцедуры
&НаКлиенте
Процедура ПродолжитьБизнесПроцесс(Команда)
БизнесПроцессыИЗадачиКлиент.ПродолжитьБизнесПроцессИзФормыОбъекта(ЭтотОбъект);
ОбновитьДоступностьКомандОстановки();
КонецПроцедуры
&НаКлиенте
Процедура НастроитьОтложенныйСтарт(Команда)
ОткрытьНастройкуОтложенногоСтарта();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
МодульРаботаСФайламиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСФайламиКлиент");
МодульРаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Проверяющий.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.НаПроверке");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Проверяющий");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Проверяющий.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.НаПроверке");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Проверяющий");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьФорму()
НачальныйПризнакСтарта = Объект.Стартован;
УстановитьРеквизитыОтложенногоСтарта();
ИспользоватьДатуИВремяВСрокахЗадач = ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач");
ИзменятьЗаданияЗаднимЧислом = ПолучитьФункциональнуюОпцию("ИзменятьЗаданияЗаднимЧислом");
ИспользоватьПодчиненныеБизнесПроцессы = ПолучитьФункциональнуюОпцию("ИспользоватьПодчиненныеБизнесПроцессы");
ПредметСтрокой = ОбщегоНазначения.ПредметСтрокой(Объект.Предмет);
Если Объект.ГлавнаяЗадача = Неопределено Или Объект.ГлавнаяЗадача.Пустая() Тогда
ГлавнаяЗадачаСтрокой = НСтр("ru = 'не задана'");
Иначе
ГлавнаяЗадачаСтрокой = Строка(Объект.ГлавнаяЗадача);
КонецЕсли;
УстановитьСвойстваЭлементовФормы(ЭтотОбъект);
Если Элементы.ГруппаСостояние.Видимость Тогда
ИнфоНадписьЗаголовок = СтроковыеФункции.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект));
Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДоступностьКомандОстановки()
Если Объект.Завершен Тогда
Элементы.ФормаОстановить.Видимость = Ложь;
Элементы.ФормаПродолжить.Видимость = Ложь;
Возврат;
КонецЕсли;
Если Объект.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияБизнесПроцессов.Остановлен") Тогда
Элементы.ФормаОстановить.Видимость = Ложь;
Элементы.ФормаПродолжить.Видимость = Истина;
Иначе
Элементы.ФормаОстановить.Видимость = Объект.Стартован;
Элементы.ФормаПродолжить.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьПроверяющего(Форма)
ДоступностьПоля = Форма.Объект.НаПроверке;
Форма.Элементы.ГруппаПроверяющий.Доступность = ДоступностьПоля;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ИспользуетсяСОбъектамиАдресации(ПроверяемыйОбъект)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПроверяемыйОбъект, "ИспользуетсяСОбъектамиАдресации");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьСвойстваЭлементовФормы(Форма)
Если Форма.ТолькоПросмотр Тогда
Форма.Элементы.ФормаОстановить.Видимость = Ложь;
Форма.Элементы.ФормаЗаписатьИЗакрыть.Видимость = Ложь;
Форма.Элементы.ФормаНастроитьОтложенныйСтарт.Видимость = Ложь;
Форма.Элементы.ФормаЗаписать.Видимость = Ложь;
Форма.Элементы.ФормаПродолжить.Видимость = Ложь;
Иначе
ОбъектСтартован = ОбъектСтартован(Форма);
Форма.Элементы.СрокИсполненияВремя.Видимость = Форма.ИспользоватьДатуИВремяВСрокахЗадач;
Форма.Элементы.СрокПроверкиВремя.Видимость = Форма.ИспользоватьДатуИВремяВСрокахЗадач;
Форма.Элементы.Дата.Формат = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D");
Форма.Элементы.Предмет.Гиперссылка = Форма.Объект.Предмет <> Неопределено
И Не Форма.Объект.Предмет.Пустая();
Форма.Элементы.ФормаСтартИЗакрыть.Видимость = Не ОбъектСтартован;
Форма.Элементы.ФормаСтартИЗакрыть.КнопкаПоУмолчанию = Не ОбъектСтартован;
Форма.Элементы.ФормаСтарт.Видимость = Не ОбъектСтартован;
Форма.Элементы.ФормаНастроитьОтложенныйСтарт.Видимость = Не ОбъектСтартован;
Форма.Элементы.ФормаЗаписатьИЗакрыть.Видимость = ?(Форма.Объект.Завершен, Ложь, ОбъектСтартован);
Форма.Элементы.ФормаЗаписать.Видимость = Не Форма.Объект.Завершен;
Форма.Элементы.ФормаЗаписатьИЗакрыть.КнопкаПоУмолчанию = ОбъектСтартован;
Форма.Элементы.ФормаНастроитьОтложенныйСтарт.Доступность = Не Форма.Объект.Стартован;
Если Форма.Объект.ГлавнаяЗадача = Неопределено Или Форма.Объект.ГлавнаяЗадача.Пустая() Тогда
Форма.Элементы.ГлавнаяЗадача.Гиперссылка = Ложь;
КонецЕсли;
Если Не Форма.ИспользоватьПодчиненныеБизнесПроцессы Тогда
Форма.Элементы.ГлавнаяЗадача.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
Форма.Элементы.ГруппаСостояние.Видимость = Форма.Объект.Завершен Или ОбъектСтартован(Форма);
УстановитьДоступностьПроверяющего(Форма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция СообщениеОСтатусеЗадания(Форма)
ТекстСостояния = "";
Если Форма.Объект.Завершен Тогда
ДатаЗавершенияСтрокой = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач,
Формат(Форма.Объект.ДатаЗавершения, "ДЛФ=DT"),
Формат(Форма.Объект.ДатаЗавершения, "ДЛФ=D"));
СтрокаТекста = ?(Форма.Объект.Выполнено,
НСтр("ru = 'Задание выполнено %1.'"), НСтр("ru = 'Задание отменено %1.'"));
ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаТекста, ДатаЗавершенияСтрокой);
Для Каждого Элемент Из Форма.Элементы Цикл
Если ТипЗнч(Элемент) <> Тип("ПолеФормы") И ТипЗнч(Элемент) <> Тип("ГруппаФормы") Тогда
Продолжить;
КонецЕсли;
Элемент.ТолькоПросмотр = Истина;
КонецЦикла;
ИначеЕсли Форма.Объект.Стартован Тогда
ТекстСостояния = ?(Форма.ИзменятьЗаданияЗаднимЧислом,
НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания вступят в силу немедленно для ранее выданной задачи.'"),
НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания не будут отражены в ранее выданной задаче.'"));
ИначеЕсли Форма.Отложен Тогда
ДатаОтложенногоСтартаСтрокой = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач, Формат(Форма.ДатаОтложенногоСтарта,
"ДЛФ=DT"), Формат(Форма.ДатаОтложенногоСтарта, "ДЛФ=D"));
ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Задание будет запущено <a href=""%1"">%2</a>'"), "ОткрытьНастройкуОтложенногоСтарта",
ДатаОтложенногоСтартаСтрокой);
КонецЕсли;
Возврат ТекстСостояния;
КонецФункции
&НаСервере
Процедура ПроверитьДатуЗавершенияОтложенногоПроцесса(ПроверяемыйОбъект, Отказ)
Если Не ЗначениеЗаполнено(ПроверяемыйОбъект.СрокИсполнения) Тогда
Возврат;
КонецЕсли;
ДатаОтложенногоСтарта = БизнесПроцессыИЗадачиСервер.ДатаОтложенногоСтартаПроцесса(ПроверяемыйОбъект.Ссылка);
Если ПроверяемыйОбъект.СрокИсполнения < ДатаОтложенногоСтарта Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Срок исполнения задания не может быть меньше даты отложенного старта.'"),,
"СрокИсполнения", "Объект.СрокИсполнения");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьНастройкуОтложенногоСтарта()
Если КлючевыеРеквизитыФормыЗаполнены() Тогда
БизнесПроцессыИЗадачиКлиент.НастроитьОтложенныйСтарт(Объект.Ссылка, Объект.СрокИсполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция КлючевыеРеквизитыФормыЗаполнены()
Если Объект.Стартован Тогда
Возврат Истина;
КонецЕсли;
ОчиститьСообщения();
РеквизитыФормыЗаполнены = Истина;
Если Не ЗначениеЗаполнено(Объект.Исполнитель) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Исполнитель"" не заполнено.'"),,
"Исполнитель", "Объект.Исполнитель");
РеквизитыФормыЗаполнены = Ложь;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Наименование) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Задание"" не заполнено.'"),,
"Исполнитель", "Объект.Наименование");
РеквизитыФормыЗаполнены = Ложь;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.СрокИсполнения) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Срок"" исполнения не заполнено.'"),,
"СрокИсполнения", "Объект.СрокИсполнения");
РеквизитыФормыЗаполнены = Ложь;
КонецЕсли;
Возврат РеквизитыФормыЗаполнены;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ОбъектСтартован(Форма)
Возврат Форма.Объект.Стартован Или Форма.Отложен;
КонецФункции
&НаСервере
Процедура УстановитьРеквизитыОтложенногоСтарта()
ДатаОтложенногоСтарта = БизнесПроцессыИЗадачиСервер.ДатаОтложенногоСтартаПроцесса(Объект.Ссылка);
Отложен = (ДатаОтложенногоСтарта <> '00010101');
КонецПроцедуры
&НаСервереБезКонтекста
Функция СформироватьДанныеВыбораИсполнителя(Знач Текст)
Возврат БизнесПроцессыИЗадачиСервер.СформироватьДанныеВыбораИсполнителя(Текст);
КонецФункции
#КонецОбласти