При переходе на новые версии конфигурации 1С:ERP (например, при обновлении с ветки 2.5.17 на 2.5.22) администраторы и программисты часто сталкиваются с необъяснимым поведением системы: записи в справочниках (чаще всего страдает справочник ФизическиеЛица) присутствуют в базе данных, их можно найти через консоль запросов или в режиме подбора, но они наотрез отказываются отображаться в основной форме списка. Рассмотрим подробнее, почему это происходит и как решить проблему, используя внутренние механизмы платформы.
Прежде чем приступать к активным действиям, давайте разберем типичную картину проблемы. Вы заходите в справочник, но не видите там сотрудников или контрагентов, которые точно были созданы. При этом:
ВЫБРАТЬ * ИЗ Справочник.ФизическиеЛица ГДЕ Ссылка = &Ссылка) возвращает данные — значит, на уровне СУБД всё в порядке.ПолныеПрава записи не видны.Такое поведение однозначно указывает на проблему в работе Динамического списка и его взаимодействия с механизмами оптимизации платформы 8.3.27 (и выше) и подсистемы БСП.
Разберем по шагам, каким образом полнотекстовый поиск (ППС) влияет на то, что мы видим в обычном списке. В современных версиях ERP многие формы списков используют расширенный поиск. Если в настройках включен «Полнотекстовый поиск при вводе по строке», платформа при построении динамического списка может обращаться к индексу ППС для первичной фильтрации.
Проанализируем механику: если индекс ППС поврежден, не обновлен или «слетел» после реструктуризации при обновлении, платформа делает ложный вывод. Она «считает», что раз записи нет в индексе, то её не нужно выводить в текущей выборке списка, оптимизируя таким образом поток данных. Это особенно актуально для режима RLS «Производительный», где система строит сложные временные таблицы прав, опираясь на метаданные, которые могут быть тесно связаны с проиндексированными полями.
Как показала практика, в большинстве случаев проблема решается именно через управление ППС. Рассмотрим, как правильно выполнить обслуживание индекса:
Пока выполняется переиндексация, мы можем проверить состояние регламентных заданий, которые отвечают за актуальность данных.
Проверим, работают ли в системе следующие задания:
ИзвлечениеТекста — подготавливает данные для индексации.ОбновлениеИндексаППС — актуализирует поисковую базу.ОбновлениеДанныхПослеПрограммы — это задание должно быть завершено на 100% после обновления конфигурации. Если оно зависло, ключи доступа RLS в режиме «Производительный» могут быть сформированы некорректно.Если вы обнаружили, что записи не видны именно из-за RLS, можно воспользоваться следующим кодом в обработке, чтобы принудительно пересчитать ключи доступа для конкретного объекта:
ПараметрыОбновления = ПараметрыДоступа.ПараметрыОбновления();
ПараметрыОбновления.ОбъектыДляОбновления = Новый Массив;
ПараметрыОбновления.ОбъектыДляОбновления.Добавить(НужнаяСсылка);
УправлениеДоступом.ОбновитьСпискиСУчетомИзмененийДоступа(ПараметрыОбновления);
Если манипуляции с ППС не помогли сразу, вспомним золотое правило администратора 1С: «В любой непонятной ситуации сбрасывай кэш». Посмотрим на ситуацию со стороны клиентского приложения. Платформа 8.3.27 активно кэширует представления данных.
Выполним следующие действия:
/ClearCache.ФизическиеЛица и удалим её настройки.Интересный нюанс, замеченный пользователями: если установить жесткий отбор по коду, запись появляется, а после удаления отбора — остаются и все остальные записи. Почему так происходит?
Когда мы устанавливаем отбор по конкретному полю (например, коду), платформа меняет стратегию выполнения запроса динамического списка. Она перестает полагаться на общий индекс выборки и обращается напрямую к таблице СУБД по конкретному значению. Это заставляет внутренний кэш выборки (курсор) обновиться для текущего сеанса, что временно восстанавливает видимость данных. Однако без исправления индекса ППС проблема вернется после перезапуска сеанса или очистки серверного вызова.
Подведем итог нашему исследованию. Если после обновления ERP 2.5 вы столкнулись с «исчезновением» записей в списках при их фактическом наличии в базе, придерживайтесь следующего алгоритма:
1C:Enterprise с удалением содержимого папки snccntx.Соблюдение этих шагов позволит вам быстро вернуть видимость данных и обеспечить корректную работу пользователей с информационной системой.