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