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