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