Интеграция с 1С:Документооборот: как за 5 шагов расширить стандартные возможности библиотеки

Библиотека интеграции с 1С:Документооборот легко встраивается в современные типовые решения на базе 1С и позволяет быстро создавать документы в 1С ДО на основании документов учетной системы, просматривать состояние, редактировать созданные карточки документов документооборота, создавать и отслеживать задачи и многое другое. В статье рассмотрим варианты расширения возможностей интеграции.

Недостатки стандартных настроек интеграции 1С:Документооборот

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

Рис. 1. Правила интеграции с 1С:Документооборот

Однако под этой простотой кроются и некоторые недостатки в виде отсутствия тех или иных возможностей описания правил, к которым мы так привыкли при работе, например, с КД 2.0.

Например, мы настроили правило для выгрузки документа «Поступление товаров» из БП в соответствующий вид внутреннего документа в документообороте стандартными средствами. Но дополнительно хотим указать в поле «Ответственный» создаваемого документа руководителя организации из ответственных лиц организации, которая попадает в создаваемую карточку.

С помощью стандартных настроек правил мы не можем полноценно обратиться ко всему контексту документооборота, а ограничены лишь некоторыми полями, которые предоставляет нам сервис DMDervice.

Если бы мы работали с правилами обмена данными с использованием КД 2, то использовали бы событие «Перед записью» в свойствах правил конвертации объекта, добавив в него выражение на встроенном языке, которое выполнится перед записью в базу приемник сформированного объекта. Так почему бы в настройках бесшовной интеграции не добавить подобную логику?

Расширение возможностей библиотеки интеграции с 1С:Документооборот на примере создания внутреннего документа

Основная идея заключается в том, чтобы в справочнике «Правила интеграции с 1С:Документооборот» на странице «Правила заполнения при отправке данных» помимо списка реквизитов внутреннего документа выводить специальное свойство «Исполняемый код (перед записью объекта)».

При настройке правил мы настроим заполнение этого свойства строкой — выражением, написанным в контексте 1С:Документооборота.

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

Шаг 1. Доработки на стороне 1С:Документооборот

Первым делом нам необходимо доработать объект «DMDocument» из XDTO пакета DM, описывающего модель данных документооборота для библиотеки интеграции: добавим в него свойство «BeforeWriting», укажем, что он имеет строковый тип и заполним прочие свойства.

Рис. 2. Добавление свойства «BeforeWriting» в пакет DM

Шаг 2. Доработки на стороне интегрируемой системы

Далее, для того чтобы в интегрируемой системе на форме настройки правил интеграции помимо основных реквизитов документа ДО вывелось и стало доступно для настройки наше свойство «BeforeWriting», внесем следующие доработки.

В модуле менеджера справочника «Правила интеграции с 1С:Документооборотом» в функцию «ПолучитьРеквизитыОбъектаДО» добавим описание нашего поля. Его нам будет удобно расположить в том же месте, где описываются поля состояний, так как это происходит для всех типов документов.

Рис. 3. Справочник «Правила интеграции с 1С:Документооборотом» — Модуль менеджера — Функция «ПолучитьРеквизитыОбъектаДО»

Кроме того, на стороне интегрируемой системы необходимо обеспечить логику передачи данных нашего скрипта в документооборот для последующей его обработки. Для этого доработаем форму обработки «ИнтеграцияС1Сдокументооборот»: «ВнутреннийДокумент», добавив на неё реквизит «ИсполняемыйКодДоЗаписи», а в процедуре «СоответствиеСвойствXDTOиРеквизитовФормыОбъектаДО» модуля менеджера справочника «Правила интеграции с 1С:Документооборотом» добавим описание соответствия добавленного на форму реквизита и поля пакета DM «BeforeWriting» (рис. 4, 5).

Рис. 4. Добавим реквизит «ИсполняемыйКодДоЗаписи» на форму обработки «ИнтеграцияС1Сдокументооборот». Обратите внимание, что элемент на форму выводить не нужно, значения в пользовательском интерфейсе он не имеет.
Рис. 5. Справочник «Правила интеграции с 1С Документооборотом» — Модуль менеджера — Функция «СоответствиеСвойствXDTOиРеквизитовФормыОбъектаДО»

Шаг 3. Доработка логики обработки запросов в 1С:Документооборот

Вернемся к ДО и доработаем логику обработки входящих пакетов данных так, чтобы полученный код в свойстве BeforeWriting можно было выполнить в нужный момент, а именно перед записью документа.

Запись заполненного документа при интеграции производится на стороне ДО в общем модуле «ОбработкаЗапросовXDTOДокументы». При этом для каждого типа документа: внутренние, входящие и исходящие в модуле присутствуют соответствующие функции «ЗаписатьДанныеВнутреннегоДокумента», «ЗаписатьДанныеВходящегоДокумента» и «ЗаписатьДанныеИсходящегоДокумента». В каждой из этих функций вставим вызов нашей процедуры в момент после открытия транзакции записи:

Рис. 6. Документооборот — Общий модуль «ОбработкаЗапросовXDTOДокументы», функция «ЗаписатьДанныеВнутреннегоДокумента»

А также в этом же модуле опишем саму процедуру «ВыполнитьДополнительнуюОбработкуДоЗаписи»:

Рис 7. Документооборот — Общий модуль «ОбработкаЗапросовXDTOДокументы» — объявление процедуры, которая будет выполнять передаваемый из интегрируемой системы скрипт

Шаг 4. Настройка правил интеграции

Итак, давайте посмотрим, что получилось. Применим изменения в обеих конфигурациях, в базе БП откроем справочник «Правила интеграции с 1С:Документооборотом» и откроем окно настройки правил (рис. 8).

Как видно на рисунке, в правилах интеграции для нас теперь доступно поле «Исполняемый код». С использованием выражения на встроенном языке, укажем его заполнение и передадим в него кусок кода, написанный в документообороте. Именно этот кусок будет отправляться в момент интеграции и исполняться перед записью документа.

Рис. 8. Настройка правила интеграции для заполнения скрипта

Шаг 5. Проверим результат выгрузки документа в ДО

Наконец, давайте посмотрим на результат:

Рис. 9. Создадим внутренний документ на основании учетного документа «Поступление товаров и услуг» в БП. Обратите внимание, что поле ответственный заполнилось по умолчанию при открытии формы нового документа. Запишем документ в базу ДО.
Рис. 10. После записи в ДО, вместе с данными документа по веб-сервису отправился наш скрипт, который выполнился в момент перед записью документа, переопределил ответственного и вернул нам новое рассчитанное значение обратно на форму интеграции.

Как еще можно расширить стандартные возможности подсистемы

Как видно, библиотека интеграции — далеко не мультифункциональный продукт, он заточен под узкий круг задач, но при этом прост в настройке и использовании. А если применить смекалку, то можно доработать её штатные возможности и заметно расширить функциональность.

В приведенном в статье примере показано расширение настроек интеграции для справочника «Внутренние документы», однако эту логику можно распространить для любых типов документов: как для внутренних, так и для входящих и исходящих. Кроме того, нетрудно догадаться, что данную концепцию можно ещё слегка расширить, добавив возможность выполнения скриптов после записи документа и даже при обработке заполнения документа.

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar