Мы используем cookies для улучшения работы сайта
Используем cookies для улучшения сайта

Настройка бесшовной интеграции с 1С:Документооборот: создаем интерфейс "единого окна"

Оглавление

Интеграция с 1С Документооборот: стандартная реализация

Для тех, кто ещё не сталкивался с библиотекой интеграции с 1С: Документооборот - это подсистема, внедряемая в типовые прикладные решения на базе 1С (ERP, БП, УТ и пр.) и позволяющая бесшовно интегрировать эти решения с 1С:ДО, работать пользователю в конфигурации, взаимодействуя с системой документооборота напрямую, в режиме единого окна.
При этом, в интегрируемых документах системы появляется ссылка "Документооборот", перейдя по которой можно создать или посмотреть / изменить соответствующий документ в документообороте (Рис. 1)
Рис. 1 Просмотр документа
Данное интеграционное решение очень удобно для оперативной работы с 1С: Документооборот, так как пользователю не нужно "прыгать" между двумя программами или ждать, когда созданный документ мигрирует средствами стандартных планов обмена (или не мигрирует по непонятной причине): все происходит "на лету" и результат виден сразу.

Так в чем же проблема?

А проблема в том, что зачастую, эти удобства заканчиваются, когда в 1С:ДО появляются все новые и новые виды документов, внешний вид и состав реквизитов каждого из которых значительно отличаются друг от друга. В библиотеке интеграции предусмотрена лишь одна форма для интерпретации документа ДО и её внешний вид и состав никак не зависит от настроек соответствующего документа в ДО (Рис. 2,3,4)
Рис. 2 Форма внутреннего документа в 1С Документооборот
бесшовная интеграция с 1с документооборот erp
Рис.3 Интегрированная форма в 1С ЕРП, закладка "Реквизиты"
Рис.4 Интегрированная форма в 1С ЕРП, закладка "Свойства"

Какие есть варианты решения?

ВАРИАНТ 1

Бесшовная интеграция 1С Документооборот с доработкой стандартной библиотеки

Для того, что бы улучшить восприятие пользователя, и доработать стандартное поведение формы интеграции напрашивается решение: доработать подсистему интеграции на стороне прикладного решения так, чтобы для каждого вида документа была предусмотрена отдельная форма со своими соответствующими настройками.
Однако данный вариант имеет ряд значительных недостатков:
Во - первых, это не гибкое решение, при появлении новых видов документов в ДО, придется каждый раз обращаться в конфигуратор и создавать новую форму интеграции;
Во - вторых, это значительные изменения самой библиотеки, что в дальнейшем сильно скажется на трудоёмкости проведения процедуры обновления;
ВАРИАНТ 2

Реализовать отображение внутренних документов программы 1С:Документооборот в интегрируемой системе через веб-интерфейс

В 1С есть две интересные возможности: работа с программой в веб - интерфейсе и поле html документа для отображения веб - страниц.

Отсюда второе решение, о котором и пойдёт речь в данной статье: почему бы не отобразить документ системы 1С Документооборот прямо в окне интегрируемой конфигурации?
Забегая вперед, давайте посмотрим на получившийся результат на примере бесшовной интеграции 1С:Документооборот с 1С:ERP (Рис. 5)
настройка бесшовной интеграции 1с ерп и документооборот
Рис.5 Документ 1C:ДО, открытый в 1С:ERP через веб-клиент

Принцип работы

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

Инструкция по доработке

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

Добавляем регистр сведений "ВнутренниеДокументыДляОткрытияИзИС", который будет хранить ссылки на документы, открываемые пользователем на стороне ИС. Регистр независимый, непериодический. Структура регистра:
где:
ВнутреннийДокумент - СправочникСсылка.ВнутренниеДокументы
Пользователь - СправочникСсылка.Пользователи
В модуле приложения объявляем глобальную переменную:
В процедуре "ПередНачаломРаботыСистемы", если ПараметрЗапуска = "OpenWithWeb", то нашей глобальной переменной присваиваем значение истина и устанавливаем режим открытия окна ВстроенноеРабочееМесто:
В процедуре ПриНачалеРаботыСистемы подключаем обработчик ожидания
Данный обработчик ожидания мониторит регистр сведений "ВнутренниеДокументыДляОткрытияИзИС". После успешного открытия документа, запись регистра сведений очищается:
В форме элемента справочника "Внутренние документы" анализируем значение глобальной переменной "ОткрытВебКлиентВ_ИС" в процедуре "ПриОткрытии". Если значение Истина, то в документе скрываем кнопку закрытия, скрываем кнопку "Записать и закрыть", скрываем заголовок:
делается это для того, чтобы в ИС пользователь не смог закрыть документ и чтобы заголовок документа не отображался два раза в ИС (описание доработок на стороне ИС будет ниже).
В XDTO пакете "DM" создаем два новых типа объекта: "DMRetrieveRequest_" и "DMRetrieveRespons_". Пакет "DMRetrieveRequest_" содержит идентификатор внутреннего документа Документооборота, который открывается на стороне ИС:
Пакет "DMRetrieveRespons" пустой.
В общий модуль "ОбработкаЗапросовXDTO" добавляем ветку для обработки пакета "DMRetrieveRequest_" в функцию "ОбработатьУниверсальноеСообщение":
Функция "ЗаписатьВРегистрСведенийДляИС"производит запись внутреннего документа, который пользователь открывает на стороне ИС:
и возвращает пакет "DMRetrieveRespons" в случае успешной записи или пакет "DMError" в случае возникновения какой либо ошибки

Доработки на стороне интегрируемой системы, на примере конфигурации 1С: ERP 2.4:

Добавляем общую форму "ВнутреннийДокументДО_ИС", на которую выносим поле HTML документа. При открытии формы передаем в это поле ссылку для открытия 1С Документооборот с параметром "OpenWithWeb"
В персональные настройки пользователя добавляем настройку "Отображать документы ДО через веб-интерфейс" (как это сделать, здесь описывать не будем):
Если у пользователя эта настройка установлена, то при открытии программы открывается общая форма, в которой в свою очередь, в поле HTML документа открывается окно 1С Документооборот. Реализовано через доработку модуля приложения:
Объявляется глобальная переменная "ФормаВебКлиентаДО", которая будет хранить общую форму ФормаВебКлиентаДО_ИС с открытым Документооборотом.
В обработке "ИнтеграцияС1СДокументооборот" в формах "Задачи" и "Задачи мне" в событии открытия документа вызывается процедура "ОткрытьОбъект" общего модуля "ИнтеграцияС1СДокументооборотКлиент". Ее дорабатываем:
Процедура обработки оповещения общей формы выглядит так:
Теперь, когда мы хотим открыть документ программы 1С:Документооборот в интегрируемой конфигурации, у нас открывается веб страница с открытой программой 1С:Документооборот, в которой уже открыт документ. Работая с документом, мы работаем не в интегрируемой системе, а непосредственно в 1С:Документооборот, не используя бесшовную интеграцию.
Желаем вам быстрой и удобной интеграции 1C:Документооборот!
Можем помочь

У вас есть задачи по бесшовной интеграции 1С:ДО? Напишите нам.

Заполните анкету, мы свяжемся с вами в ближайшее время