Обмен реквизитами карточек неформализованных документов через сервис 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 |