Никогда не
указывайте друзьям на их ошибки. Урок 27. |
Сегодня мы рассмотрим одну из сервисных
возможностей, предоставляемых системой. Это
"подбор". На мой взгляд, это механизм очень
удобный, но, тем не менее, он не достаточно широко
используется конфигурациях. Суть подбора: он
позволяет быстро заполнять форму элементами,
содержащимися в другой форме. Общеизвестный
пример: подбор товаров в документах (например, в
расходной накладной). Простой выбор объектов
мало интересен - в табличную часть документа тоже
можно выбрать товар. Отличие подбора заключается
в том, что в форму, где будет происходить выбор
объектов (например, товаров), можно передать
значение. И это очень важно - с помощь этого
значения можно фильтровать выбираемые объекты
или выводить дополнительную информацию о них
(например, остатки товаров по определенному
складу). Реализация механизма подбора. В подборе всегда присутствуют две формы: заполняемая форма (будем называть ее формой А) и форма, в которой происходит выбор элементов (форма Б). Рассмотрим, что необходимо сделать в обеих формах для организации простейшего подбора. Форма А. 1. Для того чтобы начать подбор, необходимо
вызвать один единственный метод
ОткрытьПодбор(....). Обычно это происходит при
нажатии какой-либо кнопки в форме А.
Рассмотрим параметры, передаваемые методу. Метод ОткрытьПодбор() - окрывает форму Б, из
которой будет происходить выбор элементов для
заполнения формы А. Теперь пользователю остается
только найти нужный элемент и нажать Enter или
дважды щелкнуть мышкой. Как только пользователь
это сделал, в модуле формы А срабатывает
предопределенная процедура ОбработкаПодбора().
Параметры процедуры: Процедура ОбработкаПодбора(зн, конт) Уточнение: пользователь для выбора значения в форме подбора может нажать Enter или дважды щелкнуть мышкой. Это работает только в списках: справочниках или журналах. Но есть еще один способ активизировать предопределенную процедуру ОбработкаПодбора(). Это можно сделать с помощью метода ВыполнитьВыбор(). Применение метода: Форма.ВыполнитьВыбор(зн), где зн - то значение, которое будет передано в Обработку Подбора. Как это используется: пример можно найти в типовой конфигурации Торговля и склад 8.7. При подборе, товар сначала попадает в таблицу значений в форме списка товаров, а в документ уже передается сформированная таблица значений. Остается только рассмотреть передачу значений между формами А и Б. Значения двигаются в обе стороны: 1. Из формы Б в форму А передаются значения выбранные пользователем 2. Из формы А в форму Б передаются значения, предназначенные для определения параметров выборки. Это может быть склад (для показа остатков по конкретному складу), контрагент (для выбора документов) и т.д. Мне известно 2 способа передачи значений (имеются в виду нормальные способы, а не с помощью внешних файлов) 1 способ. С помощью третьего параметра
в методе ОткрытьПодбор(). Рассмотрим на примере.
Будем осуществлять подбор товаров из
справочника "Номенклатура". ..................... В форме журнала расходных накладных в процедуре приОткрытии() получим параметры: Процедура ПриОткрытии() 2 способ. Снова используется метод ОткрытьПодбор() и его третий параметр. Оказывается, как только мы передали туда свое значение, оттуда пришел Контекст открытой формы. И, обращаясь через этот контекст, мы можем управлять этой формой как захотим! Для тех, кто не знает, что такое контекст: контекст - это совокупность методов, реквизитов доступных в данном модуле. Это мое произвольное определение, но его сейчас нам будет достаточно. Итак, рассмотрим пример: Процедура Сформировать() Важно. Подбор можно вызывать не только из формы документа, но и для любой другой формы. Задачи для самостоятельного решения:
|