Как подключить новый документ к подсистеме дополнительных сведений и почему общая команда не отображается в командном интерфейсе формы?

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

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

Нередко возникает ситуация: разработчик создает новый документ, открывает редактор командного интерфейса формы и обнаруживает, что типовая команда ОбщаяКоманда.ДополнительныеСведенияКоманднаяПанель отсутствует в командной панели формы, тогда как у типовых документов (например, РеализацияТоваровУслуг) она присутствует. Разберем детально, как платформа формирует командный интерфейс, что требуется для подключения нового объекта к механизму дополнительных сведений и почему изменения могут не сразу отображаться в Конфигураторе.

Принцип формирования командного интерфейса параметризуемых команд

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

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

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

Пошаговый алгоритм подключения объекта к дополнительным сведениям

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

  1. Расширение определяемого типа

    Перейдем в ветку метаданных Общие -> Определяемые типы -> ВладелецДополнительныхСведений. Откроем список типов и установим флаг напротив ссылки на наш новый документ — ДокументСсылка.ИмяНовогоДокумента.

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

    • ОпределяемыйТип.ВладелецЗначенийКлючейДоступа
    • ОпределяемыйТип.ВладелецЗначенийКлючейДоступаДополнительныхРеквизитовИСведений
  2. Создание предопределенного набора свойств

    Подсистема БСП хранит состав свойств для каждого типа объекта в справочнике НаборыДополнительныхРеквизитовИСведений. Перейдем в данный справочник в дереве метаданных и добавим новый предопределенный элемент:

    • Имя: строго по шаблону Документ_ИмяНовогоДокумента (для справочников используется шаблон Справочник_ИмяСправочника).
    • Синоним: понятное представление объекта, например: Документ "Заявка на расходование ДС".
  3. Регистрация объекта в переопределяемом модуле

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

    
    Процедура ПриОпределенииНаборовСвойствОбъектов(НаборыСвойств) Экспорт
        
        Набор = НаборыСвойств.Добавить();
        Набор.Имя          = "Документ_ИмяНовогоДокумента";
        Набор.Синоним      = НСтр("ru = 'Документ ""Имя нового документа""'");
        Набор.ИмяПредопределенногоНабора = "Документ_ИмяНовогоДокумента";
        
    КонецПроцедуры
    
  4. Проверка прав доступа (ролей)

    Убедимся, что роли пользователей, которые будут работать с документом, имеют права на чтение и изменение регистра сведений ДополнительныеСведения, а также право на использование общей команды ОбщаяКоманда.ДополнительныеСведенияКоманднаяПанель (обычно это типовые роли ЧтениеДополнительныхСведений и ИзменениеДополнительныхСведений).

Почему команда не появляется в Конфигураторе после добавления типа: проблема кэша

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

Выясним причину такого поведения. Редактор форм в Конфигураторе активно кэширует схему типов и метаданных для ускорения работы интерфейса. Изменение состава определяемого типа не всегда форсирует мгновенную перерисовку дерева команд открытых ранее окон.

Для гарантированного обновления структуры интерфейса выполним следующие действия:

  1. Сохраним конфигурацию (нажмем F7 или обновим конфигурацию базы данных).
  2. Закроем все открытые окна редакторов форм и документов.
  3. Заново откроем форму документа и перейдем во вкладку Командный интерфейс.
  4. Если команда по-прежнему не отображается, перезапустим Конфигуратор с очисткой локального временного кэша метаданных (удаление папок в каталогах %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8).

Различие между Дополнительными сведениями и Дополнительными реквизитами

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

  1. Дополнительные сведения:

    Хранятся в независимом регистре сведений ДополнительныеСведения. Редактируются в отдельном модальном или блокирующем диалоговом окне, вызываемом по общей команде ДополнительныеСведенияКоманднаяПанель. Изменение сведений не приводит к перезаписи самого документа и не меняет версию его данных. Для их подключения достаточно описанных выше действий в метаданных.

  2. Дополнительные реквизиты:

    Хранятся непосредственно внутри объекта — в табличной части ДополнительныеРеквизиты. Отображаются прямо на форме объекта в виде динамически создаваемых полей ввода. Для их интеграции требуется не только добавить табличную часть в метаданные документа, но и внедрить вызовы процедур БСП в модуль формы:

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

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

← На главную