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

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

При разработке нового функционала в конфигурациях на базе Библиотеки стандартных подсистем (БСП), таких как 1С:Управление торговлей 11, 1С:ERP или 1С:Комплексная автоматизация, часто возникает необходимость прикреплять файлы к вновь созданным документам или справочникам. Однако простого добавления нового документа в конфигуратор недостаточно: функционал работы с файлами базируется на специализированных метаданных, определяемых типах и механизмах командного интерфейса платформы. Разберем по шагам, как правильно встроить подсистему присоединенных файлов и что делать, если команда перехода к файлам не появляется в командном интерфейсе формы.

Шаг 1. Создание справочника присоединенных файлов

Рассмотрим структуру хранения файлов. Для каждого вида объекта-владельца в типовых конфигурациях создается отдельный справочник для хранения метаданных и самих файлов (если они хранятся в информационной базе). Наиболее надежный способ — создать его копированием существующего аналогичного объекта.

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

Шаг 2. Настройка определяемых типов БСП

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

  1. В определяемый тип ВладелецПрисоединенныхФайлов добавим ссылку на наш документ: ДокументСсылка.Документ1.
  2. В определяемый тип ПрисоединенныйФайл добавим ссылку на созданный справочник: СправочникСсылка.Документ1ПрисоединенныеФайлы.
  3. В определяемый тип ПрисоединенныйФайлОбъект добавим объектный тип созданного справочника: СправочникОбъект.Документ1ПрисоединенныеФайлы.

Шаг 3. Регистрация в подписках на события

Для корректной работы жизненного цикла файлов и отображения интерфейса настроим типовые подписки на события:

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

Шаг 4. Настройка прав доступа и ролей

Выясним причину, по которой пользователи могут не увидеть добавленный функционал после обновления базы. При создании нового справочника права доступа к нему изначально есть только у Администратора с полными правами. Чтобы команда и прикрепленные файлы были доступны обычным пользователям, добавим права на чтение, просмотр, добавление и изменение справочника Документ1ПрисоединенныеФайлы в профильные роли пользователей или общие роли подсистемы работы с файлами.

Шаг 5. Решение проблемы с отображением команды в панели навигации формы

Часто возникает ситуация: все определяемые типы заполнены, справочник создан, но в конфигураторе в командном интерфейсе формы документа (или панели навигации) общая команда ПрисоединенныеФайлы так и не появляется, либо команда не отображается в режиме 1С:Предприятие.

Разберем, почему это происходит и как устранить проблему:

  1. Переключение флага стандартных команд. В свойствах документа найдем флаг Использовать стандартные команды. В платформе 1С:Предприятие 8.3 при добавлении связей через определяемые типы командный интерфейс формы документа может не пересчитаться автоматически. Снимем этот флаг, сохраним изменения или применим их, а затем включим флаг Использовать стандартные команды обратно. После этого платформа принудительно обновит кэш связей командного интерфейса, и команда подсистемы присоединенных файлов появится в панели навигации формы.
  2. Проверка видимости в командном интерфейсе формы. Откроем управляемую форму документа, перейдем на закладку Командный интерфейс, раскроем раздел Панель навигации.Перейти и убедимся, что для команды присоединенных файлов установлен флаг видимости.
  3. Обновление вспомогательных данных БСП. Запустим информационную базу в режиме 1С:Предприятие под пользователем с полными правами. В некоторых релизах конфигураций для актуализации соответствий между владельцами и справочниками файлов требуется выполнить обновление служебных данных конфигурации (штатная процедура обновления параметров работы программы или запуск внешней обработки ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf).

Шаг 6. Дополнительные возможности: копирование файлов при копировании документа

Если требуется, чтобы при интерактивном копировании документа прикрепленные к нему файлы автоматически дублировались для нового экземпляра, доработаем модуль управляемой формы документа:

  1. В параметрах формы документа проверим наличие ключевого параметра ЗначениеКопирования с типом ссылки на данный документ.
  2. В обработчик события формы ПриЗаписиНаСервере добавим вызов общего модуля подсистемы файлов:

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

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

← На главную