Почему новый документ из расширения не отображается в интерфейсе 1С:Бухгалтерия 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При разработке расширений для современных конфигураций на базе 1С:Предприятие 8.3 (таких как Бухгалтерия предприятия 3.0 или ERP) программисты часто сталкиваются с ситуацией: новый документ или справочник добавлен в расширение, включен в нужные подсистемы, права настроены, но в пользовательском режиме пункт меню так и не появляется. При этом через меню "Все функции" (или "Функции для технического специалиста") объект прекрасно открывается и работает.

В этой статье мы подробно разберем, почему так происходит, и проанализируем последовательность действий, необходимых для того, чтобы ваш объект занял свое законное место в командном интерфейсе программы.

Анализ командного интерфейса и состава подсистем

Первым делом нам необходимо проверить базовые настройки метаданных в самом расширении. Рассмотрим по шагам, на что следует обратить внимание в конфигураторе:

  1. Включение в подсистемы: Проверим, что созданный документ отмечен галочкой в составе хотя бы одной подсистемы, которая выведена в панель разделов. Если вы создаете свою подсистему в расширении, убедитесь, что она является подчиненной по отношению к одной из типовых подсистем (например, Продажи или БанкИКасса), либо сама помещена в Командный интерфейс конфигурации расширения.
  2. Свойство "Использовать стандартные команды": У самого документа в расширении обязательно должно быть включено свойство ИспользоватьСтандартныеКоманды. Если этот флаг снят, система не создаст автоматическую команду открытия списка, и документ не появится в меню, даже если он включен в подсистему.
  3. Настройка командного интерфейса подсистемы: Щелкнем правой кнопкой мыши на подсистеме в дереве метаданных расширения и выберем пункт "Открыть командный интерфейс". Проанализируем колонку "Видимость": если там не стоят галочки или программно переопределены настройки для конкретных ролей, объект будет скрыт.

Обновление вспомогательных данных БСП

Современные типовые конфигурации построены на базе Библиотеки стандартных подсистем (БСП). Механизмы БСП кэшируют структуру интерфейса и прав доступа в специальных справочниках (например, Идентификаторы объектов метаданных). Когда мы добавляем объект через расширение, система не всегда автоматически подхватывает изменения в пользовательском интерфейсе.

Для решения этой проблемы разберем способ принудительного обновления вспомогательных данных. Нам необходимо запустить сеанс "1С:Предприятие" с особым параметром командной строки. Выполним следующие действия:

  1. Зайдем в настройки запуска информационной базы в окне списка баз.
  2. В поле "Параметры запуска" введем следующую строку: /RuntimeUpdateDBConfigurationValues (или воспользуемся более радикальным способом, прописав /C ЗапуститьОбновлениеИнформационнойБазы).
  3. Запустим программу под пользователем с полными правами.

Во время этого запуска система пересчитает хэши метаданных и обновит содержимое справочников, отвечающих за динамическое построение интерфейса. После завершения процесса параметр запуска следует удалить.

Настройка прав доступа и ролей в расширении

Одной из самых коварных причин отсутствия документа является специфика работы системы прав в БП 3.0. Даже если вы добавили новую роль в расширение и дали ей полные права на документ, этого может быть недостаточно для отображения в интерфейсе, если используется механизм Профилей групп доступа.

Выясним причину и настроим права правильно:

  1. Заимствование типовых ролей: В некоторых случаях системе требуется наличие у пользователя типовой роли, которая отвечает за просмотр конкретного раздела. Попробуем добавить в расширение (заимствовать) роль ПолныеПрава и проверить, появится ли объект у администратора.
  2. Регистрация новой роли: Если вы создали свою роль в расширении (например, ДобавлениеИзменениеМоегоДокумента), она должна быть назначена пользователю в режиме "Предприятие". В БСП это делается через Профили групп доступа. Создадим новый профиль, добавим в него вашу роль из расширения и включим пользователя в группу доступа с этим профилем.
  3. Программное обновление разрешений: Иногда требуется принудительно заставить БСП увидеть новые роли расширения. Для этого можно воспользоваться внешней обработкой, выполнив в ней следующий код:

// Программный вызов обновления прав доступа для БСП
УправлениеДоступом.ОбновитьРазрешенияНазначенныеРолям();
ПараметрыОбновления = УправлениеДоступомСлужебный.ПараметрыОбновленияДоступа();
УправлениеДоступомСлужебный.ОбновитьДоступ(ПараметрыОбновления);

Проверка функциональных опций

Проанализируем ситуацию с Функциональными опциями (ФО). Если вы включили свой документ в существующую подсистему (например, Производство), а в настройках самой программы (в разделе "Администрирование — Интерфейс") этот раздел или связанные с ним функции отключены, то ваш документ также будет скрыт.

Посмотрим, не привязан ли ваш документ или подсистема к ФО, которая в данный момент имеет значение Ложь. Если документ должен отображаться всегда, убедитесь, что в его свойствах в поле "Функциональные опции" пусто.

Технические параметры расширения

Иногда корень проблемы кроется в общих настройках самого файла расширения. Проверим следующие свойства:

Очистка кэша как финальный этап

Если все настройки выполнены верно, но документ упорно не желает появляться, велика вероятность влияния кэша метаданных. Платформа 1С активно кэширует структуру управляемых форм и командного интерфейса на стороне клиента и сервера.

Выполним полную очистку кэша:

  1. Удалим базу из списка и добавим её заново (это самый быстрый способ очистить локальный кэш пользователя).
  2. Если используется клиент-серверный вариант — перезапустим службу Агента сервера 1С:Предприятия.
  3. Проверим настройки навигации непосредственно в режиме "Предприятие". Для этого в нужном разделе нажмем на значок шестеренки (Настройка навигации) и посмотрим, нет ли нашего документа в левой колонке "Доступные команды". Если он там есть, просто перенесем его в правую колонку вручную.

Подводя итог, можно сказать, что в БП 3.0 добавление объекта в расширение — это лишь половина дела. Основная работа заключается в синхронизации данных расширения с механизмами БСП, которые управляют отображением интерфейса и правами доступа в реальном времени.

← На главную