Почему не отображается кнопка «Создать на основании» в 1С:ERP 2 и как это исправить

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

При доработке типовых и переписанных конфигураций на базе 1С:ERP Управление предприятием 2 разработчики часто сталкиваются с ситуацией, когда связь документов «Вводится на основании» настроена в метаданных конфигуратора, однако в пользовательском режиме кнопка создания подчиненного документа так и не появляется. Проанализируем причину такого поведения платформы и разберем порядок действий для решения этой задачи.

Причина поведения системы

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

Рассмотрим по шагам, как корректно настроить ввод на основании для документов в 1С:ERP 2 с учетом требований БСП.

Шаг 1. Регистрация объектов в общем модуле БСП

Для того чтобы подсистема создания на основании анализировала менеджер конкретного документа, необходимо добавить объекты метаданных в список разрешенных.

  1. Откроем общий модуль СозданиеНаОснованииПереопределяемый.
  2. Найдем процедуру ПриОпределенииОбъектовСКомандамиСозданияНаОсновании.
  3. В массив Объекты добавим создаваемый документ или документ-основание.

Пример кода внесения изменений:


Процедура ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты)
    
    Объекты.Добавить(Метаданные.Документы.ТранспортнаяНакладная);
    Объекты.Добавить(Метаданные.Документы.ПеремещениеОС);
    
КонецПроцедуры

Шаг 2. Описание команды в модуле менеджера объекта

Далее перейдем к модулю менеджера создаваемого документа (в нашем примере — ТранспортнаяНакладная) или документа-основания и определим процедуру ДобавитьКомандыСозданияНаОсновании.

Вызовем экспортную функцию добавления команды из подсистемы БСП:


Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры)
    
    Документы.ТранспортнаяНакладная.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
    
КонецПроцедуры

Если требуется более тонкая настройка параметров команды (управление видимостью, функциональные опции, изменение представления), задействуем расширенный вариант формирования структуры команды через функцию КомандыСозданияНаОсновании.Добавить().

Шаг 3. Обновление кэша параметров подсистемы

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

Сделать это можно несколькими способами:

  1. Запустить информационную базу в пользовательском режиме с параметром командной строки: /C ЗапуститьОбновлениеИнформационнойБазы.
  2. Программно выполнить вызов процедуры обновления кэша команд в отладчике или через внешнюю обработку: СозданиеНаОсновании.ОбновитьКомандыСозданияНаОсновании();

Шаг 4. Проверка прав доступа и настроек формы

Если код прописан и кэш обновлен, но кнопка все равно отсутствует, проанализируем следующие моменты:

  1. Права доступа: Убедимся, что у текущего пользователя есть права на просмотр документа-источника и добавление/создание подчиненного документа.
  2. Функциональные опции: Проверим, не входит ли создаваемый документ в функциональные опции, которые отключены в настройках системы.
  3. Элементы формы: В форме документа-основания должна присутствовать стандартная группа команд ПодменюСоздатьНаОсновании, а в процедуре формы ПриСозданииНаСервере должен вызываться обработчик подсистемы подключаемых команд.

Альтернативный вариант: Использование общей команды

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

  1. В дереве метаданных создадим новую Общую команду.
  2. В свойстве Тип параметра команды укажем ссылку на документ-источник (например, ДокументСсылка.ПеремещениеОС).
  3. В свойстве Группа выберем Панель навигации.Создать на основании или Командная панель формы.Создать на основании.
  4. В модуле команды опишем открытие формы нового документа с передачей документа-основания в параметрах:
    
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
        
        ПараметрыОткрытия = Новый Структура("Основание", ПараметрКоманды);
        ОткрытьФорму("Документ.ТранспортнаяНакладная.ФормаОбъекта", ПараметрыОткрытия, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность);
        
    КонецПроцедуры
    
  5. В модуле объекта создаваемого документа обработаем переданное значение в стандартной процедуре ОбработкаЗаполнения.
← На главную