В процессе интеграции «1С:ERP Управление предприятием» и «1С:Документооборот» часто возникает задача обеспечить доступ к файлам, приложенным к объектам в ДО, непосредственно из интерфейса ERP. Типичный сценарий: договор создается в ERP, синхронизируется с ДО, там к нему прикрепляют скан-копии, и эти файлы должны быть видны пользователям ERP. Столкнувшись с такой задачей, многие в первую очередь думают о физическом переносе (копировании) файлов из одной базы в другую. Однако это порождает серьезные проблемы: дублирование данных, резкое увеличение объема базы ERP и сложности с поддержанием актуальности копий.
Давайте разберем, как решить эту задачу правильно и эффективно, используя штатные механизмы платформы 1С, и почему от идеи физического копирования файлов лучше отказаться.
Основной и наиболее правильный метод для работы с файлами — это настройка бесшовной интеграции. Этот механизм не копирует файлы, а предоставляет пользователям ERP прямой доступ к файлам, хранящимся в «1С:Документооборот». Фактически, файлы остаются в одном месте (в базе или томах ДО), а в карточке связанного объекта в ERP (например, договора) появляется специальная панель или кнопка, которая в реальном времени запрашивает и отображает список файлов из ДО.
Преимущества такого подхода очевидны:
Чтобы ERP могла «общаться» с ДО, базу «Документооборота» необходимо опубликовать на веб-сервере (IIS или Apache). В результате у базы ДО появится HTTP-адрес, по которому к ее веб-сервисам смогут обращаться другие системы. Это стандартная процедура, которая выполняется в конфигураторе или через утилиты администрирования веб-сервера.
В обеих системах (и в ERP, и в ДО) необходимо настроить правила интеграции. Нужно указать, какие объекты будут синхронизироваться. Например, вы можете связать справочник Договоры контрагентов в ERP с определенным видом внутреннего документа в ДО. Если вы используете версию 2.1 и хотите гибко управлять содержимым, вам могут пригодиться условия для шаблонов файлов в видах документов. Настройка выполняется в разделе администрирования, в пунктах, посвященных синхронизации данных.
В настройках синхронизации данных в ERP нужно создать новую настройку интеграции с «1С:Документооборот». Здесь вы указываете адрес опубликованной базы ДО, а также имя пользователя и пароль, от имени которого ERP будет подключаться к ДО для получения данных. Рекомендуется создать для этого отдельного служебного пользователя в ДО с необходимыми правами.
Это ключевой момент, о котором упоминалось в обсуждении на форуме. В настройках интеграции в ERP, в разделе, посвященном работе с файлами, необходимо установить флаг «Файлы прикреплены к документам» (или аналогичный по смыслу, название может незначительно отличаться в разных версиях конфигураций). Эта настройка как раз и активирует механизм бесшовного доступа, сообщая системе, что файлы по интегрируемым объектам нужно искать в «Документообороте».
После выполнения настроек и синхронизации объектов откройте в ERP карточку объекта, который связан с объектом в ДО (например, договор). В форме должна появиться новая кнопка, гиперссылка или целая панель с названием вроде «Файлы из Документооборота». Нажав на нее, вы увидите список файлов, прикрепленных в ДО, и сможете их открывать, как если бы они были присоединены непосредственно в ERP.
Если вы все настроили, но новые файлы, добавленные в ДО, не видны в ERP, проведите диагностику по следующим пунктам:
Хотя бесшовная интеграция является стандартом, проанализируем ситуацию, когда по каким-то причинам требуется именно физически перенести файлы. Например, если нужно передать файлы во внешнюю систему, которая не может подключиться к ДО (в этом случае может быть полезна выгрузка данных из 1С в автономное дерево HTML), или если есть жесткое требование хранить копии в ERP (что, как мы выяснили, плохая практика).
Этот метод требует серьезных доработок и высокой квалификации программиста 1С, либо использования готовых инструментов для переноса прикрепленных файлов с электронными подписями между конфигурациями.
Вам потребуется выгрузить стандартные правила обмена между ERP и ДО и отредактировать их в конфигурации «Конвертация данных». В правила для нужного объекта (например, документа «Договор») нужно добавить логику по обработке присоединенных файлов.
При выгрузке данных из ДО, в обработчике события ПередВыгрузкой для объекта, нужно получить его присоединенные файлы. Данные файла (двоичные данные) помещаются во временное хранилище с помощью объекта ПоместитьВоВременноеХранилище(). В данные для обмена передается не сам файл, а адрес этого временного хранилища.
Именно на этом этапе можно реализовать условие из исходной задачи: переносить только те файлы, у которых установлен флаг «Оригинал». Перед выгрузкой файла вы проверяете его реквизиты в ДО и принимаете решение о необходимости его переноса.
При загрузке данных в ERP, в обработчике ПослеЗагрузки, система получает из данных обмена адрес временного хранилища. С помощью функции ПолучитьИзВременногоХранилища() она извлекает двоичные данные файла и программно присоединяет их к соответствующему объекту в ERP, используя стандартные функции БСП для работы с присоединенными файлами.
Важно понимать, что этот путь сложен в реализации и поддержке. Любое обновление конфигураций ERP или ДО может потребовать адаптации ваших измененных правил обмена. Поэтому прибегать к нему стоит только в крайнем случае, когда бесшовная интеграция по объективным причинам неприменима.