Андрей Смирнов
Время чтения: ~9 мин.
Просмотров: 26

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

24.04.2018

Теги: 1С:Предприятие • Владелец • ОбработкаВыбора • ОповеститьОВыборе • ОткрытьФорму • УправляемаяФорма

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

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

Результат подбора будет доступен в обработчике события ОбработкаВыбора формы документа или элемента формы (в зависимости от того, чему мы подчиним форму справочника при открытии). Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:

  • когда в форме справочника будет выполнен интерактивный выбор;
  • когда в форме справочника будет вызван метод ОповеститьОВыборе.

Одиночный подбор

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

Откроем форму документа ПриходнаяНакладная, создадим команду Подбор и назначим для нее обработчик:

&НаКлиентеПроцедураВыборОдногоЭлемента(Команда)// Форма выбора закрывается после двойного клика// по выбранному элементуОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",,Элементы.Материалы);КонецПроцедуры

В этой процедуре мы открываем форму выбора для справочника Номенклатура, указывая, что она подчинена таблице Материалы формы документа ПриходнаяНакладная (Элементы.Материалы). При выборе из формы выбора справочника выбранное значение будет передано в обработчик события ОбработкаВыбора таблицы формы Материалы, так как она является владельцем открытой формы выбора.

Поэтому откроем палитру свойств таблицы Материалы и создадим обработчик события ОбработкаВыбора:

&НаКлиентеПроцедураМатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)     Элементы.Материалы.ДобавитьСтроку();     Элементы.Материалы.ТекущиеДанные.Материал = ВыбранноеЗначение;КонецПроцедуры

В этой процедуре мы добавляем новую строку в таблицу Материалы и присваиваем колонке Материал в новой строке выбранное в форме выбора справочника значение. Это значение передается в обработчик события в параметре ВыбранноеЗначение.

Множественный подбор

При множественном подборе форма справочника будет открыта до тех пор, пока пользователь не закроет ее интерактивно или не будет вызван метод формы Закрыть().

Обработчик команды Подбор:

&НаКлиентеПроцедураВыборЭлементовБезЗакрытияФормы(Команда)// Не закрывать форму после двойного клика; можно выбрать// несколько элементов, дважды кликая на каждом     ПараметрыФормы =НовыйСтруктура("ЗакрыватьПриВыборе",Ложь);ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",         ПараметрыФормы,         Элементы.Материалы     );КонецПроцедуры

Обработчик события ОбработкаВыбора остается без изменений.

Подбор с использованием множественного выбора

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

Поэтому для того, чтобы в форме списка справочника Номенклатура можно было не только отметить, но и выбрать сразу несколько элементов, мы воспользуемся одним из параметров расширения формы динамического списка — МножественныйВыбор.

Обработчик команды Подбор:

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

Обработчик события ОбработкаВыбора:

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

Множественный подбор с использованием множественного выбора

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

Обработчик команды Подбор:

&НаКлиентеПроцедураМножественныйВыборБезЗакрытияФормы(Команда)// Позволяем выделить и выбрать несколько элементов несколько раз; в// обработчик ОбработкаВыбора() передается массив элементов; после// каждого выбора форма не закрывается     ПараметрыФормы =НовыйСтруктура("ЗакрыватьПриВыборе,МножественныйВыбор",Ложь,Истина);ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",         ПараметрыФормы,         Элементы.Материалы     );КонецПроцедуры

Обработчик события ОбработкаВыбора остается без изменений.

Использование метода ОповеститьОВыборе()

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

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

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

Справка

ТабличноеПоле.ДобавитьСтроку()

ТабличноеПоле.ДобавитьСтроку()

Добавляет строку в табличное поле, аналогично выполнению команды «Добавить».

  • Если табличное поле связано с таблицей или деревом значений, метод добавляет строку в таблицу или дерево значений (аналогично соответствующим методам этих объектов).
  • Если табличное поле связано со списком объектов, хранимых в базе данных, метод начинает редактирование нового объекта этого списка. (Например, список объектов в форме списка справочника, или документа).
  • Если табличное поле связано с набором записей или табличной частью, то метод начинает редактирование новой записи. (Например, список записей в форме списка регистра сведений; табличная часть документа или справочника).

Доступность: Толстый клиент.

ДанныеФормыКоллекция.Добавить()

ДанныеФормыКоллекция.Добавить()

Добавляет элемент в конец коллекции и возвращает его в качестве результата метода. Возвращаемое значение: ДанныеФормыЭлементКоллекции.

Доступность: тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).

Поиск: 1С:Предприятие • Владелец • Обработка выбора • Оповестить о выборе • Открыть форму • Управляемая форма

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

В программе «1С:Управление торговлей, ред. 10.3» во всех документах реализован механизм подбора товаров, позволяющий заполнять документы быстро и удобно. Рассмотрим работу данного механизма на примере документа «Заказ покупателя». 

Меню: Документы – Продажи – Заказы покупателей

