Как исправить ошибку «Не удалось добавить файл ни в один из томов» при прикреплении файлов в 1С?

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

После обновления типовых и отраслевых конфигураций (например, «1С:Бухгалтерия предприятия», «1С:Бухгалтерия строительной организации») пользователи могут столкнуться с ошибкой при попытке прикрепить файл к документу: «Не удалось добавить файл ни в один из томов». При этом в тексте ошибки или в журнале регистрации фигурирует дополнительное пояснение: «У владельца файлов типа [ИмяОбъекта] не имеется справочников для хранения файлов» (в качестве объекта могут выступать, например, Заявка на выпуск КиЗ для маркировки, Отчет комиссионера о продажах, УдалитьПроизвольныйЭД и другие). Аналогичная ошибка блокирует открытие и редактирование справочника ТомаХраненияФайлов.

Параллельно при открытии формы работы с файлами может возникать предупреждение: «TWAIN : Invalid TWAIN driver». Разберем детально причины такого поведения программы и рассмотрим способы решения проблемы.

Выясним причины возникновения проблемы

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

  1. Для каждого типа данных, включенного в состав определяемого типа ВладелецФайлов (или ВладелецПрисоединенныхФайлов), подсистема выполняет сопоставление со справочником, где должны размещаться данные.
  2. По умолчанию подсистема ищет специализированный справочник с постфиксом ...ПрисоединенныеФайлы (например, для документа ЗаявкаНаВыпускКиЗГИСМ это должен быть справочник ЗаявкаНаВыпускКиЗГИСМПрисоединенныеФайлы).
  3. Если индивидуальный справочник в конфигурации отсутствует, подсистема проверяет переопределяемый модуль РаботаСФайламиПереопределяемый на наличие явного указания общего справочника (как правило, справочника Файлы).
  4. Если тип объекта присутствует в определяемом типе, но индивидуального справочника нет и сопоставление в модуле не задано, платформа генерирует исключительную ситуацию.

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

Способ 1. Исправление через расширение конфигурации (без снятия с поддержки)

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

  1. Перейдем в конфигураторе в меню Конфигурация → Расширения конфигурации и создадим новое расширение.
  2. Добавим в расширение общий модуль РаботаСФайламиПереопределяемый.
  3. Переопределим процедуру ПриОпределенииСправочниковХраненияФайлов с помощью директивы &После, указав в ней проблемные типы объектов.

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


&После("ПриОпределенииСправочниковХраненияФайлов")
Процедура Расш_ПриОпределенииСправочниковХраненияФайлов(ТипВладелецФайла, ИменаСправочников) Экспорт

    Если ТипВладелецФайла = Тип("ДокументСсылка.ЗаявкаНаВыпускКиЗГИСМ")
        ИЛИ ТипВладелецФайла = Тип("ДокументСсылка.УдалитьПроизвольныйЭД")
        ИЛИ ТипВладелецФайла = Тип("ДокументСсылка.ОтчетКомиссионераОПродажах") Тогда
        
        ИменаСправочников.Вставить("Файлы", Истина);
        
    КонецЕсли;

КонецПроцедуры

После применения расширения для всех указанных объектов-владельцев в качестве хранилища будет явно определен справочник Файлы, и ошибка при обращении к томам или документам будет устранена.

Способ 2. Корректировка состава определяемых типов (для доработанных конфигураций)

Если конфигурация уже снята с поддержки или находится в режиме редактирования с сохранением поддержки, проанализируем состав метаданных:

  1. Откроем дерево метаданных, перейдем в ветку Общие → Определяемые типы.
  2. Найдем объекты ВладелецФайлов и ВладелецПрисоединенныхФайлов.
  3. Если для проблемных объектов (например, устаревших с префиксом Удалить...) прикрепление файлов не требуется, исключим их из списка типов.
  4. Если для объекта требуется полноценное отдельное хранение файлов по стандартам БСП, создадим новый справочник с именем [ИмяОбъекта]ПрисоединенныеФайлы со стандартным составом реквизитов подсистемы работы с файлами.

Способ 3. Установка официального патча или обновление конфигурации

Данная проблема была зарегистрирована вендором как ошибка типовых конфигураций. Если возможность доработки конфигурации или подключения расширений отсутствует, рекомендуется проверить раздел обновлений на портале ИТС и выполнить установку официального патча (исправления) либо обновить конфигурацию на более свежий релиз, в котором ошибка сопоставления объектов устранена разработчиками.

Способ 4. Временный обход ошибки переключением способа хранения

В критических ситуациях, когда требуется немедленно восстановить возможность прикрепления файлов до момента внесения изменений программистом, можно применить временное организационное решение:

  1. Перейдем в раздел Администрирование → Настройки работы с файлами.
  2. Временно отключим флаг Хранить файлы в томах на диске (в этом случае файлы будут сохраняться непосредственно в тело информационной базы).
  3. После установки исправлений включим хранение в томах обратно и выполним регламентный перенос файлов в тома.

Устранение сопутствующей ошибки «TWAIN : Invalid TWAIN driver»

При открытии окна прикрепления файлов система опрашивает установленные в операционной системе службы сканирования. Ошибка недействительного драйвера TWAIN возникает по двум основным причинам:

  1. Несовпадение разрядности клиента «1С» и драйвера сканера: если используется 64-разрядный клиент «1С:Предприятия», он не может взаимодействовать с 32-разрядными библиотеками TWAIN-драйвера сканера. Для исправления запустите 32-разрядную версию платформы или установите 64-битный TWAIN-драйвер устройства.
  2. Использование альтернативного интерфейса: в персональных настройках сканирования в программе «1С» переключите интерфейс работы со сканером с протокола TWAIN на WIA (Windows Image Acquisition), если он поддерживается оборудованием.
← На главную