&НаСервере
Процедура ЗаполнитьФормуИзОбъектаXDTO(ОбъектXDTO)
//Добавление схемы комплексного процесса на схему
Если ЗначениеЗаполнено(ОбъектXDTO.diagram) Тогда
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("grs");
ОбъектXDTO.diagram.Записать(ИмяВременногоФайла);
пп_СхемаПроцесса = Новый ГрафическаяСхема;
пп_СхемаПроцесса.Прочитать(ИмяВременногоФайла);
УдалитьФайлы(ИмяВременногоФайла);
КонецЕсли;
//Типовой код
Если ОбъектXDTO.Установлено("objectID") Тогда
ID = ОбъектXDTO.objectId.id;
Тип = ОбъектXDTO.objectId.type;
КонецЕсли;
Обработки.ИнтеграцияС1СДокументооборот.УстановитьНавигационнуюСсылку(ЭтаФорма, ОбъектXDTO);
Обработки.ИнтеграцияС1СДокументооборот.ЗаполнитьСтандартнуюШапкуБизнесПроцесса(ЭтаФорма, ОбъектXDTO);
Обработки.ИнтеграцияС1СДокументооборот.УстановитьВидимостьКомандИзмененияСостоянияПроцесса(ЭтаФорма, ОбъектXDTO);
Обработки.ИнтеграцияС1СДокументооборот.ЗаполнитьКонтролераВФорме(ЭтаФорма, ОбъектXDTO);
Обработки.ИнтеграцияС1СДокументооборот.ЗаполнитьОбъектныйРеквизит(ЭтаФорма, ОбъектXDTO.routingType, "ПорядокВыполнения");
ОбработатьВыборПорядкаВыполнения();
Обработки.ИнтеграцияС1СДокументооборот.ЗаполнитьОбъектныйРеквизит(ЭтаФорма, ОбъектXDTO.businessProcessTemplate, "Шаблон");
Этапы.Очистить();
Номер = 1;
Для Каждого Этап Из ОбъектXDTO.stages Цикл
НоваяСтрока = Этапы.Добавить();
НоваяСтрока.НомерСтроки = Номер;
НоваяСтрока.ИдентификаторЭтапа = Этап.stageID;
НоваяСтрока.ИсполнителиЭтапаСтрокой = Этап.participants;
Обработки.ИнтеграцияС1СДокументооборот.ЗаполнитьОбъектныйРеквизит(НоваяСтрока, Этап.template, "ШаблонБизнесПроцесса");
ДополнитьИмяШаблонаПоТипуШаблона(НоваяСтрока);
НоваяСтрока.ПредшественникиЭтапаСтрокой = Этап.stagePredecessors;
НоваяСтрока.ПредшественникиВариантИспользования = Этап.predecessorsUseOption;
НоваяСтрока.БезусловныйПереходКСледующемуБылВыполнен = Этап.unconditionalPassageExecuted;
НоваяСтрока.ЗадачаВыполнена = Этап.executed;
Обработки.ИнтеграцияС1СДокументооборот.ЗаполнитьОбъектныйРеквизит(НоваяСтрока, Этап.businessProcess, "ЗапущенныйБизнесПроцесс");
Если Этап.Установлено("businessProcess") Тогда
НоваяСтрока.СрокВыполнения = Этап.businessProcess.dueDate;
КонецЕсли;
Если ЗначениеЗаполнено(НоваяСтрока.СрокВыполнения) И НЕ НоваяСтрока.ЗадачаВыполнена Тогда
НоваяСтрока.Срок = Формат(НоваяСтрока.СрокВыполнения,"ДФ='dd.MM.yyyy HH:mm'") + " ("+Этап.duration+")";
Иначе
НоваяСтрока.Срок = Этап.duration;
КонецЕсли;
Номер = Номер + 1;
КонецЦикла;
ПредшественникиЭтапов.Очистить();
Для каждого Предшественник из ОбъектXDTO.predecessors Цикл
НоваяСтрока = ПредшественникиЭтапов.Добавить();
НоваяСтрока.ИдентификаторПоследователя = Предшественник.followerID;
Если Предшественник.Установлено("predecessorID") Тогда
НоваяСтрока.ИдентификаторПредшественника = Предшественник.predecessorID;
КонецЕсли;
Обработки.ИнтеграцияС1СДокументооборот.ЗаполнитьОбъектныйРеквизит(НоваяСтрока, Предшественник.passageCondition, "УсловиеПерехода");
Обработки.ИнтеграцияС1СДокументооборот.ЗаполнитьОбъектныйРеквизит(НоваяСтрока, Предшественник.considerationCondition, "УсловиеРассмотрения");
НоваяСтрока.УсловныйПереходБылВыполнен = Предшественник.passageExecuted;
КонецЦикла;
// Возможно, изменение процесса запрещено его шаблоном.
ЗапрещеноИзменение = Ложь;
Если ОбъектXDTO.Свойства().Получить("blockedByTemplate") <> Неопределено Тогда
ЗапрещеноИзменение = ОбъектXDTO.blockedByTemplate;
КонецЕсли;
Элементы.Контролер.ТолькоПросмотр = Элементы.Контролер.ТолькоПросмотр
ИЛИ (ЗначениеЗаполнено(КонтролерID) И ЗапрещеноИзменение);
Элементы.СрокДата.ТолькоПросмотр = Элементы.СрокДата.ТолькоПросмотр
ИЛИ (ЗначениеЗаполнено(Срок) И ЗапрещеноИзменение);
Если Этапы.Количество() > 0 И ЗапрещеноИзменение Тогда
Элементы.Этапы.ТолькоПросмотр = Истина;
Элементы.ПорядокВыполненияПереключатель.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры