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