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

Однако под этой простотой кроются и некоторые недостатки в виде отсутствия тех или иных возможностей описания правил, к которым мы так привыкли при работе, например, с КД 2.0.
Например, мы настроили правило для выгрузки документа «Поступление товаров» из БП в соответствующий вид внутреннего документа в документообороте стандартными средствами. Но дополнительно хотим указать в поле «Ответственный» создаваемого документа руководителя организации из ответственных лиц организации, которая попадает в создаваемую карточку.
С помощью стандартных настроек правил мы не можем полноценно обратиться ко всему контексту документооборота, а ограничены лишь некоторыми полями, которые предоставляет нам сервис DMDervice.
Если бы мы работали с правилами обмена данными с использованием КД 2, то использовали бы событие «Перед записью» в свойствах правил конвертации объекта, добавив в него выражение на встроенном языке, которое выполнится перед записью в базу приемник сформированного объекта. Так почему бы в настройках бесшовной интеграции не добавить подобную логику?
Расширение возможностей библиотеки интеграции с 1С:Документооборот на примере создания внутреннего документа
Основная идея заключается в том, чтобы в справочнике «Правила интеграции с 1С:Документооборот» на странице «Правила заполнения при отправке данных» помимо списка реквизитов внутреннего документа выводить специальное свойство «Исполняемый код (перед записью объекта)».
При настройке правил мы настроим заполнение этого свойства строкой — выражением, написанным в контексте 1С:Документооборота.
При обработке результата обмена на стороне ДО в процедуре создания внутреннего документа на основании данных учетной системы, сформированных по этим правилам, непосредственно перед записью документа выполним этот код методом «Выполнить». И уже в процессе выполнения строки кода получим результат, дополнив им поле «Ответственный» записываемой карточки документа.
Шаг 1. Доработки на стороне 1С:Документооборот
Первым делом нам необходимо доработать объект «DMDocument» из XDTO пакета DM, описывающего модель данных документооборота для библиотеки интеграции: добавим в него свойство «BeforeWriting», укажем, что он имеет строковый тип и заполним прочие свойства.

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

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


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

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

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

Шаг 5. Проверим результат выгрузки документа в ДО
Наконец, давайте посмотрим на результат:


Как еще можно расширить стандартные возможности подсистемы
Как видно, библиотека интеграции — далеко не мультифункциональный продукт, он заточен под узкий круг задач, но при этом прост в настройке и использовании. А если применить смекалку, то можно доработать её штатные возможности и заметно расширить функциональность.
В приведенном в статье примере показано расширение настроек интеграции для справочника «Внутренние документы», однако эту логику можно распространить для любых типов документов: как для внутренних, так и для входящих и исходящих. Кроме того, нетрудно догадаться, что данную концепцию можно ещё слегка расширить, добавив возможность выполнения скриптов после записи документа и даже при обработке заполнения документа.
Comments
So empty here ... leave a comment!