1С Предприятие. Практика программирования на платформе v7


Метод «ОткрытьПодбор» и предопределенная процедура модуля формы ОбработкаПодбора()


Рассмотрим другой метод заполнения форм объектов на примере заполнения табличной части документа «Приход».

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

Метод

ОткрытьПод6ор(<Объект>,<ИмяФормы>,<Контекстформы>,<ФлагМножВыбора>,<ТекЗнач>)

открывает форму для подбора значений.

<Объект> - строка с именем объекта агрегатного типа для подбора. Можно указывать:

"Справочник.ХХХХХ" или "Документ.ХХХХХ" или "Журнал.ХХХХХ" или "Журнал.Подчиненные" или

"ЖурналОпераций.ХХХХХ", "ПланСчетов.ХХХХХ" (если ХХХХХ не задан, то открывается подбор из

любого(всех) плана счетов) или "Отчет.ХХХХХХ' или, "Обработка.ХХХХХХ", где ХХХХХ - имя вида

соответствующего объекта, как он задан в конфигураторе.

<Имяформы> - строка с именем Формы подбора;

<Контекстформы> - необязательный параметр. Имя переменной, куда можно задать значение любого

типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как



атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную

контекст формы подбора. С помощью значения этого контекста можно затем произвольно

манипулировать формой подбора, пока она открыта. Пока форма открыта, тип значения данного

параметра равен 100 (см. ТипЗначения), если закрыта - 0.

<ФлагМножВыбора> - число: 1 - выбор нескольких значений; 0 - выбор одного значения, после чего

окно закрывается;

<ТекЗнэч> - необязательный параметр. В случае выбора из списка, здесь можно передать значение, на

которое следует изначально установить курсор при открытии формы подбора.

Доступ к методу возможен только в контексте Модуля формы.

Предопределенная процедура обработки подбора значения




ОбработкаПодбора(<Элемент>,<КонтФормы>)

<Элемент> - элемент справочника подбора или документ, передаваемый для обработки.

<КонтФормы> - контекст той формы, из которой шел подбор. Процедура может располагаться только в

программном модуле формы.

//Пример использования метода «ОткрытьПодбор» в форме документа «Приход».

Перем НомСтроки,СписокРасчетов;

Перем СписокРасчетов,  НомСтр;

// В шапке модуля

//___________________________________________

Процедура Подбор()

СписокРасчетов=Создать0бъект("СписокЗначений");

Для н=1 по  ГруппаРасчетов. ДляОборудования.Количество() Цикл

расч= ГруппаРасчетов. ДляОборудования.ПолучитьРасчет(н);

Приложение 1________________________________________________________________ 205

СписокРасчетов.ДобавитьЗначение(расч, расч.Наименование); КонецЦикла;

ОткрытьПодбор("Справочник.Оборудование", " ДляПодбора " , , 1, ); КонецПроцедуры //Подбор

//------

Процедура ОбработкаПодбора(ВыбранноеЗначение)

Перем ЗначениеРасчета, Позиция;

Если ВыбранноеЗначение.Выбран()=1 Тогда

Если ВыбранноеЗначение.Вид()="Оборудование" Тогда

НоваяСтрока();

НомСтр=НомерСтроки; Оборудование=ВыбранноеЗначение;

Контф_мы=ВыбранноеЗначение;

ОткрытьПодбор("Справочник.Единицы","",Контф_мы,0);

Иначе

ПолучитьСтрокуПоНомеру(НомСтр;

Единица=ВыбранноеЗначение;

цена_=Оборудование.Цена.Получить(ДатаДок);

Кол_во=1;

Если ВвестиЧисло(Кол_во,"Введите количество",6,2)=1 Тогда

Количество=Кол_во;

Если ВвестиЧисло(цена_,"Введите цену",10,2)=1 Тогда

НовЦена=цена_;

КонецЕсли;

КонецЕсли;

Сумма=Кол_во*цена_*Единица. Коэффициент;

Если СписокРасчетов.ВыбратьЗначение(ЗначениеРасчета,

"Выберите расчет".Позиция,,0)=1 Тогда

Расчет= ЗначениеРасчета;

КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецПроцедуры

206______________________ 1С:Предприятие. Практика программирования на платформе V7

Процедуру Подбор() надо поместить в соответствующую кнопку, аналогично кнопке «Печать».В форме списка справочника Единицы надо определить Владельца при её программном открытии методом ОткрытьПодбор("Справочник.Единицы", «», Контф_мы, 0). Значение Владельца передается через параметр Контф_мы.

Для этого опишем в модуле формы списка справочника Единицы предопределенную процедуру ПриОткрытии(). Значение параметра формы в открываемой форме списка равно значению «Контекста формы» (Контфмы), ТипЗначения()=11 — это справочник.

Процедура ПриОткрытии()

Если  (ТипЗначения(Форма.Параметр)=11)   Тогда

//Для метода ОткрытьПодбор из документа

// Передаём значение типа справочник ИспользоватьВладельца(Форма.Параметр,0);

КонецЕсли;

КонецПроцедуры //ПриОткрытии

Приложение 2________________________________________________________________ 207


Содержание раздела