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

Справочники и Данные · 11 мин

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

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

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

Механизм подбора встроен в типовые конфигурации: «Управление торговлей», «Бухгалтерия предприятия», «Зарплата и управление персоналом» и другие. В документах с табличной частью обычно есть кнопка «Подбор» или команда в меню «Добавить». Если её нет — подбор можно реализовать программно, о чём рассказано ниже.

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

Что такое подбор и когда он нужен

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

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

Как сделать подбор пользователю в типовой конфигурации

В типовых решениях механизм уже встроен. Порядок действий на примере документа «Реализация товаров и услуг» в «Управлении торговлей» или «Бухгалтерии» практически одинаков.

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

В форме подбора обычно доступны поля «Количество» и «Цена», которые подставляются в строки документа. Если цена заполняется автоматически из типа цен документа, менять её в подборе не требуется — но проверить результат стоит всегда.

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

Настройки и особенности формы подбора

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

Отбор по остаткам и ценам

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

Множественный выбор и иерархия

Если нужно перенести целую группу, выделите несколько элементов через Ctrl или Shift и добавьте их разом. В некоторых формах группу можно подобрать целиком со всеми вложенными элементами — проверьте наличие команды в меню «Ещё» формы подбора.

Как реализовать подбор программно

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

Команда и открытие формы

Создайте команду формы «Подбор», разместите её в командной панели табличной части и в обработчике откройте форму выбора с параметрами множественного выбора:

&НаКлиенте

Процедура Подбор(Команда)

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить("РежимВыбора", Истина);

ПараметрыФормы.Вставить("МножественныйВыбор", Истина);

ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь);

ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",

ПараметрыФормы, Элементы.Товары);

КонецПроцедуры

Ключевые параметры: МножественныйВыбор разрешает выделять несколько элементов, а ЗакрыватьПриВыборе = Ложь удерживает форму открытой, чтобы пользователь мог добавлять позиции подряд. Владельцем формы указывается таблица формы — тогда событие выбора придёт именно в неё.

Обработка выбора

В модуле формы документа добавьте обработчик события выбора табличной части:

&НаКлиенте

Процедура ТоварыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Для Каждого ЭлементМассива Из ВыбранноеЗначение Цикл

НоваяСтрока = Объект.Товары.Добавить();

НоваяСтрока.Номенклатура = ЭлементМассива;

НоваяСтрока.Количество = 1;

КонецЦикла;

Модифицированность = Истина;

КонецПроцедуры

При МножественныйВыбор = Истина в параметр ВыбранноеЗначение приходит массив ссылок, при одиночном выборе — одна ссылка. Учитывайте оба варианта, если параметр может меняться.

bsl
ПараметрыФормы = Новый Структура("МножественныйВыбор,ЗакрыватьПриВыборе", Истина, Ложь); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, Элементы.Товары);

Отборы, дубли и дополнительные данные при подборе

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

Отбор в форме подбора передаётся через параметр Отбор — структуру, где ключом является имя реквизита справочника. Например, показать только непомеченные на удаление элементы конкретной группы: передайте Отбор с полями «Родитель» и «ПометкаУдаления».

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

Типичные ошибки
01
Забыли ЗакрыватьПриВыборе = Ложь — форма закрывается после каждой позиции, подбор превращается в мучение.
02
Не обрабатывают массив выбранных значений — при множественном выборе добавляется только одна строка или возникает ошибка.
03
Не проверяют дубли — в документе появляются повторяющиеся строки с одним товаром, что искажает итоги.
04
Подставляют цены на клиенте обращением к базе напрямую — выносите получение цен и остатков в серверный вызов.

Проверка результата и ограничения

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

Контрольные точки

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

Число строк в табличной части
Норма

Совпадает с количеством перенесённых позиций (или меньше, если дубли объединились)

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

Строк больше или меньше без объяснимой причины

Количество и цены
Норма

Заполнены, суммы пересчитаны

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

Нулевые количества, пустые цены, сумма документа не изменилась

Повторы позиций
Норма

Каждая позиция встречается один раз

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

Одинаковые товары в разных строках

Модифицированность документа
Норма

Документ помечен как изменённый, предлагается запись

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

Изменения не фиксируются, риск потери при закрытии

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

Подбор или другие способы заполнения: что выбрать

Способы заполнения табличной части

Интерактивный подбор

Оптимален для 3–50 позиций, выбираемых вручную. Неудобен для очень больших списков.

Ввод по штрихкоду или поиску в строке

Быстрее всего при известных кодах и сканере. Требует заполненных штрихкодов в справочнике.

Загрузка из файла (Excel, CSV)

Подходит для сотен строк из внешнего источника. Требует сопоставления колонок и проверки данных.

Заполнение по документу-основанию

Лучший вариант, когда строки уже есть в заказе или счёте. Не применим без исходного документа.

Маршрут решения

Как выбрать действие

Нужно добавить несколько позиций вручнуюИспользуйте штатную кнопку «Подбор» в табличной части
Кнопки «Подбор» нет в типовом документеПроверьте меню «Добавить» и настройки видимости команд панели
Разрабатываете свой документРеализуйте подбор через ОткрытьФорму с МножественныйВыбор и обработчиком ОбработкаВыбора
Позиций очень много и они уже в файлеИспользуйте обработку загрузки из табличного документа вместо подбора

Частые вопросы

Почему в документе нет кнопки «Подбор»?

Либо табличная часть не предполагает подбора по смыслу, либо команда скрыта в меню «Добавить» или «Ещё» командной панели. Также проверьте права: при ограниченных правах на справочник кнопка может быть недоступна.

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

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

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

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

Почему после подбора не пересчиталась сумма документа?

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

Как запретить подбор элементов, помеченных на удаление?

Передайте в форму выбора отбор по реквизиту «ПометкаУдаления» со значением Ложь через параметр Отбор. Это стандартный механизм динамического списка, работающий без доработки формы справочника.

Работает ли подбор в тонком и веб-клиенте?

Да, механизм управляемых форм одинаков во всех клиентах. Отличия только в скорости открытия форм: в веб-клиенте тяжёлая форма подбора с остатками и ценами может открываться заметно дольше.

Итог

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

Подбор из справочника в типовых 1С выполняется кнопкой «Подбор» с переносом отмеченных позиций в документ. В собственных разработках используйте ОткрытьФорму с параметрами МножественныйВыбор и ЗакрыватьПриВыборе = Ложь, обрабатывайте массив выбранных значений, контролируйте дубли и вызывайте пересчёт итогов. Типовые формы дорабатывайте через расширения, а не прямым изменением конфигурации.