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