Создадим документ, укажем в нем организацию, склад и контрагента: 

<object>Авиант? Реклама<object>a0fc172d60a47928f1da34bdfcf31d81.png</object><object>Помощь по 1С онлайнБесплатные консультации и помощь от специалистов по 1С. Узнать больше</object></object>

Далее необходимо заполнить список заказываемых товаров, их количества и цены. Можно добавлять в таблицу новые строки, выбирать в них номенклатуру и указывать количество, но такой вариант достаточно сложный. 

Нажмем на кнопку «Подбор» для открытия окна подбора: 

34789d7681da496fcab6d46dc8bfde25.png

Окно подбора выглядит следующим образом: 

75d0d6a94ddc3aec9b719db588c1409a.png

Окно подбора состоит из нескольких частей. 

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

377b146f3b65a541526c1f0928327635.png

Ниже располагается список всех групп номенклатуры из справочника: 

? Реклама

4a71683e0d0406ae5fb61983df12ff85.png

Вы можете устанавливать курсор на нужную вам группу товаров, и в окне подбора ниже отобразятся товары из выбранной группы. 

Под группами располагается сам список товаров и некоторые дополнительные настройки. 

Работая с подбором, вы можете выбрать один из вариантов: 

  1. По справочнику. Отображаются все товары из справочника, независимо от их наличия на складе. 
  2. По остаткам номенклатуры. Отображаются только те товары, которые имеют остаток на складе. В списке товаров отображаются дополнительные колонки с общим остатком на складе и свободным остатком. 

adcb0a2e5e98962b93096c81ece53977.png

  1. По ценам номенклатуры. Отображаются только те товары, по которым указаны цены продажи. В списке товаров показывается дополнительная колонка с ценой. 

<object>Авиант? Реклама<object>881547abc20e8e3c07b1ffb06c78b771.png</object><object>Купите 1С Бухгалтерия, а в подарок духиПри покупке 1С ПРОФ дарим сертификат на 2000 руб Летуаль/Детский мир в подарок.Узнать больше</object></object>

  1. По остаткам и ценам номенклатуры. Этот вариант совмещает в себе варианты «по остаткам номенклатуры» и «по ценам номенклатуры». 

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

28d46951eb55e067681d4420aadccef7.png

Установим подбор по остаткам номенклатуры. Для поиска необходимого товара можно воспользоваться полем поиска наверху. Поиск товара возможен по наименованию, артикулу, коду и штрихкоду. 

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

<object>SCloud? Реклама<object>7ebd1e28e977daaa7b8cb94bfb20fdc3.png</object><object>Аренда 1С в облаке — просто, надежно и удобно!Скидка 20% на первый платеж до 31 мартаУзнать больше</object></object>

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

d5dee39ea81caf758b20a9ff6d689d4b.png

Повторный двойной клик по товару вызовет увеличение количества в строке до 2 шт. Т.е. если товар уже присутствует в заказе, он не добавляется повторно, а количество товара в заказе увеличивается. 

В момент добавления товара в заказ можно указывать необходимое количество и цену. Для этого установим внизу флаги «Запрашивать количество» и «Запрашивать цену»:

ca718833843d52df9b97e9de15dbaf60.png

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

? Реклама

e98df3ad454cb2a7928496fd318a2e04.png

Заказ покупателя после добавления вентилятора: 

96fe54c0f2f70cabdea340d1687f9714.png

Если по товару ведется учет по характеристикам, то можно также установить флаг «Запрашивать характеристику» там же. С такой настройкой при двойном клике по товару программа откроет окно для ввода количества и цены по каждой характеристике товара: 

95194e83475dbc4febbc6691f1a20f12.png

В поле количество указывается количество товара с данной характеристикой, которое нужно добавить в заказ. А в поле цена – цена на товар с данной характеристикой. 

Заказ покупателя после добавления женских босоножек: 

? Реклама

b81e2fefde7b189f5a7b5f761a6af7b1.png

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

Мероприятия

Блоги компаний

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

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

Сначала реализуем обработчик нажатия кнопки «Подобрать», которая открывает окно подбора (это может быть обычная форма выбора):

Параметр «МножественныйВыбор» устанавливайте на свое усмотрение. Параметр «Владелец» в процедуре «ОткрытьФорму» (третий по счету) назначается исходя из цели подбора (у меня цель добавить подобранные элементы в таблицу значений «ИтоговаяТаблица»).

Затем нам остается лишь реализовать событие «ОбработкаВыбора», это событие того элемента, который был указан как владелец формы подбора (у меня это элемент «ИтоговаяТаблица»):

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

На этом все, спасибо за внимание, надеюсь данная статья Вам помогла.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Загрузка…Используемые источники:

  • https://tokmakov.msk.ru/blog/item/97
  • soft/articles/417287/
  • https://1c-programmer-blog.ru/programmirovanie/podbor-v-upravlyaemyx-formax.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации