Рассмотрим распространенную и непростую ситуацию в 1С:Управление торговлей (в том числе в версии для Казахстана). Вы создали новый профиль групп доступа для менеджеров по продажам, назначили его пользователям, но при попытке создать документ реализации товаров и услуг они сталкиваются с проблемой: поле для выбора договора с контрагентом пустое. При этом в настройках профиля явно выданы права на чтение справочников Контрагенты и ДоговорыКонтрагентов, а ограничений на уровне записей (RLS) по этим справочникам, на первый взгляд, нет. Журнал регистрации лишь кратко сообщает об "отказе в доступе" к справочнику договоров, не давая подсказок. Давайте разберемся, в чем может быть причина и как это исправить.
Эта проблема может иметь две основные причины: классическую нехватку прав на связанные данные или более редкий случай — повреждение служебных таблиц прав доступа.
Самая частая причина такого поведения — это работа механизма ограничения доступа на уровне записей (RLS). Система скрывает не только те записи, к которым нет прямого доступа, но и те, в реквизитах которых содержатся объекты, недоступные пользователю для чтения. Проще говоря, если у пользователя нет прав на чтение организации или валюты, указанной в договоре, то система скроет от него и сам договор, даже если на справочник ДоговорыКонтрагентов права есть.
Проведем диагностику, чтобы убедиться, что проблема именно в этом.
Нормативно-справочная информация -> Договоры с клиентами). Если список пуст, хотя под полными правами договоры есть, — это почти стопроцентное подтверждение проблемы с правами на связанные объекты.
Убедитесь, что в профиле доступа пользователя есть права на чтение следующих объектов:
Организации: Каждый договор привязан к конкретной организации. Если у пользователя нет прав на просмотр этой организации, договор будет скрыт.
Партнеры: В современных конфигурациях УТ используется связка управленческого справочника Партнеры и регламентированного Контрагенты. Права должны быть на оба справочника и на ту группу партнеров, к которой относится контрагент.
Валюты: Пользователь должен иметь доступ к валюте, указанной в договоре.
Виды цен: Если в договоре указан определенный вид цен, на него также требуются права чтения.
Банковские счета: Если в договоре указан банковский счет организации или контрагента, на него могут требоваться права.
Графики оплаты и Этапы графиков оплаты: Если в договорах используется этот функционал, необходимо дать доступ и к этим справочникам.
Как действовать:
Создайте копию проблемного профиля доступа и последовательно добавляйте в него роли из типового профиля (например, "Менеджер по продажам"). После добавления каждой группы ролей проверяйте, появились ли договоры. Этот метод поможет точно определить, какой именно роли не хватало.
Также проверьте сами договоры. Распространенная ошибка — когда в договоре не заполнено поле, по которому настроено ограничение доступа (например, не указана группа партнера). В этом случае RLS может некорректно отрабатывать и скрывать такой договор для всех, кроме пользователей с полными правами.
Иногда проблема глубже и не связана с настройками в профиле. Это может произойти, если служебные таблицы, отвечающие за применение прав доступа, были повреждены или некорректно обновлены. Характерный признак такой ситуации — договоры не видит никто из пользователей, кроме тех, у кого полные права (администраторы), даже если им назначены стандартные, неизмененные типовые профили.
В этом случае можно проверить состояние служебного регистра. Зайдите в меню "Все функции" и откройте регистр сведений ТаблицыГруппДоступа. Сделайте отбор по таблице Справочник.ДоговорыКонтрагентов. Если вы видите в наименовании объекта метаданных странные символы или искаженное имя (например, "? Справочник.Договоры контрагентов"), это явный признак сбоя.
Для исправления этой проблемы необходимо запустить процедуру обновления вспомогательных данных информационной базы. Разберем по шагам, как это сделать.
Сделайте резервную копию базы данных!
Этот шаг является обязательным, так как процедура вносит системные изменения.Запустите 1С в режиме Конфигуратор.
В конфигураторе перейдите в меню Администрирование -> Параметры информационной базы....
В открывшемся окне в поле "Дополнительные параметры запуска" введите следующий ключ:
/C ЗапуститьОбновлениеИнформационныхБаз
Нажмите "ОК", закройте конфигуратор и запустите базу в обычном режиме 1С:Предприятие.
При запуске система начнет выполнять служебные процедуры обновления. Это может занять некоторое время. Дождитесь полного завершения процесса.
Что делает этот параметр? Он инициирует принудительное перестроение и перезаполнение вспомогательных данных, которые используются для работы различных механизмов платформы, включая расчет прав доступа. После выполнения этой команды некорректные идентификаторы объектов метаданных будут исправлены, и проблема с доступом должна уйти.
После завершения процедуры не забудьте удалить этот параметр запуска из настроек в конфигураторе, чтобы он не выполнялся при каждом старте базы.