При переходе на новые версии конфигураций «1С:Управление торговлей 11.5», «1С:ERP 2.5» или «1С:Комплексная автоматизация 2.5» администраторы и разработчики часто сталкиваются с неприятной ситуацией: пользователи без полных прав видят пустые списки в общих журналах документов (например, «Документы продажи (все)», «Чеки ККМ», «Документы закупки»). При этом сами документы физически существуют в базе, их можно открыть по прямой ссылке или из специализированных списков (например, из списка только «Реализаций»), а пользователи с полными правами видят всё без ограничений. Чтобы сделать работу со списками более информативной, можно использовать расширение для просмотра прикрепленных файлов непосредственно в формах журналов. Проанализируем ситуацию и разберем по шагам, почему это происходит и как вернуть данные в журналы.
В современных версиях программ на базе БСП (Библиотеки стандартных подсистем) используется оптимизированный механизм ограничения доступа на уровне записей — так называемый «производительный» режим RLS. В отличие от старого метода, когда SQL-запрос динамически дополнялся условиями при каждом обращении, новый метод использует заранее рассчитанные «Ключи доступа».
Выясним причину проблемы: если механизм расчета ключей доступа дал сбой или регламентные задания по обновлению этих ключей не завершились, система «считает», что у пользователя нет прав ни на одну запись в журнале. Поскольку полные права игнорируют проверки RLS, администраторы проблему не замечают. В сложных ситуациях может потребоваться точечный пересчет прав доступа для пользователя или группы пользователей, чтобы форсировать обновление данных. Для этой задачи есть анализ прав доступа и ограничений RLS.
Для решения этой проблемы рассмотрим алгоритм действий:
Иногда автоматическое обновление не срабатывает из-за ошибок в фоновых заданиях. Мы можем запустить этот процесс вручную. Для этого проанализируем состояние регистров сведений.
Рассмотрим порядок действий через стандартные функции:
Обновление ключей доступа к данным.Также полезно проверить справочник Ключи доступа и регистры Ключи доступа к объектам. Если они пусты для конкретных видов документов, журналы будут отображаться некорректно.
В платформе 8.3.18 и выше появился новый режим реструктуризации базы данных — V2. Он значительно ускоряет процесс обновления конфигурации (в некоторых случаях в 10–15 раз), но имеет свои особенности. Разберем кейс, когда именно использование V2 приводило к потере записей в таблицах журналов.
Проанализируем ситуацию: общие журналы в 1С (объекты типа ЖурналДокументов) имеют свои физические таблицы в СУБД, куда данные попадают при записи документов. Чтобы понять, как данные распределены на уровне СУБД, можно использовать инструмент анализа структуры хранения базы данных. При обновлении в режиме V2 индексация или заполнение этих вспомогательных таблиц может пройти с ошибками.
Если вы столкнулись с этой проблемой после обновления, рассмотрим следующий метод «лечения»:
ЖурналДокументов (например, добавим и сразу удалим графу или изменим состав документов).Часто программисты путают права Чтение и Просмотр. Для того чтобы документ отобразился в динамическом списке (которым является журнал), пользователю обязательно должно быть назначено право Просмотр. Для детальной диагностики в этом случае пригодится специальная обработка для анализа прав доступа к объекту.
Проанализируем роль пользователя:
Просмотр не только на сам документ, но и на Журнал документов как объект метаданных.БазовыеПраваБСП в расширение и установка прав на чтение объектов конфигурации, которые связаны с вашими документами через реквизиты.Чтобы окончательно выяснить, виноваты ли права (RLS) или настройки формы, выполним контрольный замер. Зайдем в базу под «проблемным» пользователем и запустим совместимую консоль запросов.
Попробуем выполнить следующий запрос к журналу продаж:
ВЫБРАТЬ ПЕРВЫЕ 100
Журнал.Ссылка,
Журнал.Дата,
Журнал.Номер
ИЗ
ЖурналДокументов.Продажи КАК Журнал
ГДЕ
Журнал.Дата >= &НачалоПериода
Проанализируем результат:
ЖурналДокументов или его составляющие.В некоторых случаях, особенно после перехода с 11.4 на 11.5, помогает простая перезапись документов. Это инициирует обновление записей в регистре РегистрСведений.ЖурналДокументов (или аналогичном системном регистре, на котором строится список). Не обязательно отменять проведение, достаточно программно вызвать метод Записать(РежимЗаписиДокумента.Запись) для выборки документов за проблемный период.
Рассмотрим пример кода для исправления ситуации программно:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Проведен";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Записать(РежимЗаписиДокумента.Запись); // Обновляет записи в журналах и ключи RLS
КонецЦикла;
Подведем итог: проблема пустых журналов в УТ 11.5 чаще всего носит инфраструктурный характер и связана с механизмом RLS. Начните с обновления ключей доступа через настройки прав, и в 90% случаев это решит вашу задачу без изменения программного кода.