Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Щелкните для увеличения изображения

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
.navbar > a:hover { background: #FFD73B; }