В процессе работы в 1С пользователи и администраторы могут столкнуться со сбоем при выполнении серверных вызовов или отчетов. Текст ошибки в журнале регистрации или всплывающем окне выглядит следующим образом:
{ОбщийМодуль.ДокументооборотСКОВызовСервера.Модуль(176)}: Ошибка при вызове метода контекста (Выполнить)
Если Запрос.Выполнить().Пустой() Тогда
по причине:
Ошибка выполнения запроса
по причине:
Ошибка в ограничении доступа к данным.
объект: 'Справочник.Организации', поле: 'УчетнаяЗаписьОбмена'; право: 'Чтение'
{(26, 71)}: Неверные параметры "Перечисление.ВидыОбъектовДоступа.Организации"
И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
Рассмотрим подробно причины возникновения этой проблемы и разберем по шагам действенные способы её устранения.
Проанализируем структуру текста ошибки. Сбой происходит на уровне RLS (Record Level Security) — механизма ограничения прав доступа на уровне записей. Платформа 1С пытается применить шаблон RLS для объекта Справочник.Организации при проверке права Чтение на поле УчетнаяЗаписьОбмена.
Основные причины такой ошибки:
ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации). В современных конфигурациях на базе Библиотеки Стандартных Подсистем (БСП) перечисления и структуры доступа могли измениться.Самый быстрый и надежный вариант решения проблемы в административном режиме — привести состав ролей и профилей проблемного пользователя в соответствие с учетной записью, у которой данная ошибка не возникает.
Разберем порядок действий:
Если проблему необходимо решить без пересоздания пользователя, проанализируем роли, назначенные учетной записи:
Перечисление.ВидыОбъектовДоступа.Организации, и снимем с неё флаг.В случаях, когда роли назначены верно, но платформенный кэш содержит устаревшие данные метаданных, выполним очистку кэша 1С:
/ClearCache.Если вы разрабатываете собственную конфигурацию или расширение и ошибка возникают при чтении служебных данных обмена (например, в модуле ДокументооборотСКОВызовСервера), выполнение запроса можно обернуть в привилегированный режим. Это позволит отключить RLS-проверки на время выполнения служебного алгоритма:
УстановитьПривилегированныйРежим(Истина);
Если Не Запрос.Выполнить().Пустой() Тогда
// Обработка полученных данных обмена
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
Важно: Использовать привилегированный режим следует только для служебных алгоритмов, когда вы уверены в безопасности исполняемого кода и отсутствии рисков несанкционированного доступа к конфиденциальным данным.