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