К статье
Практический материал

Администрирование · 11 мин

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

Как убрать лишние значения из истории выбора поля ввода в 1С: настройки пользователя, очистка через меню, код на встроенном языке и работа с хранилищем настроек.

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

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

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

Где 1С хранит историю выбора и почему она не исчезает сама

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

Важно отличать историю выбора от истории ввода по строке (автоподстановки при наборе текста) и от быстрого выбора в динамическом списке. Это разные механизмы, и очистка одного не всегда затрагивает другой. Также история выбора не связана с пометкой на удаление объекта: даже удалённый контрагент может оставаться в выпадающем списке, потому что в настройках хранится ссылка и её представление.

Из-за этой особенности возникает типичная жалоба: «Удалили элемент из справочника, а он всё равно предлагается в поле». Проблема решается именно чисткой настроек, а не повторным удалением данных.

Как убрать значение из выпадающего списка вручную

В ряде версий платформы и типовых конфигураций лишнее значение можно удалить прямо из выпадающего списка истории. Откройте список выбора поля, выделите ненужную строку курсором и нажмите Shift+Delete либо найдите в контекстном меню команду удаления из истории. Поведение зависит от версии платформы и режима интерфейса (такси или обычные формы), поэтому комбинация может не сработать.

Если вручную удалить строку не получается, остаются два пути: очистить настройки пользователя через интерфейс администрирования или удалить записи программно. Ручное удаление подходит, когда мешает одно-два значения у одного пользователя; при массовой проблеме оно слишком трудоёмко.

После удаления закройте и заново откройте форму — список истории формируется при открытии, и без переоткрытия изменения могут визуально не проявиться.

Очистка настроек пользователя через интерфейс

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

Недостаток подхода — гранулярность. Штатная очистка чаще всего удаляет настройки целыми группами: вместе с историей выбора могут пропасть сохранённые варианты отчётов, настройки форм и прочие персональные предпочтения. Перед массовой очисткой предупредите пользователей или выгрузите важные настройки.

Программное удаление истории выбора

Точечная очистка выполняется через встроенный язык. Метод Удалить() объекта ХранилищеСистемныхНастроек принимает ключ объекта, ключ настроек и имя пользователя. Ключ объекта для истории выбора обычно содержит полное имя объекта метаданных и имя поля формы, например связан с путём вида «Справочник.Контрагенты.Форма.ФормаЭлемента» и конкретным реквизитом.

Практический приём — сначала получить список настроек методом ПолучитьСписок() с отбором по пользователю, найти в нём ключи, относящиеся к нужному полю, и только затем удалять. Так вы не трогаете чужие настройки и видите, что именно будет удалено.

Отбор = Новый Структура;

Отбор.Вставить("Пользователь", "ИвановИИ");

СписокНастроек = ХранилищеСистемныхНастроек.ПолучитьСписок(Отбор);

Для Каждого Элемент Из СписокНастроек Цикл

Если СтрНайти(Элемент.КлючОбъекта, "Справочник.Контрагенты") > 0 Тогда

ХранилищеСистемныхНастроек.Удалить(Элемент.КлючОбъекта, Элемент.КлючНастроек, "ИвановИИ");

КонецЕсли;

КонецЦикла;

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

bsl
ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, КлючНастроек, ИмяПользователя);

Как отключить запоминание истории для конкретного поля

Если история выбора в принципе не нужна для какого-то поля, разработчик может отключить её в конфигураторе. У поля ввода формы есть свойства, управляющие автозаполнением и сохранением истории — в частности, свойства, связанные с историей выбора и быстрым выбором. Снятие соответствующего флага прекращает накопление новых записей, но уже сохранённые записи останутся, пока их не удалить.

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

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

Массовая очистка для всех пользователей

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

В клиент-серверных базах с большим числом пользователей действуйте аккуратно: операция обращается к системным таблицам и при большом объёме может занять заметное время. Выполняйте её в нерабочие часы и обязательно после резервного копирования.

