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