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

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

Как создать кнопку «Подбор» в 1С

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

Кнопка «Подбор» в табличной части документа позволяет добавлять номенклатуру (или другие объекты справочника) множественным выбором: пользователь открывает список товаров, отмечает нужные позиции с количеством, и все они одним действием попадают в табличную часть. Это заметно ускоряет заполнение документов по сравнению с добавлением строк по одной.

Способ реализации зависит от того, в какой конфигурации вы работаете. В типовых решениях на управляемых формах (Управление торговлей, ERP, Бухгалтерия 3.0, Комплексная автоматизация) механизм подбора уже встроен — его нужно только включить в настройках интерфейса или добавить на форму через конфигуратор. В самописных конфигурациях кнопку придётся создать вручную: добавить команду формы, разместить её в командной панели табличной части и написать обработчик, который открывает форму подбора и переносит выбранные позиции в документ.

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

Где искать готовую кнопку «Подбор» в типовой конфигурации

В типовых решениях фирмы «1С» на управляемых формах механизм подбора номенклатуры реализован из коробки. Кнопка «Подбор» обычно находится в командной панели табличной части «Товары» документов поступления, реализации, перемещения, инвентаризации. Если вы её не видите, сначала проверьте три вещи.

Первое — кнопка может быть скрыта настройкой формы. Откройте документ, нажмите «Ещё» → «Изменить форму», найдите в дереве элементов командную панель табличной части и проверьте, есть ли там команда с именем вроде «ПодборТоваров» или «ПодобратьТовары». Установите флажок видимости и сохраните. Изменение применится только для текущего пользователя и не затронет конфигурацию.

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

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

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

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

Включение подбора через настройку формы без конфигуратора

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

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

Учтите, что настройка формы сохраняется персонально для пользователя. Если кнопку нужно показать всем, администратор может скопировать настройку другим пользователям через «Администрирование» → «Настройки пользователей и прав» → «Копирование настроек», либо изменение вносится в конфигураторе с обновлением конфигурации базы данных.

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

Создание кнопки «Подбор» в конфигураторе

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

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

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

Код обработчика: открытие формы подбора

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

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

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда
		Для Каждого Элемент Из ВыбранноеЗначение Цикл
			НоваяСтрока = Объект.Товары.Добавить();
			НоваяСтрока.Номенклатура = Элемент;
			НоваяСтрока.Количество = 1;
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры

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

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

Передача отборов и параметров в форму подбора

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

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

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

Подбор в обычных формах (8.2, толстый клиент)

В старых конфигурациях на обычных формах (Управление торговлей 10.3, УПП 1.3) механизм отличается. Кнопка добавляется в командную панель табличного поля в редакторе формы, обработчик пишется в модуле формы без директив компиляции, а форма подбора открывается методом ПолучитьФорму с установкой режима выбора.

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

Проверка результата и типичные ошибки

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

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

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

Открытие формы подбора
Норма

Форма выбора открывается в режиме подбора, отборы из документа применены

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

Ошибка «Параметр не найден» или открывается обычный список без режима выбора

Перенос позиций
Норма

Выбранные позиции появляются в табличной части с количеством по умолчанию

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

Строки пустые или ОбработкаВыбора не срабатывает — неверно указан владелец формы

Дубли номенклатуры
Норма

Повторный подбор увеличивает количество в существующей строке

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

Одна и та же позиция добавляется несколькими строками

Права пользователя
Норма

Подбор работает под типовой ролью менеджера/кладовщика

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

Ошибка доступа к справочнику номенклатуры

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

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

Итог

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

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

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

Можно ли добавить кнопку «Подбор» без доступа к конфигуратору?

Если команда подбора уже предусмотрена конфигурацией — да: её включают через «Ещё» → «Изменить форму» прямо в режиме предприятия. Если команды в конфигурации нет, без конфигуратора или расширения обойтись нельзя — потребуется разработчик.

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

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

Почему кнопка «Подбор» не видна части пользователей?

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

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

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

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

Передайте склад из документа в параметры формы подбора и настройте динамический список формы выбора с произвольным запросом: соединение справочника номенклатуры с регистром остатков по переданному складу и условие на положительный остаток. Без произвольного запроса такой отбор стандартными средствами формы выбора не настроить.

Подбор работает, но позиции не попадают в табличную часть. Что проверить?

Чаще всего не указан владелец при открытии формы выбора — тогда событие выбора не доходит до формы документа. Также проверьте, что процедура ОбработкаВыбора объявлена именно в модуле формы документа и корректно определяет тип переданного значения (ссылка или массив при множественном выборе).