1. Получить синхронизируемую запись.
Глобальный ИД синхронизируемой записи хранится в параметре процесса RecordGUID. Чтобы получить к ней доступ, используйте код:
// Получить синхронизируемую запись.
RecordGUID = Process.Params.ValueByName("RecordGUID")
Record : IReference.RRCAssignments = DCIGetObjectByGlobalID(RecordGUID)
В карточке вида межсистемного процесса в поле Тип справочника указан справочник Поручения, поэтому тип справочника IReference.RRCAssignments автоматически подставляется в вычисления.
2. Подготовить список для синхронизируемых данных.
Структурированные данные рекомендуется передавать через список. В список добавляется элемент с названием «GUID», в который записывается глобальный ИД синхронизируемой записи:
// Подготовить список для синхронизируемых данных.
MainRecordData = DCIGetObjectDictionary()
MainRecordData.Add("GUID"; RecordGUID)
3. Заполнить список синхронизируемыми данными.
В список добавьте данные, которые будут синхронизироваться в другую систему. Например:
MainRecordData.Add("Наименование"; Record.SYSREQ_NAME)
Если в справочнике есть табличная часть, то такие реквизиты записываются в отдельный список, который добавляется в список MainRecordData.
4. Сохранить подготовленные данные в сообщении.
Выгрузите сформированный список элементов и добавьте его в сообщение:
// Сохранить подготовленные данные в сообщении.
DCIAttachDataToProcessMessage(ProcessMessage; MainRecordData; "MainRecord")
Постановка задачи Настроена синхронизация справочника Поручения. Необходимо добавить к сообщению значения синхронизируемых реквизитов. Программный код
// Получить Process и ProcessMessage Process = DCIGetProcess() ProcessMessage = DCIGetProcessMessage() DCIWriteHandlerLog("DEBUG"; "Начало обработчика отправки"; ProcessMessage)
// Получить синхронизируемую запись RecordGUID = Process.Params.ValueByName("RecordGUID") Record : IReference.RRCAssignments = DCIGetObjectByGlobalID(RecordGUID)
// Сформировать данные для передачи. MainRecordData = DCIGetObjectDictionary() MainRecordData.Add("GUID"; RecordGUID)
// Заполнить список синхронизируемыми данными MainRecordData.Add("Text"; Assignment.Текст) MainRecordData.Add("Author"; GetEmployeeNameByCode(Assignment.Employee)) MainRecordData.Add("Deadline"; LocalTimeToUTC(Assignment.Дата2)) MainRecordData.Add("ControlType"; Assignment.ControlType) MainRecordData.Add("Supervisor"; GetEmployeeNameByCode(Assignment.Работник))
// Создать и заполнить список полями табличной части. PerformersData = DCIGetObjectDictionary() PerformersDS = Assignment.DetailDataSet(1) foreach Performer in PerformersDS // Создать IList для каждой строки табличной части. PerformerData = CreateList() PerformerData.Add("Performer"; GetEmployeeNameByCode(Performer.PerformerT)) PerformerData.Add("Department"; GetRequisiteValueAsString('ПОД'; Performer.ПодразделениеТ; SYSREQ_NAME)) PerformerData.Add("Text"; Performer.Доп2Т) PerformerData.Add("Deadline"; LocalTimeToUTC(Performer.Дата2Т)) PerformersData.Add("Performer" & PerformersData.Count; PerformerData) endforeach DCIWriteHandlerLog("DEBUG"; "Выгрузка реквизитов записи справочника"; ProcessMessage)
// Добавить список с реквизитами табличной части к списку с реквизитами карточки. MainRecordData.Add("Performers"; PerformersData)
// Сохранить подготовленные данные в сообщении. DCIAttachDataToProcessMessage(ProcessMessage; MainRecordData; "MainRecord") DCIWriteHandlerLog("DEBUG"; "Метаданные добавлены к сообщению"; ProcessMessage) DCIWriteHandlerLog("DEBUG"; "Завершение обработчика отправки"; ProcessMessage) |
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |