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