Механизм реализации кнопки подбор в управляемых формах. Подсмотрел тут
Допустим у нас есть некий справочник, элементы которого мы будем подбирать, и некая форма с кнопкой «Подобрать» и таблицей значений, в которую попадает результат подбора.
Сначала реализуем обработчик нажатия кнопки «Подобрать», которая открывает окно подбора (это может быть обычная форма выбора):
&НаКлиенте Процедура ДобавитьНабор(Команда) ПараметрыПодбора = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина); ОткрытьФорму("Справочник.НаборыЧертежей.ФормаВыбора", ПараметрыПодбора,
Элементы.ИтоговаяТаблица); КонецПроцедуры
Параметр «МножественныйВыбор» устанавливайте на свое усмотрение. Параметр «Владелец» в процедуре «ОткрытьФорму» (третий по счету) назначается исходя из цели подбора (у меня цель добавить подобранные элементы в таблицу значений «ИтоговаяТаблица»).
Затем нам остается лишь реализовать событие «ОбработкаВыбора», это событие того элемента, который был указан как владелец формы подбора (у меня это элемент «ИтоговаяТаблица»):
&НаКлиенте Процедура ИтоговаяТаблицаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ИтоговаяТаблицаОбработкаВыбораНаСервере(ВыбранноеЗначение); КонецПроцедуры
В принципе, на этом все, дальше можно делать с параметром «ВыбранноеЗначение» (в котором храниться результат подбора) все, что требуется. Например я передаю его в процедуру, которая проверяет не добавлен ли уже такой элемент в таблицу, и если нет, то добавляет его:
&НаСервере Процедура ИтоговаяТаблицаОбработкаВыбораНаСервере(ВыбранноеЗначение) Для Каждого вЗнч Из ВыбранноеЗначение Цикл Если ИтоговаяТаблица.НайтиСтроки(Новый Структура("Чертеж", вЗнч)).Количество() = 0 Тогда нСтр = ИтоговаяТаблица.Добавить(); нСтр.Чертеж = вЗнч.Чертеж; нСтр.Предмет = вЗнч.ПроизводимыйПродукт; КонецЕсли; КонецЦикла; КонецПроцедуры
Комментариев нет:
Отправить комментарий