Created
January 25, 2017 12:18
-
-
Save pumbaEO/41235ad23388fe7606d74879a670c880 to your computer and use it in GitHub Desktop.
Доработка ДО с автосозданием Ролей исполнителей
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Процедура СоздатьПроцессПоЭтапуДоЗаписиПроцесса(КомплексныйПроцессОбъект, СозданныйПроцессОбъект) Экспорт | |
СозданныйПроцессОбъект.Проект = КомплексныйПроцессОбъект.Проект; | |
СозданныйПроцессОбъект.ПроектнаяЗадача = КомплексныйПроцессОбъект.ПроектнаяЗадача; | |
РаботаСБизнесПроцессамиВызовСервера.СкопироватьЗначенияДопРеквизитов(КомплексныйПроцессОбъект, СозданныйПроцессОбъект); | |
ОсновнойПредметСтрока = СозданныйПроцессОбъект.Предметы.Найти(Перечисления.РолиПредметов.Основной, "РольПредмета"); | |
Если ОсновнойПредметСтрока <> Неопределено Тогда | |
ОсновнойПредмет = ОсновнойПредметСтрока.Предмет; | |
МетаданныеПроцесса = СозданныйПроцессОбъект.Метаданные(); | |
ЕстьТаблицаИсполнители = МетаданныеПроцесса.ТабличныеЧасти.Найти("Исполнители") <> Неопределено; | |
Если ЕстьТаблицаИсполнители Тогда | |
Для каждого Строка из СозданныйПроцессОбъект.Исполнители Цикл | |
Строка.Исполнитель = ОпределитьПолнуюРоль(ОсновнойПредмет, Строка.Исполнитель); | |
КонецЦикла; | |
Иначе | |
Если ОбщегоНазначения.ЕстьРеквизитОбъекта("Исполнитель", МетаданныеПроцесса) Тогда | |
СозданныйПроцессОбъект.Исполнитель = ОпределитьПолнуюРоль(ОсновнойПредмет, СозданныйПроцессОбъект.Исполнитель); | |
КонецЕсли; | |
Если ОбщегоНазначения.ЕстьРеквизитОбъекта("КонтролерИсполнения", МетаданныеПроцесса) Тогда | |
СозданныйПроцессОбъект.КонтролерИсполнения = ОпределитьПолнуюРоль(ОсновнойПредмет, СозданныйПроцессОбъект.КонтролерИсполнения); | |
КонецЕсли; | |
Если ОбщегоНазначения.ЕстьРеквизитОбъекта("Контролер", МетаданныеПроцесса) Тогда | |
СозданныйПроцессОбъект.Контролер = ОпределитьПолнуюРоль(ОсновнойПредмет, СозданныйПроцессОбъект.Контролер); | |
КонецЕсли; | |
КонецЕсли; | |
КонецЕсли; | |
КонецПроцедуры | |
Функция ОпределитьОбъектАдресацииПоОсновномуПредмету(ОсновнойПредмет, ТипОбъектаАдресации) | |
Если ТипОбъектаАдресации.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ШаблоныВнутреннихДокументов")) Тогда | |
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОсновнойПредмет, "Шаблон"); | |
ИначеЕсли ТипОбъектаАдресации.ТипЗначения.СодержитТип(Тип("СправочникСсылка.Организации")) Тогда | |
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОсновнойПредмет, "Организация"); | |
Иначе | |
Возврат Неопределено; | |
КонецЕсли; | |
КонецФункции | |
Функция ОпределитьПолнуюРоль(ОсновнойПредмет, Исполнитель) | |
Если ТипЗнч(Исполнитель) <> Тип("СправочникСсылка.ПолныеРоли") Тогда | |
Возврат Исполнитель; | |
КонецЕсли; | |
РеквизитыАдресации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Исполнитель, | |
"ОсновнойОбъектАдресации,ДополнительныйОбъектАдресации,Владелец,Владелец.ИспользуетсяСОбъектамиАдресации, Владелец.ТипыДополнительногоОбъектаАдресации, Владелец.ТипыОсновногоОбъектаАдресации"); | |
Если РеквизитыАдресации.ВладелецИспользуетсяСОбъектамиАдресации = Ложь Тогда | |
Возврат Исполнитель; | |
КонецЕсли; | |
ОсновнойОбъектАдресации = РеквизитыАдресации.ОсновнойОбъектАдресации; | |
ДополнительныйОбъектАдресации = РеквизитыАдресации.ДополнительныйОбъектАдресации; | |
Если НЕ ЗначениеЗаполнено(ОсновнойОбъектАдресации) И ЗначениеЗаполнено(РеквизитыАдресации.ВладелецТипыОсновногоОбъектаАдресации) Тогда | |
ОсновнойОбъектАдресации = ОпределитьОбъектАдресацииПоОсновномуПредмету(ОсновнойПредмет, РеквизитыАдресации.ВладелецТипыОсновногоОбъектаАдресации); | |
КонецЕсли; | |
Если НЕ ЗначениеЗаполнено(ДополнительныйОбъектАдресации) И ЗначениеЗаполнено(РеквизитыАдресации.ВладелецТипыДополнительногоОбъектаАдресации) Тогда | |
ДополнительныйОбъектАдресации = ОпределитьОбъектАдресацииПоОсновномуПредмету(ОсновнойПредмет, РеквизитыАдресации.ВладелецТипыДополнительногоОбъектаАдресации); | |
КонецЕсли; | |
ПолнаяРоль = Справочники.ПолныеРоли.НайтиСоздатьПолнуюРоль(РеквизитыАдресации.Владелец, ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации); | |
Возврат ПолнаяРоль; | |
КонецФункции //ОпределитьПолнуюРоль | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment