Содержание:
1. Обмен данными в 1С с технической точки зрения
2. Отладка выражений на встроенном языке 1С
Если верить популярности запросов, то самая встречающаяся проблема, с которой сталкиваются специалисты при таком обмене, — это возвращение изменений в исходный документ.
1. Обмен данными в 1С с технической точки зрения
Для начала стоит сразу объяснить, как обмен работает с технической точки зрения.
В конфигурации (допустим 1С:УХ) создается документ, у которого настроено правило интеграции, при нажатии на вкладку документооборот создается иллюзия того, что вы открываете базу Документооборота. На самом деле вы просто авторизуетесь в документообороте и забираете данные, которые раскладываются в форме 1С:УХ повторяющие форму ДО. Так проходит односторонний обмен. Вы можете создавать и обновлять документы ДО из вашей конфигурации. Но как проходит возврат данных в 1С:УХ, ведь мы даже не указываем в ДО адрес нашей второй конфигурации? Все очень просто, в ДО есть регистр сведений, куда он записывает изменения для выгрузки в другие конфигурации, проходит эта запись благодаря регламентному заданию «Формирование сообщений обмена для интегрированных систем». В то же время в УХ есть регламентное задание «Интеграция с 1С:Документооборотом - Выполнить обмен данными» которое авторизуется в ДО и проверяет этот регистр. Если там есть сообщения, то он обновляет документы.
Исходя из такой схемы работы, на тестовом контуре чаще всего ошибка заключается в том, что при копировании базы Документооборота (а чаще всего это просто копии) базы блокируют все регламентные задания в 1С, связанные с внешним миром. Чтобы не нарушать работу основной базы, и для того, чтобы обмен работал сам, необходимо разрешить использование регламентных заданий в 1С. Как только вы откроете обработку «фоновые и регламентные задания в 1С» вы увидите соответствующую кнопку. Внимание: проверьте есть ли в этой конфигурации настроенные синхронизации и выключены ли такие регламентные задания как оповещения, если синхронизации есть их стоит удалить, а регламентные задания выключить.
2. Отладка выражений на встроенном языке 1С
Порой при бесшовной интеграции документооборота приходится писать код для подстановки тех или иных значений. Приходится писать их в режиме предприятия: ни подсказок, ни автоподстановки, ни отладки там нет.
Но не все так плохо - можно подсмотреть в отладке 1С на его исполнение. Для этого в своей второй конфигурации (не ДО) необходимо найти Общий модуль «ОбщегоНазначения» а в нем функцию «ВыполнитьВБезопасномРежиме». Именно в этой функции происходит выполнение нашего кода. Если поставить, например, на возврате точку остановы, мы сможем посмотреть, какие параметры пришли и какой код выполняется. Если продвинемся на пару шагов вперед, то увидим, какой результат вышел в итоге. К тому же не запрещается на время отладки в 1С размещать что-то «подсказывающее»: где конкретно процесс оборвался, в случае сложных логических цепочек можно разместить, например, функцию ЗаписьЖурналаРегистрации.
Реквизит, который я указал не заполняются – это очень распространенная ошибка. Но в 90% случаев решается она очень просто: у реквизита, который не заполняется, необходимо проставить галку «Заполнять из данных заполнения». Если это не помогает, то тут универсального ответа нет, нужно проверять тип заполнения. Для теста можно проверить заполнение из другого реквизита и т.д.
Как передать ссылку через встроенный язык 1С?
Вот тут начинаются сложности. При передаче результата достаточно его просто вписать, но если результат ссылочный, то результатов три:
Параметры.Результат - необходимо заполнить. Можно заполнить наименованием по ссылке. Если будет пустой, то все другие результаты не сохранятся.
Параметры.РезультатID - сама ссылка на объект. Достать ее будет сложной задачей.
Параметры.РезультатТип – тип ссылки, передается строкой из XDTO – DM.
Как передаются ссылки в целом?
Всегда перед настройкой бесшовной интеграцией документооборота делайте простую синхронизацию, чтобы все элементы справочников были максимально одинаковыми, за исключением конечно нестандартных. Но бесшовная интеграция довольно универсальная в этом плане, и если необходимо что-то синхронизировать, то достаточно сделать так, чтобы наименование было одно и то же, тогда элементы не будут дублироваться, а подставляться будут те, что есть в системе.
Как включить свой реквизит в бесшовную интеграцию
1. На стороне ИС
1. В модуле менеджера справочника Правила интеграции прописать новый реквизит в метод ПолучитьРеквизитыОбъектаДО
2. При необходимости работать с данным реквизитом интерактивно на стороне ИС нужно вынести его на форму и обеспечить его заполнение в методе Справочники.ПравилаИнтеграцииС1СДокументооборотом. СоответствиеСвойствXDTOиРеквизитовФормыОбъектаДО или в процедуре ПрочитатьОбъектВФорму в форме документа БИД.
2. На стороне ДО
1. Добавить реквизит в XDTO пакет DM в DMDocument или в DM<...>Document
2. При необходимости добавить реквизит в метод ОбработкаЗапросовXDTO. СоответствиеСвойствXDTOРеквизитамПоиска
3. В ОМ ОбработкаЗапросовXDTOДокументы прописать заполнение и получение данного реквизита из объекта XDTO в методы ПолучитьДанные<...>Документа, ЗаполнитьДанные<...>Документа
Специалист компании ООО «Кодерлайн»
Барабанов Роман