Часто администраторы и разработчики 1С сталкиваются с загадочным поведением системы в современных конфигурациях, таких как «1С:ERP Управление предприятием», «1С:Комплексная автоматизация» или «1С:Управление торговлей». Представьте ситуацию: вы создали или настроили роль для пользователя, добавив права на чтение и просмотр документов ОприходованиеИзлишковТоваров и ПересортицаТоваров. Пользователь запускает программу, переходит в рабочее место «Склад и доставка» — «Внутренние документы (все)», но список оказывается пуст! При этом под полными правами все документы видны, а сам пользователь может без проблем найти и открыть их через меню «Функции для технического специалиста» (ранее «Все функции»).
В этой статье мы подробно разберем, почему возникает эта проблема, как устроена архитектура журналов документов в современных ERP-системах и какие шаги необходимо предпринять для восстановления видимости документов у пользователя.
Давайте проанализируем, почему возникает такое расхождение между видимостью документов напрямую и в общем списке. Обычные журналы документов в старых конфигурациях обращались напрямую к таблицам базы данных. В современных ERP-решениях объемы данных колоссальны, и прямое обращение к десяткам различных тяжелых таблиц документов в рамках одного динамического списка привело бы к критическому снижению производительности системы.
Чтобы решить эту проблему, разработчики фирмы «1С» внедрили оптимизационный механизм. Рабочее место «Внутренние документы (все)» представляет собой сложную обработку-журнал. В качестве источника данных для динамического списка она использует не таблицы самих документов ОприходованиеИзлишковТоваров и ПересортицаТоваров, а специальный вспомогательный регистр сведений — РегистрСведений.РеестрДокументов.
При записи или проведении любого складского документа система автоматически делает запись в этот регистр сведений, сохраняя там ключевые реквизиты: дату, номер, организацию, склад (в регистре это измерение МестоХранения), сумму и ссылку на сам документ. Журнал отображает данные именно из этого реестра. Соответственно, если у пользователя нет прав на чтение или просмотр данного регистра, либо наложены ограничения RLS, документы в журнале отображаться не будут, хотя физически они существуют и доступны по прямой ссылке.
Рассмотрим по шагам, как локализовать и устранить эту проблему.
Выясним, действительно ли дело в журнале или у пользователя в принципе отсутствуют права доступа на сами документы. Для этого выполним следующие действия:
Оприходование излишков товаров или Пересортица товаров и откроем стандартный список.Если в открывшемся окне документы отображаются, открываются и создаются, значит, права на сами объекты метаданных настроены корректно. Проблема кроется на уровне интерфейсного журнала и регистра Реестр документов.
Иногда решение бывает самым простым. Прежде чем переходить к конфигуратору, проверим пользовательские настройки рабочего места «Внутренние документы (все)»:
Оприходование излишков и Пересортица товаров. Если эти флажки были случайно сняты, документы будут скрыты из формы динамического списка, несмотря на любые полные права.Перейдем к технической стороне настройки ролей в Конфигураторе. Для вывода данных в динамические списки платформе 1С:Предприятие критически важно наличие не просто права Чтение, но и права Просмотр как для самого регистра сведений РегистрСведений.РеестрДокументов, так и для типов данных, которые входят в состав его измерений.
Разберем, как проверить и настроить роли:
ЧтениеСкладскихАктов).Регистры сведений -> РеестрДокументов.Чтение и Просмотр.ОприходованиеИзлишковТоваров и ПересортицаТоваров.Обратите внимание на измерение Ссылка в регистре реестра — оно имеет составной тип данных. Если у пользователя нет права на просмотр хотя бы одного из типов документов, входящих в это измерение, динамический список может отработать некорректно и скрыть строки.
Для программной проверки доступности данных из реестра под пользователем можно запустить следующий запрос:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Реестр.Ссылка КАК ДокументСсылка,
| Реестр.Период КАК Дата,
| Реестр.Номер КАК Номер,
| Реестр.Организация КАК Организация,
| Реестр.МестоХранения КАК Склад
|ИЗ
| РегистрСведений.РеестрДокументов КАК Реестр
|ГДЕ
| Реестр.ТипСсылки = &ТипОприходование ИЛИ Реестр.ТипСсылки = &ТипПересортица";
Запрос.УстановитьПараметр("ТипОприходование", Тип("ДокументСсылка.ОприходованиеИзлишковТоваров"));
Запрос.УстановитьПараметр("ТипПересортица", Тип("ДокументСсылка.ПересортицаТоваров"));
Выборка = Запрос.Выполнить().Выбрать();
Если при выполнении этого кода под правами пользователя выборка оказывается пустой (хотя документы в базе есть), проблема гарантированно заключается в правах доступа к регистру реестра или механизмах RLS.
В типовых конфигурациях 1С на регистр РегистрСведений.РеестрДокументов наложено комплексное ограничение доступа на уровне записей (обычно через шаблон #ПоЗначениямРасширенный). Система проверяет права доступа по нескольким разрезам:
МестоХранения);Если у пользователя в его Группе доступа (Профиле групп доступа) установлены ограничения (например, разрешен доступ только к «Складу №1», а документы оприходования или пересортицы оформлены по «Складу №2»), то RLS на уровне регистра Реестр документов полностью скроет эти записи в общем журнале. При этом напрямую через функции для технического специалиста документ может оставаться доступным для просмотра, так как стандартный список документа обращается к другой таблице БД с иными правилами RLS.
Решение: Проанализируйте настройки групп доступа и профилей пользователя. Убедитесь, что у него есть доступ к тем складам и организациям, которые указаны в «невидимых» документах.
Иногда физические записи по документам просто отсутствуют в регистре Реестр документов. Это часто происходит после группового изменения реквизитов сторонними обработками, сбоев при обновлении базы, переноса данных или некорректного импорта.
Выясним, действительно ли дело в рассинхронизации. Для этого проведем точечный эксперимент:
Если после перепроведения документ стал виден, это подтверждает рассинхронизацию регистра реестра. Для массового исправления ситуации в системе предусмотрен штатный инструмент:
РегистрСведений.РеестрДокументов.Используя предложенный алгоритм диагностики и исправления, мы сможем быстро вернуть пользователям доступ к нужным складским актам и настроить корректное отображение документов в интерфейсе системы.