Как очистить историю выбора в полях ввода 1С и убрать битые ссылки?

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

При активной работе в управляемом интерфейсе («Такси») платформа 1С автоматически запоминает значения, которые пользователь ранее выбирал в различных полях ввода. Это ускоряет работу, предлагая быстрые подсказки в выпадающем списке без необходимости открывать форму выбора справочника. Однако если один из ранее выбранных элементов был физически удален из информационной базы, в списке подсказок начинает отображаться некрасивая строка вида <Объект не найден> (уникальный_идентификатор).

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

Выясним причину проблемы

Проанализируем механизм работы подсказок в платформе 1С:Предприятие 8.3:

  1. Место хранения: История ввода хранится не во временных файлах на компьютере клиента и не в индексе полнотекстового поиска. Она сохраняется непосредственно в базе данных в специальной системной таблице — объекте ХранилищеСистемныхНастроек с системным ключом ИсторияВыбора индивидуально для каждого пользователя.
  2. Поведение платформы при удалении: При интерактивном или программном удалении объектов из базы платформа не выполняет каскадную очистку пользовательских историй выбора. Идентификатор удаленного элемента продолжает храниться в персональных настройках. Когда поле ввода запрашивает подсказки, система считывает сохраненный идентификатор из базы, не находит связанный объект и отображает битую ссылку.

Способ 1. Программная очистка истории системных настроек

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

Для удаления накопленной истории выбора только у текущего активного пользователя выполним следующий код:


ХранилищеСистемныхНастроек.Удалить("ИсторияВыбора", , ПользователиИнформационнойБазы.ТекущийПользователь().Имя);

Если требуется очистить историю подсказок для всех пользователей информационной базы, выполним обход списка пользователей в цикле:


Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
    ХранилищеСистемныхНастроек.Удалить("ИсторияВыбора", , ПользовательИБ.Имя);
КонецЦикла;

Обратите внимание: Платформа 1С не поддерживает точечное удаление одной конкретной ссылки из истории. Вызов метода Удалить очищает сохраненные подсказки быстрого ввода сразу по всем полям выбранного пользователя, после чего список начнет наполняться заново по мере работы.

Способ 2. Очистка настроек через интерфейс администрирования БСП

Разберем вариант очистки без написания программного кода, используя типовой функционал Библиотеки стандартных подсистем (присутствует в конфигурациях «Управление торговлей», «ERP», «Комплексная автоматизация», «Бухгалтерия предприятия» и др.):

  1. Откроем раздел Администрирование и перейдем в пункт Настройки пользователей и прав.
  2. Перейдем по гиперссылке Персональные настройки пользователей (или выберем карточку нужного пользователя в списке Пользователи).
  3. Нажмем кнопку Очистить настройки.
  4. В открывшемся окне укажем удаление системных настроек и подтвердим операцию.

Способ 3. Естественное вытеснение элемента из подсказок

Рассмотрим поведение механизма подсказок в повседневной работе. В истории выбора для конкретного реквизита хранится фиксированное небольшое количество наиболее часто и недавно используемых элементов (как правило, от 5 до 10 значений).

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

Управление историей выбора на уровне метаданных и форм

Если для конкретного реквизита или элемента формы быстрый подбор из истории вообще не требуется, мы можем управлять этим поведением разработчика. За это отвечает свойство ИсторияВыбораПриВводе, которое доступно у объектов метаданных, их реквизитов и элементов формы типа ПолеВвода. Установка данного свойства в значение Не использовать полностью отключает сохранение и отображение предыдущих вариантов выбора для элемента.

← На главную