Как исправить ошибку «Нарушение прав доступа» и пустые списки документов после обновления 1С:Документооборот до версии 3.0.20.21?

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

После обновления конфигурации 1С:Документооборот (1С:ДО) КОРП или ДГУ с более старых версий (например, 3.0.17.x) на версию 3.0.20.21 (и последующие релизы этой ветки) системные администраторы и аналитики часто сталкиваются с критической проблемой. Пользователи без административных прав перестают видеть свои задачи и документы в списках — задача решается через инструмент централизованной настройки доступа в 1С:ДО 3.0. При этом счетчики (например, количество новых задач в разделе «Задачи мне») исправно показывают новые элементы, но сами списки остаются абсолютно пустыми. Под правами администратора все документы и задачи отображаются корректно.

В журнале регистрации при этом фиксируется ошибка следующего вида:


Ошибка при вызове метода контекста (Выполнить)
{ОбщийМодуль.ОбщегоНазначения.Модуль(617)}:Выборка = Запрос.Выполнить().Выбрать();
...
{ОбщийМодуль.ДействияСервер.Модуль(1812)}:ВидОбъекта = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Предмет, "ВидДокумента");
...
{РегистрСведений.МоиДокументы.Форма.ФормаМоиДокументы.Форма(1373)}:ОбзорСпискаДокументовКлиент.ОбновитьМиникарточку(ЭтотОбъект);
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.
[НарушениеПравДоступа]

Давайте подробно разберем, почему возникает эта ошибка, и рассмотрим пошаговые сценарии ее решения.

Выясняем техническую причину сбоя

Для начала проанализируем, что происходит в системе в момент возникновения ошибки. При активации строки в списке документов интерфейс программы пытается обновить так называемую миникарточку (панель предварительного просмотра) с помощью вызова функции ОбзорСпискаДокументовКлиент.ОбновитьМиникарточку(). Чтобы заполнить данные на этой панели, система обращается к серверной функции для получения реквизитов документа (например, проверки, подписан ли документ, каков его вид и т.д.).

Для этого используется стандартная функция БСП ОбщегоНазначения.ЗначениеРеквизитаОбъекта(). Если у пользователя на уровне СУБД (механизм RLS — Row Level Security) в данный момент отсутствуют права на чтение конкретного документа или задачи, то этот запрос вызывает исключение базы данных НарушениеПравДоступа — для диагностики таких случаев есть детальный анализ прав пользователей и RLS. Из-за жесткого падения этого запроса ломается построение всего динамического списка, и пользователь видит пустой экран вместо своих данных.

Почему же у пользователя «пропадают» права, которые у него точно были до обновления? Для расследования таких инцидентов подойдёт анализ прав доступа и RLS по объектам. В версии 1С:ДО 3.0.20 разработчики внедрили масштабные оптимизации механизмов расчета прав доступа и дескрипторов. Права доступа теперь рассчитываются в отложенном режиме через специальные очереди. Если после обновления эти очереди не были обработаны до конца, пользователи временно теряют видимость всех объектов.

Рассмотрим два основных метода решения этой проблемы.

Решение 1. Полное обновление прав через регламентные задания (Основной метод)

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

Выполним следующие шаги для принудительного и полного пересчета прав:

  1. Зайдем в систему под пользователем с правами Администратора.
  2. Перейдем в раздел НСИ и администрирование — Обслуживание — Регламентные операции — Регламентные и фоновые задания.
  3. Найдем в списке и поочередно запустим (кнопкой Выполнить сейчас) следующие регламентные задания:
    • Очередь обновления прав доступа — обрабатывает накопившиеся изменения в правах;
    • Долгая очередь обновления кэширующих данных — выполняет тяжелые расчеты связей и дескрипторов;
    • Обновление прав доступа (оперативное) — быстро распределяет оперативные права;
    • Обновление прав доступа (долгое) — выполняет фоновый пересчет масштабных изменений прав;
    • Управление правами доступа — координирует общие настройки политик безопасности.
  4. Дождемся полного завершения всех этих заданий. Состояние выполнения можно отслеживать в этой же форме регламентных заданий (колонки «Состояние» и «Дата окончания»). В крупных базах данных этот процесс может занять существенное время (от нескольких минут до нескольких часов).
  5. После завершения всех заданий попросим тестового пользователя перезапустить сеанс или обновить рабочую страницу (клавишей F5). Доступ к документам и задачам должен полностью восстановиться.

Решение 2. Устранение конфликта синхронизации с 1С:ERP (При бесшовной интеграции)

Если регламентные задания выполнены, но у некоторых сотрудников права все равно пропадают или слетают снова, проанализируем архитектурную особенность интеграции версии 3.0.20 — проблему решит модуль интеграции 1С:ERP с 1С:Документооборот 3.0. В этом релизе появился новый механизм загрузки сотрудников при несовпадении регламентированной структуры подразделений учетной системы (например, 1С:ERP или 1С:Комплексная автоматизация) и управленческой структуры 1С:Документооборота.

Выясним, как этот механизм может скрыто ломать права пользователей:

  1. Если в настройках бесшовной интеграции (раздел Настройка бесшовной интеграции) в блоке сопоставления Поля для поиска сотрудников установлены все флажки (включая сопоставление по подразделению и должности), то при любой синхронизации данных ДО пытается жестко сопоставить сотрудника.
  2. Если в ERP у сотрудника указано регламентированное подразделение, название которого незначительно отличается от названия его управленческого подразделения в ДО, система считает это подразделение новым.
  3. 1С:ДО автоматически создает это новое подразделение и помещает его в корень справочника Структура предприятия.
  4. Сотрудник автоматически переносится в это новое корневое подразделение.
  5. Поскольку права в 1С:ДО 3.0 жестко завязаны на иерархию подразделений структуры предприятия (настройки прав наследуются «сверху вниз»), при таком переносе у пользователя моментально аннулируются все права на старые документы и задачи, закрепленные за его прежним отделом.

Для исправления этой ситуации без привлечения программиста выполним следующие действия:

  1. Перейдем в справочник Сотрудники и подразделения в 1С:ДО и проверим, не появились ли в корне структуры новые дублирующие подразделения, созданные интеграцией.
  2. Если такие подразделения обнаружены, перенесем их на нужный уровень иерархии (внутрь структуры предприятия, где настроены права) либо вернем карточки пользователей в их исходные корректные подразделения.
  3. В настройках бесшовной интеграции на стороне 1С:ДО временно снимем флажок поиска по Подразделению в критериях поиска сотрудников, чтобы избежать хаотичного автоматического перемещения пользователей в будущем.
  4. Дождемся обновления вашей системы ERP до версий, поддерживающих корректные новые механизмы обмена сотрудниками (например, ERP версии 2.5.27 и выше).

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

← На главную