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

Разработка и Конфигурация · 11 мин

1С: поле выбора — как добавить значения

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

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

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

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

Как определить, откуда берётся список значений

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

Точный ответ даёт конфигуратор. Найдите объект (справочник, документ), откройте его реквизиты, выберите нужный реквизит и посмотрите свойство «Тип». Если тип — «ПеречислениеСсылка», значения берутся из перечисления. Если тип — строка или число, проверьте свойство «СписокВыбора» у реквизита или у элемента формы. Если список формируется кодом, он будет в модуле формы — обычно в обработчиках «ПриСозданииНаСервере» или «НачалоВыбора».

Добавление значения пользователем в режиме «Предприятие»

Если поле выбора ссылается на справочник, добавить значение может обычный пользователь без конфигуратора. Нажмите кнопку выбора (стрелка вниз или кнопка с тремя точками) в поле, в открывшейся форме списка нажмите «Создать», заполните наименование и другие обязательные поля, затем запишите элемент кнопкой «Записать и закрыть». Новый элемент сразу станет доступен для выбора.

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

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

Добавление значения в список выбора через конфигуратор

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

Аналогично список можно задать не у реквизита, а у конкретного элемента формы. Откройте форму объекта в конфигураторе, выделите поле ввода, в палитре свойств найдите «СписокВыбора» и отредактируйте его. Список на уровне элемента формы имеет приоритет над списком реквизита — если заданы оба, работать будет список элемента формы.

Порядок действий в конфигураторе
  1. 1
    Откройте конфигуратор и разблокируйте конфигурацию от изменений (при необходимости — снимите с поддержки частично)
  2. 2
    Найдите объект и реквизит, откройте палитру свойств
  3. 3
    Откройте свойство «СписокВыбора» и добавьте новую строку со значением и представлением
  4. 4
    Сохраните конфигурацию и обновите конфигурацию базы данных (F7)
  5. 5
    Запустите режим «Предприятие» и проверьте, что значение появилось в выпадающем списке

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

Добавление значения в перечисление

Перечисления — предопределённые на уровне конфигурации списки значений. Типичные примеры: «ВидОперации», «СтавкаНДС», «Пол». Пользователь не может расширить перечисление — значения добавляются только в конфигураторе.

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

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

Программное добавление значений в список выбора

Когда список должен формироваться динамически — например, зависеть от других полей формы или от данных в базе, — его заполняют программно. Для этого используется коллекция «СписокЗначений» и её метод Добавить(). Код размещают в модуле формы, чаще всего в обработчике «ПриСозданииНаСервере».

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Элементы.СпособДоставки.СписокВыбора.Добавить("Самовывоз", "Самовывоз со склада");
    Элементы.СпособДоставки.СписокВыбора.Добавить("Курьер", "Доставка курьером");
    Элементы.СпособДоставки.СписокВыбора.Добавить("ТК", "Транспортная компания");
КонецПроцедуры

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

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

Если список выбора заполняется программно, а в конфигураторе у реквизита тоже задан список, программный код обычно перекрывает статический. При отладке сначала ищите заполнение списка в модуле формы — поиск по слову «СписокВыбора» по конфигурации быстро покажет все места, где он меняется.
ПЗ
Практическое замечание

Как проверить результат и где искать ошибки

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

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

Типичные ошибки
01
Изменение списка в конфигураторе без обновления конфигурации базы данных — пользователи не видят новое значение
02
Несовпадение типов: в список добавлена строка, а реквизит имеет числовой тип — значение не записывается
03
Добавление значения в перечисление типовой конфигурации без резервной копии — конфликты при обновлении
04
Программное заполнение списка в клиентском обработчике при обращении к данным сервера — ошибка вызова
05
Задание списка и у реквизита, и у элемента формы — путаница, какой из них реально работает
Контрольные точки

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

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

Новое значение видно и выбирается

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

Значение отсутствует — не обновлена конфигурация БД или список перекрыт кодом

Сохранение объекта
Норма

Объект записывается, значение сохраняется после переоткрытия

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

Ошибка записи или пустое поле — несовпадение типов значения и реквизита

Отображение у других пользователей
Норма

Значение доступно всем с нужными правами

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

Видно только разработчику — пользователи не перезапустили сеанс или нет прав

FAQ: частые вопросы

Можно ли добавить значение в поле выбора без конфигуратора?

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

Добавил значение в список выбора, но его нет в выпадающем списке. Что делать?

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

Чем список выбора реквизита отличается от перечисления?

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

Как ограничить поле только значениями из списка, запретив ручной ввод?

В свойствах элемента формы установите свойство «РежимВыбораИзСписка» в значение «Истина» (или «КнопкаВыбора» с отключённым редактированием текста). Тогда пользователь сможет только выбрать значение из выпадающего списка, но не ввести своё.

Можно ли добавить значение в перечисление типовой конфигурации, не снимая её с поддержки?

Частично — через расширение конфигурации, если используемая версия платформы поддерживает расширение перечислений. Если нет, потребуется снятие объекта с поддержки, что усложнит обновления. Альтернатива без правки типового кода — использовать собственный справочник вместо перечисления в своих доработках.

Как сделать, чтобы список значений одного поля зависел от другого поля?

Для ссылочных типов используйте «СвязиПараметровВыбора» и «ПараметрыВыбора» в свойствах элемента формы — например, отбор договоров по выбранному контрагенту. Для произвольных списков формируйте СписокЗначений программно в обработчике «НачалоВыбора» с учётом текущих данных формы.

Итог

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

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