Имя: Пароль:
1C
1С v8
Документооборот DMservice - возможность изменения реквизитов БП Согласования
0 dimitory
 
20.10.18
19:12
Добрый день!
Есть ли возможность, используя DMService документооборота, составить запрос на старт БП Согласования с определением значения дополнительного реквизита?
Реквизит был добавлен в Документообороте для БП Согласования (ЗапросПравИзIDM булев).

на данный момент запускается все подобным образом:

Функция ЗапуститьБизнесПроцесс(Прокси, Объект) Экспорт
    
    Запрос = СоздатьОбъект(Прокси, "DMLaunchBusinessProcessRequest");
    Запрос.businessProcess = Объект;
    
    Ответ = ВыполнитьЗапрос(Прокси, Запрос);
    ПроверитьВозвратВебСервиса(Прокси, Ответ);
    
    Возврат Ответ;
    
КонецФункции


Функция ПодготовитьШапкуБизнесПроцесса(Прокси, Тип, Форма, Исключения = "") Экспорт
    
    Объект = СоздатьОбъект(Прокси, Тип);
    
    Объект.name = Форма.Наименование;
    Объект.objectId = СоздатьОбъект(Прокси, "DMObjectID");
    Объект.objectId.id = Форма.ID;
    Объект.objectId.type = Тип;
    
    //Общая шапка бизнес-процессов
    ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, Форма, "Автор", Объект.author, "DMUser");
    ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, Форма, "Состояние", Объект.state, "DMBusinessProcessState");
    
    Если Форма.ДоступнаМультипредметность Тогда
        ЗаполнитьПроцессПредметамиИзФормы(Прокси, Форма.Предметы, Объект);
    Иначе
        ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, Форма, "Предмет", Объект.target, "DMObject");
    КонецЕсли;
    
    Если Найти(Исключения, "Важность") = 0 Тогда
        ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, Форма, "Важность", Объект.importance, "DMBusinessProcessImportance");
    КонецЕсли;
    
    Если Найти(Исключения, "Шаблон") = 0 Тогда
        ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, Форма, "Шаблон", Объект.businessProcessTemplate, Тип + "Template");
    КонецЕсли;
    
    Объект.beginDate = Форма.ДатаНачала;
    
    Если Найти(Исключения,"Стартован") = 0 Тогда
        Объект.started = Форма.Стартован;
    КонецЕсли;
    Если Найти(Исключения,"Завершен") = 0 Тогда
        Объект.completed = Форма.Завершен;
    КонецЕсли;
    Если Найти(Исключения,"Описание") = 0 Тогда
        Объект.description = Форма.Описание;
    КонецЕсли;
    Если Найти(Исключения,"Срок") = 0 Тогда
        Объект.dueDate = Форма.Срок;
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Форма.ГлавнаяЗадачаID) Тогда
        Ответ = ПолучитьОбъект(Прокси, Форма.ГлавнаяЗадачаТип, Форма.ГлавнаяЗадачаID);
        ГлавнаяЗадачаПриемник = СоздатьОбъект(Прокси,"DMBusinessProcessTask");
        ЗаполнитьЗначенияСвойствXDTO(Прокси,ГлавнаяЗадачаПриемник,Ответ.Objects[0]);
        Объект.parentTask = ГлавнаяЗадачаПриемник;
    КонецЕсли;

    Возврат Объект;
    
КонецФункции

Функция ПодготовитьБизнесПроцесс(Прокси, ЭтаФорма)
        
    ОбъектXDTO = ПодготовитьШапкуБизнесПроцесса(
        Прокси, "DMBusinessProcessApproval", ЭтаФорма, "Срок");
    
    //специфика Исполнения
    ОбъектXDTO.durationDays = 0;
    ОбъектXDTO.durationHours = 0;
    
    ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, ЭтаФорма,
        "ВариантСогласования", ОбъектXDTO.approvalType, "DMApprovalType");
    Исполнители = ЭтаФорма.Исполнители;    
    //исполнители
    Для Каждого Строка Из Исполнители Цикл
        
        Исполнитель = СоздатьОбъект(Прокси, "DMBusinessProcessApprovalParticipant");
                
        Если Строка.ИсполнительТип = "DMUser" Тогда
            ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, Строка,
                "Исполнитель", Исполнитель.user, "DMUser");
        Иначе
            ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, Строка,
                "Исполнитель", Исполнитель.role, "DMBusinessProcessExecutorRole");
            
            ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, Строка,
                "ОсновнойОбъектАдресации", Исполнитель.mainAddressingObject, "DMMainAddressingObject");
            
            ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, Строка,
                "ДополнительныйОбъектАдресации", Исполнитель.secondaryAddressingObject, "DMSecondaryAddressingObject");
        КонецЕсли;
        
        ОбъектXDTO.performers.Добавить(Исполнитель);
        
        ЗаполнитьОбъектXDTOИзОбъектногоРеквизита(Прокси, Строка,
            "ПорядокСогласования", Исполнитель.approvalOrder, "DMApprovalOrder", Истина);
            
    КонецЦикла;
    
    Возврат ОбъектXDTO;
    
КонецФункции
1 dimitory
 
20.10.18
19:19
Или же другой есть вариант Быстро проходить по большому количеству БП Согласования в Документообороте с целью сбора информации - от какого источника они были запущены?