Почему в 1С:УПП файлы не сохраняются в томах на диске при включенной опции?

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

Нередко при администрировании конфигурации «1С:Управление производственным предприятием 1.3» (УПП) возникает ситуация: администратор активирует функциональную опцию Хранить файлы в томах на диске, создает том с корректным сетевым путем вида \\SERVER\Share, проверяет права службы сервера 1С на запись, но при добавлении вложений к документам сетевой каталог остается пустым. При этом сами файлы успешно открываются в программе, так как сохраняются непосредственно в информационную базу.

Проанализируем архитектурные причины такого поведения платформы и конфигурации, а также рассмотрим варианты перевода хранения файлов на внешний диск.

Архитектурная причина проблемы в 1С:УПП

Выясним причину, по которой стандартная настройка не затрагивает пользовательские файлы. В конфигурации 1С:УПП одновременно присутствуют два совершенно разных механизма работы с присоединенными файлами:

  1. Устаревший механизм пользовательских вложений: для стандартного прикрепления файлов к документам и справочникам используется справочник ХранилищеДополнительнойИнформации. Бинарные данные файлов помещаются в реквизит Хранилище с типом ХранилищеЗначения. В коде этого справочника полностью отсутствует логика обращения к подсистеме томов хранения файлов.
  2. Механизм Библиотеки стандартных подсистем (БСП): опция Хранить файлы в томах на диске и справочник ТомаХраненияФайлов в типовой УПП внедрены только для электронного документооборота (ЭДО), подсистемы 1С-Отчетности и справочников формата <ИмяОбъекта>ПрисоединенныеФайлы. Обычные пользовательские сканы и файлы к этой подсистеме по умолчанию не подключены.

Способы решения задачи выноса файлов на диск

Рассмотрим основные пути реализации хранения файлов на диске для разгрузки базы данных 1С:УПП.

Вариант 1. Доработка справочника «Хранилище дополнительной информации»

Разберем вариант точечной модификации существующего механизма. Для этого потребуется внести изменения в структуру и модуль справочника ХранилищеДополнительнойИнформации:

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

Вариант 2. Перевод объектов на подсистему БСП «Работа с файлами»

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

  1. Создадим для требуемых документов и справочников отдельные подчиненные справочники вида ЗаказПокупателяПрисоединенныеФайлы или ДоговорыКонтрагентовПрисоединенныеФайлы.
  2. Включим созданные справочники в состав определяемых типов подсистемы работы с файлами БСП.
  3. Разместим на формах документов стандартные команды и панели присоединенных файлов. Это позволит сразу получить штатное версионирование, квотирование и автоматическое сохранение в тома на диске без переписывания низкоуровневых алгоритмов.

Вариант 3. Интеграция с «1С:Документооборот»

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

Технические нюансы настройки сетевых томов

При настройке справочника ТомаХраненияФайлов обратим внимание на важные системные требования:

  1. Права доступа к общей папке: учетная запись, от имени которой запущена служба сервера 1С:Предприятия, должна иметь полные права как на уровне файловой системы (NTFS), так и на уровне общего сетевого доступа (Share Permissions).
  2. Сервер 1С на базе Linux: если сервер приложений работает под управлением Linux, использование прямых сетевых путей Windows (UNC-путей вида \\SERVER\Share) невозможно. Сетевой ресурс необходимо предварительно смонтировать в локальную файловую систему сервера (например, в каталог /mnt/share) и указать в карточке тома локальный путь Linux.
  3. Квоты и порядок заполнения: при заполнении объема тома до установленного предела или недоступности каталога система автоматически переключается на следующий доступный том в порядке заполнения либо оставляет файл в базе данных.
← На главную