В современных конфигурациях на базе 1С:ERP и «1С:Комплексная автоматизация» администраторы и разработчики часто сталкиваются с парадоксальной ситуацией: пользователь имеет все необходимые права, может открыть конкретный документ по прямой ссылке, но при этом в общем списке (реестре документов) этот же документ не отображается. Особенно остро эта проблема проявляется в журнале безналичных платежей и банковских операций.
Давайте подробно разберем, как устроен этот механизм, почему происходят сбои и какими методами можно восстановить видимость данных. Проанализируем ситуацию комплексно: от настроек профилей до особенностей платформенных запросов.
Прежде всего, нам необходимо понять, что реестр документов в ERP — это не просто динамический список, работающий напрямую с таблицами документов. Для повышения производительности система использует механизм «Ключей доступа». Суть его заключается в том, что права рассчитываются не в момент открытия списка, а заранее — при записи документа или изменении прав пользователя.
Рассмотрим основные объекты, участвующие в этом процессе:
КлючиДоступа — содержит уникальные комбинации настроек доступа.КлючиДоступаКОбъектам — связывает конкретный документ с его ключом доступа.КлючиДоступаПользователей — определяет, к каким ключам доступа есть права у конкретного сотрудника.Если документ открывается по ссылке, значит, проверка права Чтение непосредственно для объекта метаданных проходит успешно. Однако, если его нет в списке, это сигнализирует о разрыве связи в цепочке ключей доступа. Проанализируем, где именно может «спотыкаться» система.
Первым делом нам стоит проверить работу регламентных процедур. В 1С:ERP существует фоновое задание ОбновлениеКлючейДоступа. Если оно завершилось с ошибкой или было остановлено, новые документы или изменения в правах не отразятся в реестрах.
Для исправления ситуации выполним следующие шаги:
Обновление ключей доступа и убедимся, что оно выполняется без ошибок.
// Пример вызова обновления ключей доступа для конкретного объекта через программный интерфейс БСП
УправлениеДоступомСлужебный.ОбновитьКлючиДоступаДляОбъекта(СсылкаНаДокумент);
Как показывает практика и обсуждения экспертов, проблема часто кроется глубже — на уровне взаимодействия платформы 1С и системы управления базами данных. Особенно это актуально для платформы версии 8.3.24 и выше в связке с PostgreSQL.
Выясним причину: в новых версиях платформы были внедрены изменения в оптимизатор запросов SDBL. При формировании сложных запросов с использованием шаблонов RLS (особенно тех, что задействуют регистр КлючиДоступаКРееструДокументов), платформа может некорректно «раскрывать» скобки в условиях ГДЕ. В результате логическое выражение, которое должно возвращать ИСТИНА для доступа, ошибочно возвращает ЛОЖЬ.
Проанализируем пример логики запроса RLS, в котором может возникать ошибка:
ВЫБРАТЬ * ИЗ Документ.ПоступлениеБезналичныхДенежныхСредств ГДЕ
(
Условие1 И Условие2
)
ГДЕ (Условие3)
Где Условие1 проверяет наличие группы доступа, а Условие3 — конкретные значения организации. Если вы столкнулись с подобным поведением, рекомендуется временно переключить режим работы RLS.
Рассмотрим вариант обхода проблемы через настройки системы. В ERP существует два режима работы ограничений доступа на уровне записей:
Для диагностики и временного решения выполним следующее:
Если после переключения документы появились в реестре, значит, проблема однозначно в механизме ключей доступа или платформенном баге их обработки. Если же документы всё равно не видны — нужно копать в сторону самих ролей и ограничений в профиле.
Иногда нюанс кроется в специфических правах на интерфейсные объекты. Для банковских операций в ERP используется обработка Обработка.ЖурналДокументовБезналичныеПлатежи. У пользователя должна быть активна не только роль на чтение документов (например, ЧтениеДокументовПоБанку), но и права на саму эту обработку. Детально разобраться в хитросплетениях прав бывает непросто, поэтому для облегчения задачи существуют специальные инструменты, позволяющие выполнить как общий анализ прав пользователей, ролей и профилей, так и анализ прав доступа к конкретному объекту. Если же проблема проявляется только у одного из нескольких сотрудников с, казалось бы, одинаковыми правами, будет полезно провести детальное сравнение их ролей.
Разберем, на что обратить внимание в профиле групп доступа:
ЧтениеДокументовПоБанку.Ключи реестра документов. Дубли записей могут приводить к тому, что выборка из списка будет возвращать пустой результат из-за внутренней ошибки СУБД при наложении условий.Чтобы окончательно убедиться, где «спотыкается» запрос, мы можем прогнать текст запроса из динамического списка под проблемным пользователем в консоли запросов. Как альтернативный способ проверки, можно попробовать найти документ в универсальном журнале документов, который часто имеет более простые механизмы отбора. Если же требуется глубокий анализ, рассмотрим метод с консолью:
Обработка.ЖурналДокументовБезналичныеПлатежи.В тексте запроса RLS попробуйте последовательно заменять части условий на ИСТИНА. Если при замене условия по ключам доступа данные появляются, значит, требуется обновление платформы до исправленного релиза, где устранена ошибка оптимизатора SDBL (версии выше 8.3.24.1300+ часто содержат нужные патчи).
Мы проанализировали ситуацию, когда банковские документы «исчезают» из реестра 1С:ERP. Подведем итог нашим действиям:
Эти шаги позволят вам эффективно диагностировать и устранить невидимость документов, обеспечив корректную работу пользователей в системе 1С:ERP.