Администрирование · 11 мин
Как очистить историю выбора в поле ввода в 1С
Как убрать лишние значения из истории выбора поля ввода в 1С: настройки пользователя, очистка через меню, код на встроенном языке и работа с хранилищем настроек.
При вводе значений в поля форм 1С платформа запоминает ранее выбранные варианты и предлагает их в выпадающем списке при повторном вводе. Это удобно, пока в истории не накапливаются устаревшие, ошибочные или случайные значения: удалённые контрагенты, старые договоры, опечатки в строках поиска. Выпадающий список разрастается, мешает быстрому выбору и иногда подставляет неверные данные.
История выбора хранится не в самих данных справочника, а в настройках пользователя — в системном хранилище настроек. Поэтому удаление элемента из справочника не убирает его из выпадающего списка: запись о выборе остаётся в настройках конкретного пользователя. Понимание этого механизма — ключ к правильной очистке.
Способов убрать историю несколько: штатные средства интерфейса, очистка настроек пользователя целиком, программное удаление через встроенный язык и массовая чистка для всех пользователей информационной базы. Ниже разобраны все варианты с ограничениями каждого.
Где 1С хранит историю выбора и почему она не исчезает сама
Платформа 1С:Предприятие 8 автоматически сохраняет последние выбранные значения для полей ввода, у которых включён соответствующий механизм. Записи попадают в системное хранилище настроек с привязкой к пользователю, объекту метаданных и конкретному полю формы. Объём истории ограничен — обычно хранится ограниченное количество последних значений, но «хвост» из ненужных записей может держаться долго.
Важно отличать историю выбора от истории ввода по строке (автоподстановки при наборе текста) и от быстрого выбора в динамическом списке. Это разные механизмы, и очистка одного не всегда затрагивает другой. Также история выбора не связана с пометкой на удаление объекта: даже удалённый контрагент может оставаться в выпадающем списке, потому что в настройках хранится ссылка и её представление.
Из-за этой особенности возникает типичная жалоба: «Удалили элемент из справочника, а он всё равно предлагается в поле». Проблема решается именно чисткой настроек, а не повторным удалением данных.
Как убрать значение из выпадающего списка вручную
В ряде версий платформы и типовых конфигураций лишнее значение можно удалить прямо из выпадающего списка истории. Откройте список выбора поля, выделите ненужную строку курсором и нажмите Shift+Delete либо найдите в контекстном меню команду удаления из истории. Поведение зависит от версии платформы и режима интерфейса (такси или обычные формы), поэтому комбинация может не сработать.
Если вручную удалить строку не получается, остаются два пути: очистить настройки пользователя через интерфейс администрирования или удалить записи программно. Ручное удаление подходит, когда мешает одно-два значения у одного пользователя; при массовой проблеме оно слишком трудоёмко.
После удаления закройте и заново откройте форму — список истории формируется при открытии, и без переоткрытия изменения могут визуально не проявиться.
Очистка настроек пользователя через интерфейс
В типовых конфигурациях (БСП) есть штатный механизм управления настройками пользователей. В разделе «Администрирование» откройте «Пользователи и настройки» (название может отличаться), затем перейдите к персональным настройкам или к очистке настроек пользователей. Там доступно удаление настроек по конкретному пользователю, по объекту или всех настроек разом.
Недостаток подхода — гранулярность. Штатная очистка чаще всего удаляет настройки целыми группами: вместе с историей выбора могут пропасть сохранённые варианты отчётов, настройки форм и прочие персональные предпочтения. Перед массовой очисткой предупредите пользователей или выгрузите важные настройки.
Программное удаление истории выбора
Точечная очистка выполняется через встроенный язык. Метод Удалить() объекта ХранилищеСистемныхНастроек принимает ключ объекта, ключ настроек и имя пользователя. Ключ объекта для истории выбора обычно содержит полное имя объекта метаданных и имя поля формы, например связан с путём вида «Справочник.Контрагенты.Форма.ФормаЭлемента» и конкретным реквизитом.
Практический приём — сначала получить список настроек методом ПолучитьСписок() с отбором по пользователю, найти в нём ключи, относящиеся к нужному полю, и только затем удалять. Так вы не трогаете чужие настройки и видите, что именно будет удалено.
Отбор = Новый Структура;
Отбор.Вставить("Пользователь", "ИвановИИ");
СписокНастроек = ХранилищеСистемныхНастроек.ПолучитьСписок(Отбор);
Для Каждого Элемент Из СписокНастроек Цикл
Если СтрНайти(Элемент.КлючОбъекта, "Справочник.Контрагенты") > 0 Тогда
ХранилищеСистемныхНастроек.Удалить(Элемент.КлючОбъекта, Элемент.КлючНастроек, "ИвановИИ");
КонецЕсли;
КонецЦикла;
Запускать такой код удобно через консоль кода или внешнюю обработку в режиме предприятия. Права нужны минимум на администрирование данных пользователя; для чужих настроек — полные права или роль администратора.
ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, КлючНастроек, ИмяПользователя);Как отключить запоминание истории для конкретного поля
Если история выбора в принципе не нужна для какого-то поля, разработчик может отключить её в конфигураторе. У поля ввода формы есть свойства, управляющие автозаполнением и сохранением истории — в частности, свойства, связанные с историей выбора и быстрым выбором. Снятие соответствующего флага прекращает накопление новых записей, но уже сохранённые записи останутся, пока их не удалить.
Для управляемых форм также доступно программное управление через свойства элемента формы в модуле. Этот вариант оправдан, когда поле используется для ввода конфиденциальных строк (например, произвольных поисковых запросов), которые не должны всплывать у пользователя позже.
Учтите: изменение конфигурации требует режима конфигуратора и обновления конфигурации базы данных. В типовых конфигурациях на поддержке такие доработки усложняют обновление — взвесьте, не проще ли периодически чистить настройки.
Массовая очистка для всех пользователей
В файловых базах и небольших командах массовую чистку проще всего выполнить обработкой, которая перебирает всех пользователей информационной базы и удаляет настройки с ключами истории выбора по заданному объекту. Список пользователей получают через ПользователиИнформационнойБазы.ПолучитьПользователей(), далее для каждого имени вызывают удаление.
В клиент-серверных базах с большим числом пользователей действуйте аккуратно: операция обращается к системным таблицам и при большом объёме может занять заметное время. Выполняйте её в нерабочие часы и обязательно после резервного копирования.
Альтернатива — регламентный подход: раз в квартал чистить историю выбора по проблемным объектам (контрагенты, номенклатура) вместе с прочим обслуживанием базы. Это предотвращает накопление «мусора» и жалобы пользователей.
- 1Сделайте резервную копию информационной базы
- 2Определите ключи настроек истории через ПолучитьСписок для тестового пользователя
- 3Напишите обработку с перебором пользователей и удалением по найденным ключам
- 4Запустите обработку в нерабочее время
- 5Проверьте результат на нескольких пользователях: откройте форму и список выбора поля
Проверка результата и типичные ошибки
Признак успешной очистки — выпадающий список истории поля пуст или содержит только актуальные значения, при этом введённые заново значения снова начинают запоминаться (если механизм не отключён). Проверяйте именно в режиме предприятия под тем пользователем, чьи настройки чистили: под другим пользователем история будет его собственная.
Частая ошибка — удаление данных справочника вместо очистки настроек. Пользователь удаляет «лишнего» контрагента, а запись в истории остаётся и при выборе приводит к ошибке открытия несуществующего объекта или к битой ссылке в документе. Вторая ошибка — очистка не тех ключей: при программном удалении по слишком широкому условию сносятся настройки форм и отчётов.
Ещё одна ловушка — кэш клиентского приложения. Иногда после очистки пользователь продолжает видеть старые значения из-за кэша; помогает перезапуск сеанса, а в тяжёлых случаях — очистка кэша клиента (каталоги настроек приложения на компьютере пользователя).
Как проверить результат
Пуст или содержит только актуальные значения
Старые или удалённые элементы всё ещё предлагаются
Свежевыбранное значение появляется в истории после повторного открытия формы
История не пополняется — возможно, механизм отключён
Варианты отчётов и настройки форм на месте
Пропали лишние настройки — условие удаления было слишком широким
FAQ
Почему удалённый контрагент всё равно предлагается в поле ввода?
Потому что история выбора хранится в настройках пользователя отдельно от данных справочника. Удалите запись из истории через очистку системных настроек по ключу этого поля — сам элемент справочника трогать не нужно.
Можно ли очистить историю выбора только для одного поля, не затрагивая остальное?
Да, но только программно: получите список настроек пользователя, найдите ключ, соответствующий нужному объекту и полю формы, и удалите именно его. Штатный интерфейс очистки обычно работает с более крупными группами настроек.
История выбора общая для всех пользователей или у каждого своя?
У каждого пользователя своя. Записи привязаны к имени пользователя информационной базы, поэтому очистку нужно выполнять для каждого пострадавшего пользователя отдельно или массовой обработкой по всем.
Что делать, если после очистки старые значения всё равно видны?
Сначала перезапустите сеанс — список истории формируется при открытии формы. Если не помогло, очистите кэш клиентского приложения 1С на компьютере пользователя и проверьте, что удалялись настройки именно этого пользователя и именно с нужными ключами.
Можно ли вообще отключить запоминание истории для всех полей?
Глобальной настройкой в пользовательском режиме — нет. Отключение выполняется в конфигураторе для конкретных полей форм через свойства элемента. Учтите, что ранее накопленные записи при этом не удаляются автоматически.
Опасно ли удалять записи из системного хранилища настроек?
Сама операция безопасна для данных учёта — удаляются только пользовательские настройки. Риск в другом: по неточному условию можно удалить варианты отчётов и настройки форм. Перед массовой очисткой сделайте резервную копию и сначала протестируйте отбор ключей на одном пользователе.
Что важно запомнить
История выбора поля ввода живёт в настройках пользователя, а не в данных. Удаление элемента справочника её не очищает. Точечная чистка делается программно через ХранилищеСистемныхНастроек по ключу поля, массовая — обработкой по всем пользователям после резервного копирования. Проверяйте результат под тем же пользователем и следите, чтобы не задеть варианты отчётов и настройки форм.