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