Почему в выпадающем списке отображаются не все значения перечисления в 1С?

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

При разработке или кастомизации конфигураций на платформе 1С:Предприятие 8.3 (особенно таких сложных, как КА 2.2, ERP 2.4/2.5 или УТ 11) разработчики часто сталкиваются с ситуацией: в метаданные перечисления добавлены новые значения, они корректно подставляются программно, отображаются в карточках объектов, но наотрез отказываются появляться в выпадающем списке (быстром выборе) табличной части документа при попытке выбрать их вручную. Рассмотрим подробнее, почему система скрывает новые элементы и как заставить их отображаться.

Анализируем механизм «ОбработкаПолученияДанныхВыбора»

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

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

Проверим наличие следующего кода в модуле менеджера:


Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    // Если здесь жестко задан массив значений, новые элементы в него не попадут
    СтандартнаяОбработка = Ложь;
    Список = Новый СписокЗначений;
    Список.Добавить(Перечисления.СтавкиНДС.НДС20);
    Список.Добавить(Перечисления.СтавкиНДС.НДС10);
    ДанныеВыбора = Список;
КонецПроцедуры

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

Программное формирование списка выбора на форме

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

Часто в процедуре ПриСозданииНаСервере или в специализированных общих модулях (например, связанных с налоговым учетом) происходит заполнение свойства СписокВыбора конкретного элемента формы. Проанализируем типичный алгоритм работы типовых решений:

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

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


Элементы.ТоварыСтавкаНДС.СписокВыбора.Очистить();
Для Каждого Ставка Из МассивАктуальныхСтавок Цикл
    Элементы.ТоварыСтавкаНДС.СписокВыбора.Добавить(Ставка);
КонецЦикла;

Вам потребуется внести изменения в алгоритм формирования МассивАктуальныхСтавок, чтобы он учитывал добавленные вами вручную значения перечисления.

Свойства «Быстрый выбор» и «Выбор из списка»

Иногда корень проблемы кроется в настройках самих метаданных или элементов формы. Рассмотрим два важных свойства:

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

2. Выбор из списка: Если на форме у поля ввода установлено свойство ВыборИзСписка в значение Да, но при этом сам СписокВыбора пуст или заполнен не полностью в конфигураторе, пользователь не увидит новых значений метаданных. Убедитесь, что либо это свойство выключено, либо список заполняется динамически всеми необходимыми значениями.

Проверка функциональных опций и связей параметров выбора

Проанализируем ситуацию с точки зрения логики конфигурации. В 1С:КА/ERP видимость данных часто привязана к Функциональным опциям. Если новые ставки НДС подразумевают использование определенного функционала (например, экспортные операции или работу с маркированным товаром), а соответствующая опция в настройках программы выключена, платформа может автоматически фильтровать эти значения в интерфейсе.

Также посмотрим на вкладку «Связи параметров выбора» в свойствах реквизита формы. Там может быть настроена фильтрация, например:

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

Очистка кэша и использование технических инструментов

Если код проверен, а значения всё равно не появляются, рассмотрим технические причины. Кэш метаданных на стороне клиента может хранить старую структуру перечисления.

Выполним следующие шаги:

  1. Запустим базу с параметром /ClearCache.
  2. Попробуем открыть список через меню «Функции для технического специалиста» (ранее «Все функции»).

Если в «Функциях для технического специалиста» в самом перечислении все значения видны и доступны, значит, проблема стопроцентно локализована в коде конкретной формы или модуле менеджера. Если же значения не видны даже там (что маловероятно для перечислений), значит, изменения метаданных не были приняты базой данных должным образом.

Подведем итог: чаще всего в КА 2.2 отсутствие значений в списке выбора связано именно с программным ограничением СписокВыбора в общих модулях БСП, отвечающих за налоговый учет. Пройдитесь отладчиком по процедуре ПриСозданииНаСервере формы документа, обращая внимание на заполнение коллекций элементов формы.

← На главную