Вторым параметром использованной функции ОткрытьФорму является контекст формы обработки Фузеева контОбрФузеева, под которым понимается совокупность ее реквизитов (переменных диалога) и методов формы обработки. Этот параметр является выходным
145. Загрузите обработку: выберите Файл | Открыть, откройте папку Extforms, выберите файл Фузеева.ert, выберите Открыть.
145. Вставьте элемент: выберите Диалог, выберите Вставить | Текст, выберите мышью место размещения текста, в поле Заголовок введите СтавкиНДС, нажмите ОК.
146. Вставьте элемент: выберите Вставить | Реквизит Диалога, выберите мышью место размещения поля, в поле Идентификатор введите пер, выберите вкладку Тип, в списке Тип выберите Перечисление.СтавкиНДС, нажмите ОК.
Перечисление.СтавкиНДС определено в конфигурации и содержит такие идентификаторы значений: БезНДС, НДС10, НДС20…
147. Выберите Модуль обработки Фузеева, закомментируйте Пример 15.
148. Введите следующий код :
Пример 25.16. Контекст обработки
//Пример 16
//Начальные значения переменных диалога дЧ и пер
процедура ПриОткрытии()
дЧ=5.55;
пер=Перечисление.СтавкиНДС.ЗначениеПоНомеру(2); //НДС10
конецПроцедуры;
149. Проверьте синтаксис.
150 Сохраните обработку: Ctrl+S.
151. Откройте другую свою обработку: выберите Файл | Открыть, откройте папку Extforms, выберите файл ОткрытьФузеева.ert, выберите Открыть.
В обработке ОткрытьФузеева, из которой в результате применения функции ОткрытьФорму вызывается обработка Фузеева, создадим процедуру НовыйКонтекст, изменяющую значения переменных дЧ и пер диалога обработки Фузеева и обновляющую ее диалог. В качестве результата выведем состояние диалога обработки Фузеева до и после изменения значения переменных дЧ и пер.
152. Выберите Модуль обработки ОткрытьФузеева, отредактируйте код:
Пример 25.17. Контекст
//Пример 15+17
перем контОбрШолина;
// Изменяет значения переменных дЧ и пер и обновляет диалог обработки Фузеева
процедура НовыйКонтекст(контОбрФузеева)
Сообщить(контОбрФузеева.Дч); // 5.55
Сообщить(контОбрФузеева.пер);
Предупреждение("Сейчас будут изм. переменные дЧ и пер обработки
Фузеева");
// Изменяем переменные диалога дЧ и пер обработки Фузеева и смотрим на ее
диалог
контОбрФузеева.Дч = 7.98;
контОбрФузеева.пер = Перечисление.СтавкиНДС.ЗначениеПоНомеру(3); //НДС20
// Обновляем диалог обработки Шолина
контОбрФузеева.Форма.Обновить( );
конецПроцедуры // НовыйКонтекст
процедура Открыть( ) // Открывает обработку Фузеева
перем флаг, имяФайла;
флаг = ФС.ВыбратьФайл(0, имяФайла, ,
"Находим файл Фузеева.ert", "Отчет и обработки | *.ert");
если флаг = 1 тогда // Если файл обработки выбран
если ОткрытьФорму("Отчет", контОбрФузеева, имяФайла) = 0 тогда
Предупреждение("Не удается открыть обработку " + имяФайла);
Возврат;
иначе
НовыйКонтекст(контОбрФузеева);// Изменяем значения переменных дЧ и пер
конецЕсли; // и обновляем окно формы обработки Фузеева
иначе
Предупреждение("Файл обработки не выбран");
конецЕсли;
конецПроцедуры // Открыть
//закрывает отк. Обработку Фузеева, используя для доступа к методу Закрыть
// переменную модуля контОбрФузеева
процедура ПриЗакрытии( )
если ПустоеЗначение(контОбрФузеева) = 0 тогда
контОбрФузеева.Форма.Закрыть( )
конецЕсли;
конецПроцедуры
151. Проверьте синтаксис.
152 Сохраните обработку: Ctrl+S.
153 Запустите 1С:Предприятие: нажмите F11, выберите Отчеты | Открыть, выберите Открыть обработку, выберите вашу обработку Фузеева. ert , должен появится запрос на изменение переменных дЧ и пер, выберите ОК, в числовом поле поле должно быть 7.98, в другом 20%.
154. Закройте 1С:Предприятие
Структура контекста говорит о том, что он является объектом агрегированного типа, включающего компоненты (у нас реквизиты формы) и методы, употребляемые с обработкой.
155. Выберите окно обработки ОткрытьФузеева.ert
156. Перед вызовом
контОбрФузеева.Форма.Обновить( );
введитеоператор контОбрФузеева.Форма.дЧ.Видимость (0);
157. Проверьте синтаксис.
158. Сохраните обработку: Ctrl+S.
159. Запустите 1С:Предприятие: нажмите F11, выберите Отчеты | Открыть, выберите Открыть обработку, выберите вашу обработку Фузеева. ert , должен появится запрос на изменение переменных дЧ и пер, но элемента диалога дЧ не видно!.
160. Закройте 1С:Предприятие
Контекст формы (документа, списка справочника и др.) можно передавать в качестве входного/выходного параметра процедуры глобального модуля.
161. Выберите Метаданные, выберите Действия | Глобальный модуль, найдите в модуле строку комментария // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
162. Определите процедуру: введите перед кодом основной программы глобального модуля:
Пример 25.18. РаботаСКонтекстом
процедура РаботаСКонтекстом(конт) экспорт конт.Дч = 7.98; конт.пер = Перечисление.СтавкиНДС.ЗначениеПоНомеру(2); //НДС10 конт.Форма.дЧ.Видимость(0); //скрываем элемент диалога Дч конт.Форма.Обновить( ); конецПроцедуры
163. Закройте глобальный модуль
164. Откройте окно обработки Фузеева, выберите Модуль, закомментируйте Пример 16.
165. Введите код вызова процедуры из глобального модуля:
Пример 25.19. Пример 18
//Пример 18
процедура Выполнить()
РаботаСКонтекстом (Контекст);
конецПроцедуры
166. Проверьте синтаксис.
167. Сохраните обработку: Ctrl+S
168. Запустите 1С:Предприятие: нажмите F11, выберите Начало | Пуск, нажмите Пуск, должна появится форма, в которой значение НДС 10% видно, а 7.98 не видно.
169. Закройте 1С:Предприятие
170. Удалите добавленную процедуру: выберите Метаданные, выберите Действия | Глобальный модуль, найдите в модуле вашу процедуру РаботаСКонтекстом и удалите ее.