Почему в 1С:Документооборот 2.1 при удалении помеченных объектов под администратором возникает ошибка прав доступа с GUID?

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

При работе в системе 1С:Документооборот 2.1 администраторы часто сталкиваются с ситуацией, когда стандартная процедура удаления помеченных объектов завершается аварийно. Вместо привычного списка связей или успешного удаления система выдает лаконичное сообщение об ошибке прав доступа, сопровождая его непонятным набором символов — GUID (уникальным идентификатором). Ситуация кажется парадоксальной: как у пользователя с ролью ПолныеПрава может не хватать прав на выполнение операции?

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

Разберем причину появления GUID вместо имени объекта

Когда мы видим в тексте ошибки или в Журнале регистрации нечто вроде 779f67a2-723a-48d6-950e-5a5f1e31d4e1, это верный признак того, что платформа 1С не смогла сопоставить внутренний идентификатор метаданных с их человекочитаемым представлением. Проанализируем основные причины, почему это происходит:

  1. Объекты добавлены через расширение. Это самая частая причина в современных версиях 1С. Если объект метаданных (справочник, документ или даже реквизит) находится в расширении, а у текущего пользователя нет на него прав, Журнал регистрации и системные сообщения об ошибках часто не могут корректно отобразить его имя, ограничиваясь выводом GUID.
  2. Отсутствие прав в расширении для роли Полные права. Многие разработчики забывают, что роль ПолныеПрава в основной конфигурации не дает автоматического доступа к объектам расширения. В самом расширении должна быть либо своя роль с правами на эти объекты, либо необходимо добавить эти объекты в заимствованную роль ПолныеПрава внутри расширения.
  3. Удаление метаданных. Если из расширения или конфигурации был физически удален объект, но в базе остались ссылки на него или записи в таблицах прав, система будет видеть идентификатор, которого уже нет в описании конфигурации.

Шаг 1: Анализ расширений и прав доступа

Рассмотрим ситуацию, описанную в теме: администратор пытается удалить лишних контрагентов, но процесс прерывается. Выясним причину, проверив расширения конфигурации. Если в вашей базе установлены расширения, первым делом необходимо проанализировать права доступа именно там.

Проанализируем алгоритм проверки:

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

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

Шаг 2: Использование отладки для поиска виновника

Если визуальный осмотр расширений не помог, воспользуемся инструментами разработчика. Чтобы точно понять, на каком объекте «спотыкается» система, мы можем настроить отладку фоновых заданий, так как удаление помеченных объектов в 1С 8.3 обычно выполняется в фоновом режиме.

Рассмотрим порядок действий:

  1. Включим возможность отладки фоновых заданий в настройках отладчика.
  2. Установим параметр «Остановка при ошибке».
  3. Запустим удаление помеченных.
  4. При возникновении исключения конфигуратор остановится на строке кода, где происходит обращение к объекту. Исследовав переменную Ссылка или Объект, мы сможем увидеть тип данных, вызывающий проблему.

Если отладка в фоновом задании затруднена, попробуем запустить удаление через внешнюю обработку, которая работает в сеансе пользователя (интерактивно), а не в фоне. Это позволит поймать ошибку обычным прерыванием.

Шаг 3: Специфика «1С:Документооборот 2.1» и RLS

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

Посмотрим на возможные скрытые связи:

В этом случае решением может быть временное отключение RLS для администратора или запуск удаления в режиме УстановитьПривилегированныйРежим(Истина) через консоль кода.

Шаг 4: Как найти объект по GUID вручную

Если система упорно выдает GUID, мы можем выяснить, что это за объект, выполнив простой запрос в консоли запросов. Рассмотрим пример кода, который поможет определить тип объекта по его идентификатору:


// Пример поиска типа объекта по GUID в консоли кода
Идентификатор = "779f67a2-723a-48d6-950e-5a5f1e31d4e1"; // GUID из ошибки
Для Каждого Метаданное Из Метаданные.Справочники Цикл
    Ссылка = Справочники[Метаданное.Имя].ПолучитьСсылку(Новый УникальныйИдентификатор(Идентификатор));
    Попытка
        Если Ссылка.ПолучитьОбъект() <> Неопределено Тогда
            Сообщить("Это справочник: " + Метаданное.Имя);
            Прервать;
        КонецЕсли;
    Исключение
        // Игнорируем ошибки поиска
    КонецПопытки;
КонецЦикла;

Чаще всего ошибка прав возникает не на сам удаляемый объект, а на запись в Регистре Сведений или Регистре Накопления, которая ссылается на этот объект. Проверьте права на регистры, добавленные в расширениях.

Шаг 5: Альтернативные способы удаления

Если стандартная обработка «Удаление помеченных объектов» в интерфейсе «Документооборота» не справляется, рекомендуем использовать альтернативные методы:

  1. Стандартная обработка «Удаление объектов» из состава БСП. Ее можно найти через «Функции для технического специалиста». Она часто работает более корректно с точки зрения отображения ошибок.
  2. Тестирование и исправление (ТиИ). Хотя автор темы указывал, что ТиИ не нашло ошибок, в некоторых случаях стоит запустить его повторно с установленной галочкой «Проверка логической целостности» и «Очищать ссылки» для удаления «битых» записей, которые могут генерировать GUID-ошибки.
  3. Очистка кэша сервера. Иногда сервер 1С хранит устаревшее описание метаданных расширения. Перезапуск службы 1С:Предприятия и очистка серверного кэша могут решить проблему «невидимых» прав.

Резюме решения

Подводя итог, можно сказать: если вы столкнулись с ошибкой прав доступа под администратором при удалении в 1С:ДО 2.1, с вероятностью 90% проблема кроется в расширении. Убедитесь, что для роли ПолныеПрава внутри каждого расширения проставлены все необходимые разрешения на добавленные в этом расширении объекты. Как только права в расширении будут синхронизированы с основной конфигурацией, GUID превратится в имя объекта, а ошибка исчезнет.

← На главную