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

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

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

Почему данные сохраняются в выпадающем списке?

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

Способ 1: Изменение свойств поля в Конфигураторе

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

  1. Откроем нужную форму в Конфигураторе.
  2. Найдем элемент формы (поле ввода), который ведет себя некорректно.
  3. В окне свойств найдем категорию Использование.
  4. Установим свойство ИсторияВыбораПриВводе в значение Не использовать.

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


&НаСервере
Процедура ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Отключаем историю выбора для конкретного элемента программно
    Элементы.КассаККМ.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать;
КонецПроцедуры

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

Способ 2: Очистка через стандартные инструменты БСП

В современных конфигурациях, таких как УТ 11, КА 2 или ERP, реализована Библиотека стандартных подсистем (БСП), которая предоставляет удобные инструменты для управления настройками пользователей без программирования — также для визуальной оптимизации интерфейса есть расширение для скрытия недоступных элементов списков. Разберем по шагам, как очистить «застрявшие» данные:

  1. Перейдем в раздел АдминистрированиеНастройки пользователей и прав.
  2. Выберем пункт Персональные настройки пользователей.
  3. Нажмем гиперссылку Очистка настроек.
  4. В открывшемся окне выберем нужного пользователя.
  5. В списке настроек можно найти настройки конкретных форм. Если мы удалим настройки формы, в которой «зависла» касса, история выбора для этого поля также будет сброшена.

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

Способ 3: Программная очистка истории выбора

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

Пример кода для очистки списка выбора в элементе формы:


&НаСервере
Процедура ОчиститьИсториюВыбораНаСервере()
    // Очищаем текущий список выбора элемента
    Элементы.Склад.СписокВыбора.Очистить();
    
    // Если используется БСП, можно попытаться сохранить пустой список
    // ОбщийМодуль.СпискиВыбораКлиентСервер.Сохранить("ИсторияСклада", Элементы.Склад.СписокВыбора);
КонецПроцедуры

Существует также радикальный метод очистки всей истории работы пользователя, который упоминался в обсуждении:


ИсторияРаботыПользователя.ОчиститьВсе();

Внимание: этот метод очистит не только выпадающие списки, но и всю историю переходов пользователя (меню «История»), что может быть неудобно для сотрудников, привыкших быстро возвращаться к недавним документам.

Способ 4: Влияние функциональных опций и фильтров

Иногда подстановка «неправильного» значения — это не глюк кэша, а работа алгоритмов типовой конфигурации. Рассмотрим пример из 1С:Управление торговлей 11. Проанализируем механизм автоподстановки кассы в платежные документы:

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

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

Способ 5: Удаление локальных файлов (для файловых баз)

Если ни один из вышеперечисленных способов не помог, и мы имеем дело с файловой базой данных или локальным кэшированием тонкого клиента, стоит заглянуть в папку профиля пользователя. Настройки истории ввода могут дублироваться в файлах с расширением .pfl.

  1. Закройте 1С.
  2. Перейдите в папку %LOCALAPPDATA%\1C\1cv8\.
  3. Найдите папку с идентификатором вашей информационной базы.
  4. Удалите содержимое папок Local и Roaming для данной базы.

Резюме: для решения проблемы с «залипшими» значениями в выпадающем списке лучше всего начать с проверки фильтров в списках документов. Если это не помогает, используйте расширение для установки свойства ИсторияВыбораПриВводе в значение Не использовать или воспользуйтесь инструментами очистки настроек БСП. Программная очистка через ИсторияРаботыПользователя является крайней мерой, так как влияет на общую эргономику работы пользователя.

← На главную