Вторым параметром использованной функции ОткрытьФорму является контекст формы обработки Фузеева контОбрФузеева, под которым понимается совокупность ее реквизитов (переменных диалога) и методов формы обработки. Этот параметр является выходным
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. Удалите добавленную процедуру: выберите Метаданные, выберите Действия | Глобальный модуль, найдите в модуле вашу процедуру РаботаСКонтекстом и удалите ее.