Почему документ не попадает в список "Создать на основании" в 1С?

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

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

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

Программная регистрация команд в БСП

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

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

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


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

Программные условия видимости

Если команда зарегистрирована, но все равно не отображается, проанализируем условия видимости. В БСП при добавлении команды часто используется метод ДобавитьУсловиеВидимостиКоманды.

Это означает, что кнопка может скрываться динамически в зависимости от контекста. Например:

  1. Документ-основание еще не записан или не проведен.
  2. Документ имеет статус, который не предполагает ввод подчиненных объектов (например, статус "Отменен" или "Закрыт").
  3. В документе выбран определенный вид операции, для которого создание данного целевого документа нелогично.

Платформенные настройки метаданных и форм

Не забываем и про базовые платформенные требования. Проверим следующие настройки:

  1. Свойства конфигуратора: В свойствах целевого документа (который мы хотим создать) на вкладке "Ввод на основании" в окне "Является основанием для" обязательно должна стоять галочка напротив документа-источника. Без этой платформенной связки автоматическое заполнение работать не будет, даже если мы настроим БСП.
  2. Командный интерфейс формы: Команда может отсутствовать из-за снятой галочки видимости в настройках конкретной формы или в командном интерфейсе всей подсистемы. Если форма создавалась вручную или модифицировалась, проверьте, не удалена ли группа команд "Создать на основании" из командной панели формы.

Нюансы при работе с расширениями

Рассмотрим случай, когда доработка выполняется через механизм расширений. Если документ-основание или создаваемый документ добавлены в расширении, стандартный механизм может работать некорректно, особенно на старых версиях платформы.

В таких ситуациях часто приходится обходить ограничение вручную. Разберем обходной путь:

  1. Создаем новую Общую команду в конфигураторе.
  2. Прописываем для нее тип параметра команды, указав наш документ-основание.
  3. Помещаем созданную общую команду в группу формы Командная панель формы. Создать на основании.

Журналы документов и динамические списки

Иногда кнопка присутствует в самой форме документа, но пропадает в списке или журнале (динамическом списке). Выясним причину. В динамических списках меню ввода на основании формируется исключительно программно в момент создания формы.

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

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

← На главную