Мы привыкли читать и смотреть слева направо, поэтому пользователи при заполнении табличных частей документов в 1С используют кнопку «Добавить». Эта функция добавляет одну пустую строку, и пользователь заполняет необходимые поля, подчеркнутые красным. В процессе работы сотрудники не задумываются о других возможностях 1С, стараясь не ошибиться и быстрее выполнить свои обязанности. Продвинутые пользователи 1С предпочитают использовать не кнопку «Добавить», а воспользоваться механизмом подбора.
Подбор в 1С является полезным механизмом, применимым в различных ситуациях. На примере одной из них рассмотрим реализацию механизма подборов на управляемых формах.
Подбор в стандартной конфигурации 1С
Многие документы в стандартных конфигурациях на платформе 1С имеют табличные части, в которых необходимо указывать несколько однотипных строк. Подавляющее большинство таких документов имеют механизм подборов:
В данном примере запуск окна подбора товаров в документе «ЗаказПоставщику» происходит через кнопку «Подобрать товары». Нажав ее, пользователь видит окно подбора, разделенное на несколько областей:
- Перечень номенклатуры;
- Возможности отбора;
- Выбранная номенклатура.
Форма подбора весьма функциональна, так как позволяет:
- Задать нужный пользователю фильтр (по наличию на складе, цене, сегменту, названию и другим критериям);
- Посмотреть остатки;
- Выбрать сразу несколько номенклатур и их количество;
- Ознакомиться с ценами поставщика, если они загружены в 1С.
После того как подобран нужный перечень номенклатуры и проставлено количество, пользователи нажимают на кнопку «Перенести в документ», и выбранные позиции переносятся в «ЗаказПоставщику», вместе с введенным количеством. Подбор 1С существенно экономит время сотрудникам компании и облегчает их труд.
Распространенное применение подборов в 1С
В процессе внедрения может возникнуть необходимость добавить возможность подбора. Выполнить эту задачу под силу разработчикам даже с небольшим опытом. Для примера, реализуем подбор в 1С остатков номенклатуры на определенном складе при заполнении табличной части документа «РеализацияТоваров».
В первую очередь нужно для справочника «Номенклатура» создать форму выбора и добавить реквизит «Склад» с типом «СправочникСсылка.Склады». Перенесем его на форму и проставим свойство «ТолькоПросмотр» в значение «Истина», чтобы пользователь видел, номенклатуру какого склада он выбирает. Уже существующий динамический список переименуем в «ТоварыДляВыбора»:
Также нам потребуется изменить свойства динамического списка:
- Проставляем галку «ПроизвольныйЗапрос»;
- Открываем свойство «Настройка списка». По умолчанию запрос динамического списка выбирает все поля справочника «Номенклатура»;
- Изменяем запрос таким образом, чтобы в список попадала только номенклатура, положительный остаток которой лежит на конкретном складе.
Фрагмент 1
ВЫБРАТЬ
СправочникНоменклатура.Ссылка,
ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
ПО ТоварыНаСкладахОстатки.Товар = СправочникНоменклатура.Ссылка
ГДЕ
ТоварыНаСкладахОстатки.КоличествоОстаток > 0
И ТоварыНаСкладахОстатки.Склад = &Склад
Изменение формы документа в 1С
Переходим к форме документа «РеализацияТоваров» и добавляем команду «ПодборТоваров», размещаем ее на форме и прописываем действие этой команды:
Фрагмент 2
&НаКлиенте
Процедура ПодборТоваров(Команда)
ПараметрыПодбора = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор, Склад", Ложь, Истина,Объект.Склад);
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаПодбора", ПараметрыПодбора, Элементы.Товары);
КонецПроцедуры
В качестве условия отбора по складу берем значение из документа из поля Склад. Нужно, чтобы новая форма подбора справочника «Номенклатура» получила значение склада, по которому будут отбираться остатки. Для этого в модуле формы подбора необходимо заполнять переменную написанного нами запроса из параметров формы в стандартной процедуре «ПриСозданииНаСервере»:
Фрагмент 3
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТоварыДляВыбора.Параметры.УстановитьЗначениеПараметра("Склад", Параметры.Склад);
Склад = Параметры.Склад;
КонецПроцедуры
Для того чтобы пользователи могли выбирать товары из сформировавшегося списка, необходимо в форме документа продажи для табличной части, куда будут добавляться строки с выбранной номенклатурой, изменить стандартное событие «ОбработкаВыбора»:
Фрагмент 4
&НаКлиенте
Процедура ТоварыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТоварыОбработкаВыбораНаСервере(ВыбранноеЗначение);
КонецПроцедуры
&НаСервере
Процедура ТоварыОбработкаВыбораНаСервере(ВыбранноеЗначение)
Для Каждого вЗнч Из ВыбранноеЗначение Цикл
нСтр = Объект.Товары.Добавить();
нСтр.Номенклатура = вЗнч.Значение;
КонецЦикла;
КонецПроцедуры
Напоследок на форме подбора номенклатуры 1С у динамического списка «ТоварыДляВыбора» нужно переопределить событие «Выбор»:
Фрагмент 5
&НаКлиенте
Процедура ТоварыДляВыбораВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
парам_Номен = Элемент.ТекущиеДанные.Ссылка;
ОповеститьОВыборе( Новый Структура("Номенклатура", парам_Номен));
КонецПроцедуры
Проверка реализации подбора в 1С
Все приготовления окончены, остается только обновить конфигурацию и проверить, работает ли подбор в 1С по складу и положительным остаткам. После обновления и отсутствия ошибок, проверяем текущую ситуацию в регистре накопления «ТоварыНаСкладах», где существуют следующие записи:
Создаем новый документ, заполняем обязательные поля, в том числе и «Склад», и нажимаем на кнопку «Подбор товаров». Перед нами появляется только номенклатура, хранящаяся на главном складе с положительными остатками.
При двойном нажатии на конкретную номенклатуру в табличной части документа «РеализацияТоваров» появляется новая строка с выбранной номенклатурой. Пользователь самостоятельно сможет заполнить все остальные поля (количество, цену и другие).
Данный функционал подбора можно доработать с целью не только облегчения труда операторам и менеджерам, но и для других целей: контролировать остатки, рассчитываться с контрагентами и автоматически заполнять остальные поля табличной части документа.
консультация эксперта
самые свежие новости 1 раз в месяц