Основная идея заключается в следующем: при печати документа в бухгалтерской базе (счет-фактура выданный, акт сверки взаиморасчетов, накладная, акт об оказании услуг и т.д.) в шапку печатной формы выводить штрихкод, по которому данный документ будет однозначно идентифицирован в базе документооборота. Файл скана (картинка JPG или PDF) прикрепляется к элементу справочника "Внутренние документы", штрихкод которого совпадает со штрихкодом печатной формы. Учитывая, что бухгалтерская база на поддержке, да к тому же еще и не одна - реализовано без доработки конфигурации бухгалтерии. В конфигурации документооборота изменения внесены, но они не столь значительны (тем более эта конфигурация к обновлениям не столь критична).
Реализовано это следующим образом:
- В 1С "Бухгалтерии" (применительно к конфигурации 3.0) был создан узел плана обмена "Полный", благодаря чему появляется возможность отслеживать изменения документов.
- В ПВХ "Дополнительные свойства" был добавлен реквизит "Штрихкод", тип строка, длина - 13 (стандарт EAN-13).
Очевидно, что необходимо синхронизировать штрихкоды в Бухгалтерии и в Документообороте. Было принято решение действовать по следующей схеме: документы из Бухгалтерии выгружаются в Документооборот. Там создаются "карточки" (элементы справочника "Внутренние документы"). Доработки конфигурации Документооборот:
- Была добавлена новая подписка на событие "Перед записью", с помощью которой в регистре сведений "Штрихкоды" появляется необходимая запись (элемент-владелец + штрихкод).
- После выгрузки из Бухгалтерии узел плана обмена "Полный" принудительно очищается (в целях препятствия росту объема базы).
- Был создан новый план обмена "ШтрихкодыКВыгрузке", в состав которого включен регистр сведений "Штрихкоды". Авторегистрация отключена. План имеет реквизит "Организация".
- Вторая подписка на событие регистрировала в узле плана "ШтрихкодыКВыгрузке" новый штрихкод.
- Также в конфигурацию встроена простая обработка для чтения изменений указанного плана и очистки регистрации.
Обработка выгрузки документов из бухгалтерии после завершения непосредственно выгрузки подключалась к базе документооборота, запускала обработку считывания новых штрихкодов, получала их в виде таблицы значений и полученные штрихкоды прикрепляла в виде дополнительного реквизита к соответствующему документу.
Синхронизация документа в бухгалтерии и его карточки в документообороте реализована следующим образом. Учитывая, что пространство обмена включает в себя несколько бухгалтерских баз - карточки в документообороте формируются со своим, уникальным ГУИДом с помощью получения новой ссылки. Хотя 1С и утверждает, что ГУИД объекта уникален в пределах вида объекта метаданных, однако никакой гарантии, что в двух разных бухгалтерских базах не произойдет выгрузки документов с одинаковым ГУИДОМ - нет. Конечно, вероятность очень мала, но при больших объемах документооборота она возрастает... В конфигурации документооборота в справочнике "Внутренние документы" добавлен новый реквизит "УидИсточника", куда в процессе выгрузки записывается исходный идентификатор документа. Поля поиска - организация + этот реквизит. В процессе получения штрихкода при их загрузке в бухгалтерию анализируется вид документа и в рамках вида объекта метаданных производится поиск по уникальному идентификатору. Организация нужна для того, чтобы при загрузке считать изменения только той организации, объекты которой были выгружены из текущей бухгалтерской базы.
Итак:
- В бухгалтерии при создании или изменении документа происходит его регистрация в плане "Полный".
- С помощью регламентного задания запускается обработка выгрузки. Правила обмена встроены в макет обработки в виде двоичных данных, что позволяет не хранить их отдельно в локальной сети. Обработка выгружает документы, зарегистрированные к изменению, в документообороте происходит создание карточек и формирование штрихкодов. Выгрузка сделана с помощью COM. Нюанс: чтобы COM работал на 64-х битном сервере, пришлось использовать COM+оснастку для объекта компоненты COM 1C. Статьи, как это сделать - есть в просторах интернета.
- Обработка выгрузки считывает в документообороте вновь сформированные штрихкоды с отбором по выгружаемой организации (план обмена штрихкодов имеет реквизит "организация"), после чего регистрация штрихкодов очищается.
- Производится поиск исходных документов и запись в регистр сведений дополнительных свойств штрихкода (документ-владелец + штрихкод). Узел плана "Полный" очищается.
Самая сложная часть выполнена - осталось реализовать печать штрихкода. Создаем внешнюю печатную форму.
- Учитывая, что все базы работают в клиент-серверном варианте - компоненты печати штрихкодов загрузим в регистр сведений "Шаблоны машиночитаемых форм" (можно любой другой, также имеющий ресурс с типом "Хранилище значений"). С помощью метода получения навигационной ссылки в печатной форме будем получать ссылку на ресурс регистра, используя ключ записи, а затем выполнять подключение внешней компоненты. Таким образом, на клиенте мы получаем возможность использования компоненты печати штрихкодов без встраивания ее в макеты конфигурации (то есть без ее доработки). Если бы наша база работала в файловом варианте, то компоненту печати можно хранить просто в файловой системе.
- Из регистра сведений дополнительных свойств получаем штрихкод, используя отбор по текущему документу на печати.
- Картинку штрихкода помещаем на макет печатной формы обработки ВПФ.
- Готово.
Далее, напечатанный документ вместе со штрихкодом будет отсканирован. Сканы таких документов с помощью обработки потокового сканирования загружаются в Документооборот и там распознаются, происходит прикрепление файлов к уже созданным карточкам. Необходимо отметить, что встроенная в документооборот компонента распознавания работает нестабильно. Из 10 документов со штрихкодами распознается порой не более 3-4. Что говорить, если даже в книге описания конфигурации написано, цитирую: "для возможности распознавания штрихкодов необходимо использования ABBY Recognition server". ABBY Recognition server действительно с задачей распознавания справляется на "ура" (выяснено в результате тестирования) и распознает штрихкоды как только что отсканированных напрямую со сканера документов, так уже и готовых картинок JPG или документов PDF. В документообороте есть возможность работать с этим ПО, однако стоит продукт ABBY весьма недешево...
Прилагаю к статье обработку выгрузки и одну из внешних печатных форм. Правила обмена встроены в макет обработки выгрузки, их можно сохранить и проанализировать в "Конвертации данных".
Параллельно разрабатывались правила и для БП 2.0. Отличие только в том, что для того, чтобы реализовать автоматический запуск обработки выгрузки без доработки конфигурации необходимо использовать настройку запуска обмена: