Почему пропадают записи в списке справочника «Физические лица» в 1С:ERP и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

При переходе на новые версии конфигурации 1С:ERP (например, при обновлении с ветки 2.5.17 на 2.5.22) администраторы и программисты часто сталкиваются с необъяснимым поведением системы: записи в справочниках (чаще всего страдает справочник ФизическиеЛица) присутствуют в базе данных, их можно найти через консоль запросов или в режиме подбора, но они наотрез отказываются отображаться в основной форме списка. Рассмотрим подробнее, почему это происходит и как решить проблему, используя внутренние механизмы платформы.

Проанализируем ситуацию и симптомы

Прежде чем приступать к активным действиям, давайте разберем типичную картину проблемы. Вы заходите в справочник, но не видите там сотрудников или контрагентов, которые точно были созданы. При этом:

  1. Запрос через консоль (например, ВЫБРАТЬ * ИЗ Справочник.ФизическиеЛица ГДЕ Ссылка = &Ссылка) возвращает данные — значит, на уровне СУБД всё в порядке.
  2. Права доступа (RLS) проверены: даже под пользователем с ролью ПолныеПрава записи не видны.
  3. Если в форме списка принудительно установить отбор по конкретному коду или ссылке, запись внезапно появляется. Но стоит снять отбор — она снова исчезает.

Такое поведение однозначно указывает на проблему в работе Динамического списка и его взаимодействия с механизмами оптимизации платформы 8.3.27 (и выше) и подсистемы БСП.

Выясним причину: связь Динамического списка и полнотекстового поиска

Разберем по шагам, каким образом полнотекстовый поиск (ППС) влияет на то, что мы видим в обычном списке. В современных версиях ERP многие формы списков используют расширенный поиск. Если в настройках включен «Полнотекстовый поиск при вводе по строке», платформа при построении динамического списка может обращаться к индексу ППС для первичной фильтрации.

Проанализируем механику: если индекс ППС поврежден, не обновлен или «слетел» после реструктуризации при обновлении, платформа делает ложный вывод. Она «считает», что раз записи нет в индексе, то её не нужно выводить в текущей выборке списка, оптимизируя таким образом поток данных. Это особенно актуально для режима RLS «Производительный», где система строит сложные временные таблицы прав, опираясь на метаданные, которые могут быть тесно связаны с проиндексированными полями.

Шаг 1. Проверка индекса полнотекстового поиска

Как показала практика, в большинстве случаев проблема решается именно через управление ППС. Рассмотрим, как правильно выполнить обслуживание индекса:

  1. Перейдем в раздел НСИ и администрирование — Поддержка и обслуживание.
  2. Найдем пункт Управление полнотекстовым поиском.
  3. Обратите внимание на статус индекса. Даже если написано «Обновлен», это может быть ошибкой.
  4. Нажмем кнопку Очистить индекс. Это критически важно: простое обновление может не помочь, если структура индекса была нарушена при обновлении метаданных.
  5. После очистки нажмем Обновить индекс. Система запустит фоновое задание по полной переиндексации данных.

Пока выполняется переиндексация, мы можем проверить состояние регламентных заданий, которые отвечают за актуальность данных.

Шаг 2. Анализ регламентных заданий

Проверим, работают ли в системе следующие задания:

Если вы обнаружили, что записи не видны именно из-за RLS, можно воспользоваться следующим кодом в обработке, чтобы принудительно пересчитать ключи доступа для конкретного объекта:


ПараметрыОбновления = ПараметрыДоступа.ПараметрыОбновления();
ПараметрыОбновления.ОбъектыДляОбновления = Новый Массив;
ПараметрыОбновления.ОбъектыДляОбновления.Добавить(НужнаяСсылка);
УправлениеДоступом.ОбновитьСпискиСУчетомИзмененийДоступа(ПараметрыОбновления);

Шаг 3. Очистка кэша и настроек формы

Если манипуляции с ППС не помогли сразу, вспомним золотое правило администратора 1С: «В любой непонятной ситуации сбрасывай кэш». Посмотрим на ситуацию со стороны клиентского приложения. Платформа 8.3.27 активно кэширует представления данных.

Выполним следующие действия:

  1. Запустим базу с параметром /ClearCache.
  2. Если проблема сохраняется у конкретного пользователя, необходимо сбросить настройки формы. Зайдем в Настройки — Настройки пользователей и прав — Персональные настройки пользователей — Настройки форм. Найдем форму списка справочника ФизическиеЛица и удалим её настройки.

Почему помогает «принудительный отбор»?

Интересный нюанс, замеченный пользователями: если установить жесткий отбор по коду, запись появляется, а после удаления отбора — остаются и все остальные записи. Почему так происходит?

Когда мы устанавливаем отбор по конкретному полю (например, коду), платформа меняет стратегию выполнения запроса динамического списка. Она перестает полагаться на общий индекс выборки и обращается напрямую к таблице СУБД по конкретному значению. Это заставляет внутренний кэш выборки (курсор) обновиться для текущего сеанса, что временно восстанавливает видимость данных. Однако без исправления индекса ППС проблема вернется после перезапуска сеанса или очистки серверного вызова.

Резюме по исправлению

Подведем итог нашему исследованию. Если после обновления ERP 2.5 вы столкнулись с «исчезновением» записей в списках при их фактическом наличии в базе, придерживайтесь следующего алгоритма:

  1. Полная очистка и перестроение индекса полнотекстового поиска. Это самый вероятный виновник в конфигурациях на базе последних версий БСП.
  2. Проверка завершения всех процедур обновления. Убедитесь, что все отложенные обработчики обновления в разделе «Поддержка и обслуживание» завершены успешно.
  3. Проверка режима RLS. Если используется «Производительный» режим, попробуйте временно переключить его в «Стандартный» для проверки (в копии базы), чтобы исключить проблему кривых ключей доступа.
  4. Очистка серверного кэша. Иногда метаданные динамического списка «залипают» на сервере приложений, и помогает только перезапуск службы 1C:Enterprise с удалением содержимого папки snccntx.

Соблюдение этих шагов позволит вам быстро вернуть видимость данных и обеспечить корректную работу пользователей с информационной системой.

← На главную