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