Что делать, если при включении RLS в 1С:Бухгалтерии пользователь не видит проводки (Дт/Кт) и ОСВ формируется пустой?

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

Настройка ограничения доступа на уровне записей (RLS) — одна из наиболее востребованных задач в крупных компаниях, имеющих филиальную структуру. В конфигурации «1С:Бухгалтерия предприятия КОРП» (редакция 3.0) для этого предусмотрен стандартный механизм разделения по организациям. Однако на практике системные администраторы и программисты часто сталкиваются с неприятной ситуацией: после включения флажка «Ограничивать доступ на уровне записей» и настройки групп доступа пользователи начинают видеть только «свои» документы, но при попытке открыть их движения (проводки Дт/Кт) получают ошибку «Недостаточно прав», а Оборотно-сальдовая ведомость (ОСВ) формируется абсолютно пустой.

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

Почему возникает эта проблема: разбираемся в механизмах БСП

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

В старых версиях платформы при каждом обращении к базе данных система динамически дописывала сложные SQL-условия к запросам пользователей, что приводило к критическому снижению производительности СУБД. В производительном режиме логика кардинально изменилась:

Если вы только что включили галку ограничения доступа или изменили настройки профилей групп доступа, старые ключи аннулируются, а новые еще не рассчитаны. В этот переходный момент система считает, что у пользователя «нулевые» права на регистры. Как результат — документы видны (так как для них ключи могли успеть обновиться), а вот детальные движения по регистрам бухгалтерии заблокированы. Отсюда пустая ОСВ и ошибки при открытии Дт/Кт.

Шаг 1. Локализация проблемы с помощью Журнала регистрации

Прежде чем приступать к активным действиям, нам необходимо точно выяснить, на какой именно объект метаданных не хватает прав пользователю. Для этого выполним простую диагностику:

  1. Попросим пользователя воспроизвести ошибку (например, нажать на кнопку Дт/Кт в документе реализации).
  2. Откроем Журнал регистрации под учетной записью с административными правами (перейдем в меню Администрирование — Журнал регистрации).
  3. Установим отбор по событию Отказ в доступе и найдем последнюю запись.
  4. Проанализируем поле метаданных в записи отказа. Как правило, там будет указан регистр бухгалтерии РегистрБухгалтерии.Хозрасчетный или вспомогательные регистры сведений, связанные с ключами доступа.

Если мы убедились, что права отсутствуют именно из-за некорректной работы механизма RLS, перейдем к методам исправления ситуации.

Способ 1. Принудительное обновление информационной базы (Самый надежный способ)

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

Рассмотрим по шагам, как это сделать:

  1. Убедимся, что в базе нет активных пользователей (требуется монопольный режим).
  2. Запустим утилиту выполнения команд или создадим ярлык для запуска 1С:Предприятия.
  3. В параметрах запуска укажем ключ /c ЗапуститьОбновлениеИнформационнойБазы.

Пример командной строки для файловой базы данных:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /F "C:\MyBases\AccountingCorp" /N "Администратор" /P "ПарольАдмина" /C ЗапуститьОбновлениеИнформационнойБазы

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

Способ 2. Очистка кэша метаданных

Иногда причиной сбоя работы механизмов RLS становится некорректное кэширование структуры метаданных на стороне клиента или сервера (особенно часто это проявляется после динамического обновления конфигурации).

Для устранения этой проблемы запустим тонкий или толстый клиент 1С с ключом очистки кэша:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /F "C:\MyBases\AccountingCorp" /ClearCache

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

Способ 3. Использование встроенных инструментов БСП в режиме Предприятия

Если у вас нет возможности монопольно заблокировать базу для запуска обновления, мы можем воспользоваться специализированными административными обработками, встроенными в Библиотеку стандартных подсистем.

Выполним следующие действия:

  1. Перейдем в раздел Администрирование — Обслуживание — Регламентные операции.
  2. Найдем регламентные задания Заполнение данных для ограничения доступа и Обновление ключей доступа к данным.
  3. Если они выключены (что часто бывает в базах-копиях из-за блокировки фоновых заданий), включим их и дождемся завершения выполнения.
  4. Если регламентные задания завершаются с ошибками, воспользуемся специализированной обработкой «Обновление вспомогательных данных» (ее можно открыть через функции для технического специалиста или запустить из состава инструментов разработчика БСП). В ней выберем обновление регистров прав доступа и нажмем кнопку запуска.

Дополнительные неочевидные причины пустой ОСВ

Если вы выполнили все вышеперечисленные процедуры обновления вспомогательных данных, но проводки по-прежнему недоступны, рассмотрим еще несколько возможных причин:

1. Наличие пустых значений организаций в проводках

В некоторых операциях (например, при ручных корректировках или переносе данных) поле Организация в регистре бухгалтерии может оказаться незаполненным (содержать пустую ссылку или значение NULL). Стандартные шаблоны RLS блокируют отображение таких записей для всех пользователей, кроме администраторов с полными правами. В кастомных шаблонах RLS обязательно проверяйте обработку пустых ссылок:


ГДЕ Организация В (&ДоступныеОрганизации)
    ИЛИ Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
    ИЛИ Организация ЕСТЬ NULL

2. Назначение нескольких конфликтующих RLS-ролей одному пользователю

Если вы назначили пользователю несколько профилей групп доступа, содержащих разные RLS-ограничения на один и тот же регистр бухгалтерии, платформа будет объединять условия по правилу «ИЛИ». В результате формируется крайне сложный SQL-запрос к СУБД, который может приводить к ошибкам выполнения запроса или таймаутам на сервере. Постарайтесь минимизировать количество пересекающихся ограничений у одного физического лица.

3. Использование прямых запросов без ключевого слова РАЗРЕШЕННЫЕ

Если в вашей конфигурации используются расширения или доработки, которые обращаются к проводкам документов напрямую, убедитесь, что в текстах запросов используется ключевое слово РАЗРЕШЕННЫЕ. Без него любой запрос к регистру бухгалтерии, содержащий хотя бы одну строку по чужой (недоступной пользователю) организации, вернет системную ошибку нехватки прав.

Пример корректного запроса:


ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ХозрасчетныйДвижения.Субконто1,
    ХозрасчетныйДвижения.Сумма
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачалоПериода, &КонецПериода, , , ) КАК ХозрасчетныйДвижения

Резюме

Проблема с пустой ОСВ и недоступностью проводок при включенном RLS почти всегда связана с неактуальностью или повреждением ключей доступа в служебных регистрах БСП. Оптимальным и самым быстрым решением является принудительный запуск базы с параметром /c ЗапуститьОбновлениеИнформационнойБазы, который гарантированно пересчитывает права доступа и восстанавливает корректную работу пользователей.

← На главную