При доработке типовых и переписанных конфигураций на базе 1С:ERP Управление предприятием 2 разработчики часто сталкиваются с ситуацией, когда связь документов «Вводится на основании» настроена в метаданных конфигуратора, однако в пользовательском режиме кнопка создания подчиненного документа так и не появляется. Проанализируем причину такого поведения платформы и разберем порядок действий для решения этой задачи.
В современных конфигурациях, использующих Библиотеку Стандартных Подсистем (БСП), стандартные платформенные меню вывода команд ввода на основании заменяются динамическим механизмом подключаемых команд. Даже если в свойствах объекта метаданных указан документ-основание, подсистема БСП формирует командную панель программно на сервере. Если новый документ или связь не зарегистрированы в специализированных модулях БСП, команда не отобразится в интерфейсе приложения.
Рассмотрим по шагам, как корректно настроить ввод на основании для документов в 1С:ERP 2 с учетом требований БСП.
Для того чтобы подсистема создания на основании анализировала менеджер конкретного документа, необходимо добавить объекты метаданных в список разрешенных.
СозданиеНаОснованииПереопределяемый.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании.Объекты добавим создаваемый документ или документ-основание.Пример кода внесения изменений:
Процедура ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты)
Объекты.Добавить(Метаданные.Документы.ТранспортнаяНакладная);
Объекты.Добавить(Метаданные.Документы.ПеремещениеОС);
КонецПроцедуры
Далее перейдем к модулю менеджера создаваемого документа (в нашем примере — ТранспортнаяНакладная) или документа-основания и определим процедуру ДобавитьКомандыСозданияНаОсновании.
Вызовем экспортную функцию добавления команды из подсистемы БСП:
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры)
Документы.ТранспортнаяНакладная.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
Если требуется более тонкая настройка параметров команды (управление видимостью, функциональные опции, изменение представления), задействуем расширенный вариант формирования структуры команды через функцию КомандыСозданияНаОсновании.Добавить().
Подсистема подключаемых команд БСП кэширует состав команд в параметрах сеанса и системных настройках. После изменения кода в модулях параметры подсистемы необходимо обновить.
Сделать это можно несколькими способами:
/C ЗапуститьОбновлениеИнформационнойБазы.
СозданиеНаОсновании.ОбновитьКомандыСозданияНаОсновании();
Если код прописан и кэш обновлен, но кнопка все равно отсутствует, проанализируем следующие моменты:
ПодменюСоздатьНаОсновании, а в процедуре формы ПриСозданииНаСервере должен вызываться обработчик подсистемы подключаемых команд.В случаях, когда требуется обойти программные механизмы БСП и жестко зафиксировать команду ввода на основании, добавим произвольную общую команду:
ДокументСсылка.ПеремещениеОС).Панель навигации.Создать на основании или Командная панель формы.Создать на основании.
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыОткрытия = Новый Структура("Основание", ПараметрКоманды);
ОткрытьФорму("Документ.ТранспортнаяНакладная.ФормаОбъекта", ПараметрыОткрытия, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность);
КонецПроцедуры
ОбработкаЗаполнения.