В конфигурациях на базе «обычных форм», таких как 1С:Управление торговлей 10.3, УПП 1.3 или КА 1.1, часто возникает ситуация, когда при включении механизма ограничения доступа на уровне записей (RLS) система начинает работать крайне медленно. В некоторых случаях это доходит до полного «зависания» интерфейса при попытке записать справочник Контрагенты или провести документ. Примечательно, что под пользователем с полными правами проблема не воспроизводится. Разберем детально, почему это происходит и какие шаги необходимо предпринять для решения проблемы.
Проанализируем ситуацию: механизм RLS (Record Level Security) добавляет к каждому запросу платформы дополнительные условия фильтрации данных на уровне СУБД. Когда пользователь с ограниченными правами пытается записать объект, платформа должна проверить его права не только на сам объект, но и на все связанные данные, попадающие под ограничения (например, группы доступа контрагентов, организации и т.д.).
Рассмотрим, почему это критично именно для файлового варианта информационной базы:
НастройкаПравДоступаПользователей). Файловый движок 1С не всегда эффективно оптимизирует такие запросы.Выясним причину через анализ технологического журнала (ТЖ). Часто в логах при подобных зависаниях встречаются следующие ошибки:
Exception=DatabaseException8, Descr="Не удалось заблокировать запись. Действие (изменение, удаление или блокировка записи) не выполнено 'ACTIVEUSERS'"
Exception=9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3, Descr="Файл не обнаружен ... DynamicalWorkCache"
Проанализируем эти сообщения подробнее. Ошибка блокировки ACTIVEUSERS в файловом режиме часто является «ложным следом». На самом деле система не может обновить таблицу активных пользователей, потому что база данных «мертво» занята обработкой тяжелого запроса RLS при записи контрагента. Таймаут наступает раньше, чем завершается проверка прав.
Ошибки DynamicalWorkCache указывают на проблемы с временными файлами платформы. Это может быть следствием аварийного завершения процесса, который «завис» на RLS, или нехватки прав пользователя Windows на запись в папку AppData. Также стоит проверить, не блокирует ли антивирус доступ к этим папкам в момент интенсивной работы 1С.
Прежде чем переходить к радикальным мерам, выполним стандартную процедуру обслуживания. В файловом варианте крайне важно состояние индексов таблиц. Посмотрим, как это сделать:
Проанализируем структуру прав в самой конфигурации. В УТ 10.3 права на контрагентов часто зависят от их принадлежности к группам доступа. Если у одного контрагента указано слишком много групп или у пользователя включено множество противоречивых ограничений, запрос проверки прав становится «неподъемным» для файловой базы.
Рекомендуем проверить следующие моменты:
НастройкаПравДоступаПользователей). Удалите неактуальные записи.Если отказаться от RLS нельзя, а база остается файловой, проанализируем аппаратную часть. Скорость работы RLS в файловом режиме напрямую коррелирует со скоростью дисковых операций I/O.
%AppData%\1C) в исключения антивируса. Это предотвратит блокировку временных файлов DynamicalWorkCache.%AppData%\1C\1Cv8\.Как показывает практика и обсуждения экспертов, файловая версия и RLS — это архитектурно несовместимые вещи для стабильной многопользовательской работы. Рассмотрим преимущества перехода на SQL:
ACTIVEUSERS или повреждение заголовка файла базы (1Cv8.1CD) в серверном варианте практически исключены.Если переход на SQL невозможен по бюджетным соображениям, разберем другие способы решения задачи разделения доступа по организациям:
ПередЗаписью или ПриОткрытии). Это требует навыков программирования, но позволяет избежать тяжелых запросов на уровне СУБД.Подведем итог: если ваша УТ 10.3 начала виснуть при записи после включения RLS, в первую очередь проанализируйте возможность перехода на клиент-сервер. Если это невозможно — займитесь оптимизацией индексов, дисковой подсистемы и упрощением структуры прав доступа.