понедельник, 7 мая 2018 г.

ПОДБОР В УПРАВЛЯЕМЫХ ФОРМАХ


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

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

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

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

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

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

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

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

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

Комментариев нет:

Отправить комментарий

Печать чека ККМ из драйвера ККМ

Суть проблемы: Пробиваем чек из 1С: Бухгалтерии. Чек пробит не  правильно. Теперь нужно сделать чек коррекции. Но в программе это сделать н...