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