Как настроить синхронизацию картинок и файлов в томах хранения при использовании РИБ?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой IT и автоматизация бизнеса
← На главную

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

Механизм работы файлов в томах через РИБ

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

Проанализируем последовательность действий системы при обмене, используя справочник по методам БСП:

  1. При выгрузке данных в главном узле срабатывает процедура ПриОтправкеФайлаСообщениеОбмена. Система обращается к физическому файлу в томе, считывает его и помещает в виде двоичных данных в само сообщение обмена (XML-файл).
  2. При загрузке сообщения в подчиненном узле вызывается процедура ПриПолученииФайла. Программа извлекает двоичные данные из сообщения и сохраняет их в локальный том, путь к которому прописан в базе приемника.

Таким образом, физического доступа подчиненного узла к серверу главного узла не требуется — данные "путешествуют" внутри файла обмена. Как альтернативу стандартному РИБ можно рассмотреть обмены через брокеры.

Почему файлы не появляются в подчиненном узле?

Если в РИБ картинки не отображаются, выясним причину, проверив следующие настройки:

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

Разбор ошибки "Файл помечен на удаление и очищен"

Ситуация, когда пользователь видит сообщение об очистке файла, часто связана с рассинхронизацией справочников. Рассмотрим ситуацию: запись о версии файла в подчиненный узел пришла, а само "тело" файла по какой-то причине (обрыв связи, превышение размера) не загрузилось. База видит ссылку на файл в справочнике ВерсииФайлов, но не находит его в томе.

Также это случается при конфликте GUID. Если вы создали "новый" том вручную в подчиненном узле вместо того, чтобы дождаться его миграции из главного узла, идентификаторы объектов не совпадут. Система будет пытаться сопоставить файл с томом, которого физически не существует в данной базе.

Варианты организации хранения: "Взлетит" или нет?

Разберем по шагам предложенный в обсуждении вариант с ручным копированием папок на каждый компьютер.

Вариант 1: Ручное копирование и идентичные пути

Если вы хотите избежать передачи гигабайт данных через файлы обмена (особенно при слабом интернете), можно поступить следующим образом:

Важно: Чтобы этот способ работал стабильно на разных ОС или при разных путях, рекомендуется использовать логические диски (команда subst) или сетевые UNC-пути, которые будут выглядеть одинаково для всех узлов сети.

Вариант 2: Использование облачных хранилищ (S3)

Проанализируем перспективное решение с использованием S3-совместимых хранилищ (Minio, AWS, Яндекс.Облако). Это идеальный вариант для РИБ, так как:

Однако помните, что для работы с S3 в подчиненных узлах потребуется стабильный интернет, что может не подходить для условий, описанных автором темы.

Рекомендации по отладке кода

Если автоматический обмен не работает, рекомендуем посмотреть на реализацию обработчиков в модуле РаботаСФайламиСлужебный. Вы можете установить точку останова в следующих местах, чтобы проследить путь файла:


// В главном узле при выгрузке:
Процедура ПриОтправкеФайлаСообщениеОбмена(ФайлСсылка, СообщениеОбмена) Экспорт
    // Здесь можно проверить, попадает ли двоичное тело файла в XML
КонецПроцедуры

// В подчиненном узле при загрузке:
Процедура ПриПолученииФайла(ФайлСсылка, ДанныеФайла, СообщениеОбмена) Экспорт
    // Здесь проверяется корректность записи файла в локальную папку тома
КонецПроцедуры

Подводя итог: для успешной работы ТХФ в РИБ необходимо обеспечить идентичность справочника ТомаХраненияФайлов (синхронизация по GUID), проверить лимиты объема передаваемых данных в настройках БСП и убедиться в наличии прав доступа к локальным папкам на каждой торговой точке.

← На главную