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