Как добавить команду «Присоединенные файлы» в командный интерфейс документа на базе БСП

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

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

Выбор модели хранения файлов

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

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

Разберем ситуацию, когда мы подключаем документ к стандартному механизму через определяемые типы.

Шаг 1. Настройка определяемых типов в конфигураторе

Для того чтобы общая команда ОбщаяКоманда.ПрисоединенныеФайлы «узнала» о существовании нашего документа, необходимо расширить состав нескольких определяемых типов. Проанализируем, какие именно типы требуют редактирования:

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

Шаг 2. Использование подписок на события

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

Найдите в дереве метаданных подписку УстановитьПометкуУдаленияПрисоединенныхФайловДокументов. В списке «Источник» необходимо отметить ДокументОбъект.ПеремещениеТоваров. Это позволит системе автоматически помечать файлы на удаление вслед за владельцем.

Шаг 3. Программная доработка формы документа

Иногда требуется не просто отобразить команду, но и обеспечить корректное поведение при копировании документа или проверку перед закрытием формы. Рассмотрим подробнее, какой код необходимо добавить в модуль формы документа ПеремещениеТоваров.

Во-первых, разберем ситуацию с копированием. Чтобы при создании нового документа на основании существующего файлы также копировались, в обработчике ПриЗаписиНаСервере используем метод общего модуля:


&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    // Стандартный вызов БСП для копирования присоединенных файлов
    РаботаСФайлами.ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, Параметры);
КонецПроцедуры

Во-вторых, проанализируем необходимость проверки «занятых» файлов. Если пользователь редактирует файл и пытается закрыть форму документа, система должна выдать предупреждение. Для этого реализуем следующий алгоритм в модуле формы:

  1. Добавим реквизит формы МожноЗакрытьФормуСФайлами с типом Булево.
  2. В обработчике ПередЗакрытием пропишем вызов клиентского модуля БСП:

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    // Проверка наличия редактируемых файлов перед закрытием
    РаботаСФайламиКлиент.ПоказатьПодтверждениеЗакрытияФормыСФайлами(ЭтотОбъект, Отказ, Объект.Ссылка);
КонецПроцедуры

Шаг 4. Решение проблемы «Справочник не найден»

Если при нажатии на кнопку «Файлы» система выдает ошибку о том, что справочник не найден, это означает, что логика БСП ожидает наличия персонального хранилища. Проанализируем причину: по умолчанию БСП ищет справочник по шаблону ИмяВладельца + "ПрисоединенныеФайлы".

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

Шаг 5. Настройка видимости в интерфейсе

Бывают случаи, когда все типы настроены, но ссылка «Файлы» все равно не видна. Посмотрим на настройки командного интерфейса самой формы документа:

  1. Откройте форму документа в конфигураторе.
  2. Перейдите на закладку Командный интерфейс.
  3. В дереве команд найдите раздел Панель навигации -> Перейти.
  4. Найдите команду Присоединенные файлы. Убедитесь, что флаг Видимость установлен (иногда стоит снять флаг «Авто» и поставить галочку принудительно).

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

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

← На главную