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