В практике работы с 1С:Управление нашей фирмой 3.0 встречается крайне специфическая и неприятная проблема: конкретный пользователь перестает видеть часть позиций в справочнике Номенклатура. При этом администратор видит все данные, а стандартные методы (назначение полных прав, очистка локального кэша, проверка RLS) не приносят результата. Ситуация кажется тупиковой, так как даже под полными правами «незрячий» пользователь продолжает игнорировать часть записей. Проанализируем эту ситуацию и разберем по шагам все возможные методы решения — от простых до радикальных.
Прежде чем переходить к сложным манипуляциям, рассмотрим стандартный чек-лист, который должен выполнить специалист. Если вы столкнулись с подобным поведением системы, проверим следующие пункты:
RLS и с ролью ПолныеПрава, причину нужно искать глубже.AppData/Local/1C и AppData/Roaming/1C. Это исключит проблемы с отображением форм на конкретном рабочем месте.Если эти действия не помогли, значит, мы имеем дело с нарушением логической целостности индексов или специфическим сбоем в системных таблицах базы данных.
Рассмотрим метод, который помог автору исходного обращения. Это самый радикальный, но действенный способ при «необъяснимых» глюках платформы. Выясним причину, почему это работает. При выгрузке данных в формат .dt система упаковывает только значимую информацию, а при загрузке в новую (пустую) базу данных платформа 1С:Предприятие физически пересоздает все таблицы на уровне SQL-сервера (или файловой системы), заново строит все индексы и очищает мусорные записи в системных хранилищах.
Алгоритм действий:
После этой процедуры, как правило, все пользователи начинают видеть данные корректно. Однако, если база имеет большой объем, этот процесс может занять много времени. Рассмотрим альтернативные методы.
В современных конфигурациях на базе УНФ 3.0 динамические списки часто используют механизмы полнотекстового поиска для быстрой фильтрации. Если индекс поиска поврежден, часть позиций Номенклатура может просто «выпасть» из видимости.
Проанализируем, как исправить состояние ППС:
Это заставит систему переиндексировать все справочники, включая Номенклатура, и может вернуть видимость «пропавшим» позициям.
Иногда стандартный сброс настроек через интерфейс не затрагивает глубокие записи в таблице SystemSettingsStorage. В этой таблице могут храниться состояния боковых панелей (категорий), настройки динамических списков и другие параметры. Чтобы не писать код вручную, удобно использовать готовую обработку для работы с хранилищем настроек, которая позволяет просмотреть и удалить данные в разрезе пользователей.
Для программной очистки настроек конкретного пользователя можно использовать следующий код:
ВыборкаНастроек = ХранилищеСистемныхНастроек.Выбрать();
Пока ВыборкаНастроек.Следующий() Цикл
Если ВыборкаНастроек.Пользователь = "ИмяПроблемногоПользователя" Тогда
ХранилищеСистемныхНастроек.Удалить(ВыборкаНастроек.КлючОбъекта, ВыборкаНастроек.КлючНастроек, ВыборкаНастроек.Пользователь);
КонецЕсли;
КонецЦикла;
Особое внимание обратите на Боковую панель «Категории номенклатуры». В УНФ 3.0 она напрямую влияет на фильтрацию списка. Если у пользователя в этой панели выбрана пустая категория или произошел сбой в сохранении состояния этой панели, список будет пуст, даже если визуально кажется, что фильтры не установлены.
Разберем ситуацию, когда видимость данных зависит от настроек программы. В 1С:УНФ существуют ФункциональныеОпции, такие как «Использовать несколько единиц измерения» или «Использовать характеристики». Если товар в базе помечен как использующий характеристики, а у конкретного пользователя эта опция «отвалилась», динамический список может отсекать такие записи.
Посмотрим на пример того, как проверить значения функциональных опций в отладке:
ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры").Если ваша база работает в клиент-серверном варианте, проанализируем вероятность ошибки на уровне SQL. Платформа 8.3 при формировании запроса учитывает права доступа. В редких случаях план запроса может стать некорректным. Кроме того, причиной могут быть ошибки в расширениях.
Как это лечится на уровне SQL:
Пользователи. Это создаст для системы «нового» потребителя данных.DBCC FREEPROCCACHE на стороне SQL-сервера.Почему же автору помогла именно пересборка базы? При загрузке .dt происходят критически важные вещи:
Config, Params и системные таблицы настроек.Справочник.Номенклатура, строятся с нуля, исключая любые фрагментации и «битые» ссылки.Таким образом, если вы перепробовали все методы очистки кэша и проверки прав, а Номенклатура всё еще скрыта — выгрузка в .dt и загрузка обратно в новую базу является золотым стандартом решения «мистических» проблем в 1С.