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

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

1. Получить синхронизируемый документ.

Глобальный ИД синхронизируемого документа хранится в параметре RecordGUID. Чтобы получить синхронизируемый документ, используйте код:

 

  DocumentGUID = Process.Params.ValueByName("RecordGUID")

  Document: IEDocument.DCICustomDocument = DCIGetObjectByGlobalID(DocumentGUID)

  DocumentData = DCIGetObjectDictionary()

2. Подготовить список базовых реквизитов для синхронизации.

Структурированные данные рекомендуется передавать через список. В список добавляется элемент с названием «GUID», в который записывается глобальный ИД синхронизируемого документа. При необходимости добавьте в список другие базовые реквизиты документа:

 

  // Добавить к сообщению значения базовых реквизитов документа.

  DocumentData.Add("GUID"; DocumentGUID)

  DocumentData.Add("Name"; Document.SYSREQ_EDOC_NAME)

  DocumentData.Add("KindName";

    Document.Requisites(SYSREQ_EDOC_KIND).DisplayField.Value)

  DocumentData.Add("TypeCode"; Document.Info.CardType.Code)

// Определить расширение документа.

  Extension = Trim(DCIGetReferenceRecordRequisiteValue(SYSREF_EDITORS;

    SYSREQ_CODE; Document.SYSREQ_EDOC_EDITOR; ""; "ТипПриложения"; FALSE; TRUE))

  DocumentData.Add("Extension"; Extension)

  DocumentData.Add("LifeStageName"; Document.SYSREQ_EDOC_LIFE_STAGE_NAME)

  DocumentData.Add("Note"; Document.SYSREQ_EDOC_NOTE)

  DocumentData.Add("State"; Document.SYSREQ_STATE)

3. Заполнить список синхронизируемыми реквизитами.

В список добавьте реквизиты, которые будут синхронизироваться в другую систему помимо базовых. Это могут быть поля карточки, связанные документы или записи справочников и др. Например, если помимо базовых реквизитов требуется синхронизировать реквизит SpecNum, используйте код:

 

  DocumentData.Add("SpecNum";  Document.DCISpecNum)

4. Сохранить подготовленные данные в сообщении.

Выгрузите сформированный список элементов и добавьте его в сообщение:

 

  // Сохранить подготовленные данные в сообщении.

  DCIAttachDataToProcessMessage(ProcessMessage; DocumentData; "DocumentData") 

Выгрузите изменившиеся версии документов:

 

  // Выгрузить версии документа.

  DCIExportDocumentVersions(ProcessMessage; Document; Params)

Сохраните подписи, если их надо синхронизировать:

 

  // Сохранить подписи.

  DCIAttachSignaturesToProcessMessage(ProcessMessage; Params)

Пример

 

  // Получить Process и ProcessMessage.

  Process = DCIGetProcess()

  ProcessMessage = DCIGetProcessMessage()

  Params = DCIGetParams()

  

  // Получить синхронизируемый документ.

  DocumentGUID = Process.Params.ValueByName("RecordGUID")

  Document: IEDocument.DCICustomDocument = DCIGetObjectByGlobalID(DocumentGUID)

  DocumentData = DCIGetObjectDictionary()

 

  // Добавить к сообщению значения базовых реквизитов документа.

  DocumentData.Add("GUID"; DocumentGUID)

  DocumentData.Add("Name"; Document.SYSREQ_EDOC_NAME)

  DocumentData.Add("KindName";

    Document.Requisites(SYSREQ_EDOC_KIND).DisplayField.Value)

  DocumentData.Add("TypeCode"; Document.Info.CardType.Code)

// Определить расширение документа.

  Extension = Trim(DCIGetReferenceRecordRequisiteValue(SYSREF_EDITORS;

    SYSREQ_CODE; Document.SYSREQ_EDOC_EDITOR; ""; "ТипПриложения";

    FALSE; TRUE))

  DocumentData.Add("Extension"; Extension)

  DocumentData.Add("LifeStageName"; Document.SYSREQ_EDOC_LIFE_STAGE_NAME)

  DocumentData.Add("Note"; Document.SYSREQ_EDOC_NOTE)

  DocumentData.Add("State"; Document.SYSREQ_STATE)

 

  DCIWriteHandlerLog("DEBUG";

    "Подготовлен список базовых синхронизируемых данных";

    ProcessMessage; "ID документа: " & Document.ID)

 

// Заполнить синхронизируемые поля:

// 1. Заполнить реквизиты карточки.

DocumentData.Add("SpecNum"; Document.DCISpecNum)

// 2. Заполнить реквизиты детального раздела 3.

DDS3 = Document.DetailDataSet(3)

DDS3List = DCIGetObjectDictionary()

foreach DDSRow in DDS3

   // Заполнить список значений с данными строки детального раздела.

    RowList = DCIGetObjectDictionary()

    RowList.Add("НомерСтроки"; DDSRow.SYSREQ_LINE_NUMBER)

    if Assigned(DDSRow.DCIDateT3)

      RowList.Add("ДатаСоглашения"; DCILocalTimeToUTCStr(DDSRow.DCIDateT3))

    endif

    RowList.Add("НомерСоглашения"; DDSRow.DCIStringT3)

    DDS3List.Add("Строка_" & DDSRow.SYSREQ_LINE_NUMBER; RowList)

  endforeach

  DocumentData.Add("Соглашения"; DDS3List)

  DCIWriteHandlerLog("DEBUG";

    "Подготовлен список синхронизируемых данных";

    ProcessMessage;  "ID документа: " & Document.ID)

 

  // Сохранить подготовленные данные в сообщении.

  DCIAttachDataToProcessMessage(ProcessMessage; DocumentData; "DocumentData")

 

  DCIWriteHandlerLog("DEBUG"; "Карточка выгружена";

    ProcessMessage; "ID документа: " & Document.ID)

 

  // Выгрузить версии документа.

  DCIExportDocumentVersions(ProcessMessage; Document; Params)

 

  // Отправить поставленные подписи.

  DCIAttachSignaturesToProcessMessage(ProcessMessage; Params)

© Компания Directum, 2020 Сообщество пользователей Directum
.navbar > a:hover { background: #FFD73B; }