Для синхронизации документов используется вид межсистемного процесса с типом Синхронизация документа.
Если при создании записи справочника Виды межсистемных процессов заполнить поле Тип карточки, то в табличную часть записи добавляются сообщения SynchronizeDocumentChanges и SynchronizeDocumentDeletion с предзаполненными обработчиками на отправку и прием.
В коде обработчиков используются предопределенные переменные:
• | Process – для работы с экземпляром межсистемного процесса; |
• | ProcessMessage – для работы с экземпляром сообщения межсистемного процесса; |
• | Params – для работы с дополнительными параметрами обработчика. |
Чтобы получить предопределенные переменные, используйте код:
Process = DCIGetProcess()
ProcessMessage = DCIGetProcessMessage()
Params = DCIGetParams()
Описание интерфейсов, их свойств и методов см. в разделе «Объектная модель SDK».
Документы связанных систем сопоставляются по глобальному ИД. У вида межсистемного процесса есть предопределенный параметр RecordGUID, который хранит глобальный ИД изменяемого документа. При необходимости можно сопоставить документы с помощью ключевых реквизитов.
Вычисления обработчиков на удаление изменять не нужно.
В вычисления обработчиков на изменение необходимо добавить сохранение синхронизируемых реквизитов в список. Синхронизируемые данные реквизитов рекомендуется заносить в список в виде пар «Имя-Значение». Список создается функцией DCIGetObjectDictionary.
Когда список элементов сформирован, данные выгружаются и добавляются к сообщению с помощью функции DCIAttachDataToProcessMessage. В системе-приемнике парная функция DCIGetDataFromProcessMessage считывает данные из файла сообщения и преобразует их в список.
Для отправки изменившихся версий документа используется функция DCIExportDocumentVersions, для отправки подписей – функция DCIAttachSignaturesToProcessMessage.
Для совместимости необходимо использовать функции, указанные выше. Это поможет избежать доработки обработчиков при переходе на новую версию системы.
Для анализа ошибок рекомендуется записывать отладочную информацию в лог-файл обработчиков.
© Компания Directum, 2020 | Сообщество пользователей Directum |