Альтернатива — регламентный подход: раз в квартал чистить историю выбора по проблемным объектам (контрагенты, номенклатура) вместе с прочим обслуживанием базы. Это предотвращает накопление «мусора» и жалобы пользователей.

Порядок действий при массовой очистке
  1. 1
    Сделайте резервную копию информационной базы
  2. 2
    Определите ключи настроек истории через ПолучитьСписок для тестового пользователя
  3. 3
    Напишите обработку с перебором пользователей и удалением по найденным ключам
  4. 4
    Запустите обработку в нерабочее время
  5. 5
    Проверьте результат на нескольких пользователях: откройте форму и список выбора поля

Проверка результата и типичные ошибки

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

Частая ошибка — удаление данных справочника вместо очистки настроек. Пользователь удаляет «лишнего» контрагента, а запись в истории остаётся и при выборе приводит к ошибке открытия несуществующего объекта или к битой ссылке в документе. Вторая ошибка — очистка не тех ключей: при программном удалении по слишком широкому условию сносятся настройки форм и отчётов.

Ещё одна ловушка — кэш клиентского приложения. Иногда после очистки пользователь продолжает видеть старые значения из-за кэша; помогает перезапуск сеанса, а в тяжёлых случаях — очистка кэша клиента (каталоги настроек приложения на компьютере пользователя).

Типичные ошибки
01
Удаление элемента справочника вместо очистки настроек — запись остаётся в истории и ведёт на битую ссылку
02
Удаление настроек по слишком широкому условию — пропадают варианты отчётов и настройки форм
03
Проверка результата под другим пользователем — история хранится персонально, чужая история не покажет эффекта
04
Забытый кэш клиента — старые значения видны до перезапуска сеанса
Контрольные точки

Как проверить результат

Выпадающий список истории поля
Норма

Пуст или содержит только актуальные значения

Тревожный признак

Старые или удалённые элементы всё ещё предлагаются

Новое запоминание
Норма

Свежевыбранное значение появляется в истории после повторного открытия формы

Тревожный признак

История не пополняется — возможно, механизм отключён

Прочие настройки пользователя
Норма

Варианты отчётов и настройки форм на месте

Тревожный признак

Пропали лишние настройки — условие удаления было слишком широким

FAQ

Почему удалённый контрагент всё равно предлагается в поле ввода?

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

Можно ли очистить историю выбора только для одного поля, не затрагивая остальное?

Да, но только программно: получите список настроек пользователя, найдите ключ, соответствующий нужному объекту и полю формы, и удалите именно его. Штатный интерфейс очистки обычно работает с более крупными группами настроек.

История выбора общая для всех пользователей или у каждого своя?

У каждого пользователя своя. Записи привязаны к имени пользователя информационной базы, поэтому очистку нужно выполнять для каждого пострадавшего пользователя отдельно или массовой обработкой по всем.

Что делать, если после очистки старые значения всё равно видны?

Сначала перезапустите сеанс — список истории формируется при открытии формы. Если не помогло, очистите кэш клиентского приложения 1С на компьютере пользователя и проверьте, что удалялись настройки именно этого пользователя и именно с нужными ключами.

Можно ли вообще отключить запоминание истории для всех полей?

Глобальной настройкой в пользовательском режиме — нет. Отключение выполняется в конфигураторе для конкретных полей форм через свойства элемента. Учтите, что ранее накопленные записи при этом не удаляются автоматически.

Опасно ли удалять записи из системного хранилища настроек?

Сама операция безопасна для данных учёта — удаляются только пользовательские настройки. Риск в другом: по неточному условию можно удалить варианты отчётов и настройки форм. Перед массовой очисткой сделайте резервную копию и сначала протестируйте отбор ключей на одном пользователе.

Итог

Что важно запомнить

История выбора поля ввода живёт в настройках пользователя, а не в данных. Удаление элемента справочника её не очищает. Точечная чистка делается программно через ХранилищеСистемныхНастроек по ключу поля, массовая — обработкой по всем пользователям после резервного копирования. Проверяйте результат под тем же пользователем и следите, чтобы не задеть варианты отчётов и настройки форм.