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

Обмен реквизитами карточек неформализованных документов через сервис Synerdocs происходит следующим образом:

при выгрузке документа из системы обмена формируется XML-файл со сведениями о реквизитах документа. Содержимое XML-файла хранится в качестве текстового реквизита в карточке справочника Сообщения систем обмена;
при загрузке документа в систему DIRECTUM создается карточка документа, реквизиты которой заполняются из XML-файла. Набор полей зависит от вида документа.

Чтобы настроить обмен реквизитами карточек неформализованных документов:

1.Создайте новую запись в справочнике Соответствие видов документов DIRECTUM и систем обмена, если она не была создана ранее.
2.Для исходящих документов настройте механизм генерации XML-файла с дополнительными реквизитами карточек документов:
откройте компоненту Функции ISBL и в текст функции DISICreateXMLFromTypeCard, которая формирует XML-файл, для каждого типа документа (ТКЭД) добавьте фрагмент кода:

 

DocumentНаименованиеТКЭДCardFields = CArrayElement(ArrayOf(

ArrayOf("Наименование реквизита в XML"; "Путь до узла

  (Пример://РеквизитыДокумента"); Наименование реквизита в системе);

ArrayOf("Наименование реквизита в XML"; "Путь до узла

  (Пример://РеквизитыДокумента"); Наименование реквизита в системе)))

DocumentCardTypeFieldsList.Add(КодТипаДокументаСОД; DocumentНаименованиеТКЭДCardFields)

 

для каждого ТКЭД создайте отдельный массив. В массив добавьте все обязательные реквизиты ТКЭД, в том числе Вид.

Подробнее Пример для ТКЭД «Договорные документы»

DocumentContractsCardFields = CArrayElement(ArrayOf(

  ArrayOf("КатегорияДоговора"; "//РеквизитыДокумента"; "КатегорияДоговора");

  ArrayOf("НашаОрганизация"; "//РеквизитыДокумента"; "OurOrg");

  ArrayOf("Подразделение"; "//РеквизитыДокумента"; "Подразделение");

  ArrayOf("ОтветственныйЗаДоговор"; "//РеквизитыДокумента"; "Работник");

  ArrayOf("Вид"; "//РеквизитыДокумента"; "ISBEDocKind");

  ArrayOf("Наименование"; "//РеквизитыДокумента"; "ISBEDocName");

  ArrayOf("КонтрАгент"; "//РеквизитыДокумента"; "Организация");

  ArrayOf("ПредметДоговора"; "//РеквизитыДокумента"; "Дополнение2")))

DocumentCardTypeFieldsList.Add('ДГД'; DocumentContractsCardFields)

 

3.Для входящих документов настройте заполнение полей из XML-файла:
для каждого ТКЭД скопируйте фрагмент кода в текст функции DISIUpdateDocumentTypeCard и заполните нужными значениями:

 

DocumentНаименованиеТКЭДCardFieldsValues = CreateStringList()

DocumentНаименованиеТКЭДCardFieldsValues.Delimiter = '|'

DocumentНаименованиеТКЭДCardFieldsValues.DelimitedText = 'Наименование атрибута

  в XML;Путь до атрибута (Пример://РеквизитыДокумента[@ТипКарточки]);

  Наименование реквизита в базе|...'

DocumentНаименованиеТКЭДCardFields = CreateList()

foreach ElementStr in DocumentНаименованиеТКЭДCardFieldsValues

DocumentНаименованиеТКЭДCardFields.Add(SubString(ElementStr; ';'; 3);

  Format('%s;%s'; ArrayOf(SubString(ElementStr; ';'; 2); SubString(ElementStr;

  ';'; 1))))

endforeach

DocumentCardTypeFieldsList.Add('НаименованиеТКЭД';

  DocumentНаименованиеТКЭДCardFields)

 

укажите все обязательные реквизиты либо заполните для них значения по умолчанию:

 

RequiredНаименованиеТКЭДReqsStringList = CreateStringList()

RequiredНаименованиеТКЭДReqsStringList.Delimiter = '|' 

RequiredНаименованиеТКЭДReqsStringList.DelimitedText = 'Имя реквизита в системе;Значение по умолчанию|...'    

RequiredНаименованиеТКЭДReqsList = CreateList()

foreach Req in RequiredНаименованиеТКЭДReqsStringList

RequiredНаименованиеТКЭДReqsList.Add(SubString(Req; ';'; 1); SubString(Req; ';'; 2))

endforeach

RequiredReqsList.Add('НаименованиеТКЭД'; RequiredНаименованиеТКЭДReqsList)

Наименование атрибута в XML-файле, путь до атрибута и наименование реквизита должны совпадать с тем, которые были созданы в функции DISICreateXMLFromTypeCard.

Подробнее Пример для ТКЭД «Договорные документы»

DocumentContractsCardFieldsValues = CreateStringList()

DocumentContractsCardFieldsValues.Delimiter = '|'

DocumentContractsCardFieldsValues.DelimitedText = 'КатегорияДоговора;//РеквизитыДокумента[@ТипКарточки];КатегорияДоговора|Наименование;/Документ;ISBEDocName|ПредметДоговора;//РеквизитыДокумента[@ТипКарточки];Дополнение2|КонтрАгент;//РеквизитыДокумента[@ТипКарточки];Организация|Дата;/Документ;Date'

DocumentContractsCardFields = CreateList()  

foreach ElementStr in DocumentContractsCardFieldsValues

  DocumentContractsCardFields.Add(SubString(ElementStr; ';'; 3); Format('%s;%s'; ArrayOf(SubString(ElementStr; ';'; 2); SubString(ElementStr; ';'; 1))))    

endforeach

DocumentCardTypeFieldsList.Add('ДГД'; DocumentContractsCardFields)

 

некоторые реквизиты для разных контрагентов могут не совпадать. Чтобы добавить значения для обязательных полей, добавьте фрагмент кода в текст функции DISIUpdateDocumentTypeCard и заполните нужными значениями:

 

RequiredReqsList = CreateList()

// Пример ТКЭД 'Договорные документы'

RequiredContractReqsStringList = CreateStringList()

RequiredContractReqsStringList.Delimiter = '|' 

RequiredContractReqsStringList.DelimitedText = 'КатегорияДоговора;Д000004|Дополнение5;007'    

RequiredContractReqsList = CreateList()

4.Включите генерацию XML-файла и автозаполнение карточки документа. Для этого в настройках системы, в группе «Обмен с контрагентами» установите переключатель Синхронизировать карточки документов.
© Компания DIRECTUM, 2018 Сообщество пользователей DIRECTUM
.navbar > a:hover { background: #FFD73B; }