КОНТЕКСТ ОБРОБКИ ПРОБА

Другим параметром використаної в попередньому розділі функції ОткритьФорму єконтекст форми обробкиПроба, під яким розуміється сукупність її реквізитів (змінних діалогу) й методів форми обробки Цей параметр є вихідним

Проілюструємо методи роботи з контекстом на прикладі обробки, діалог якої містить два поля (рис 142): одне числового типу (ДЧ), інше типу Перерахування (пер)

Рис 142 Обробка Проба з полями ДЧ і пров

Визначаючи тип другого поля на закладці Тип в діалозі завдання його властивостей, виберемо перерахування ТіпПлатежа (рис 143)

Рис 143 Вибір виду перерахування для поля пров

Це перерахування визначено в конфігурації і містить наступні ідентифікатори значень:

• ВсеДолгіПоЗарплате

• Зарплата

• Аванс

• МежрасчВиплата

• ВиплатиНаДетей

• Дивіденди

• ЕдіновременниеПособія

У модулі модифікованої обробки Проба запишемо зумовлену процедуру прочинене з двома операторами присвоювання:

процедура відкриття ()

/ / Початкові значення змінних діалогу ДЧ і пер

ДЧ = 555

пер = ПеречислениеТипПлатежаЗначениеПоНомеру (2) / / Зарплата

КонецПроцедури / / прочинене

У обробці Відкрити (див рис 140), з якої в результаті застосування функції ОткритьФорму викликається обробка Проба, створимо процедуру НовийКонтекст, изменяющую значення зміннихДЧ іпердіалогу обробки Проба і обновляющую її діалог В якості результату виведемо стан діалогу обробки Проба до і після зміни значення змінних ДЧ та пров

Щоб разом з обробкою Відкрити закривалася і обробка Проба, в зумовленою процедурі ПріЗакритіі першої обробки виконаємо оператор

контОбрПробаФормаЗакрить ()

Таким чином, модуль обробки Відкрити міститиме наступний код: перем контОбрПроба / / Змінна модуля обробки Відкрити

/ / Змінює значення змінних ДЧ і пер і оновлює діалог обробки Проба процедура НовийКонтекст (контОбрПроба)

Попередження (Зараз будуть змінені змінні ДЧ і пер обробки Проба )

/ / Змінюємо змінні діалогу ДЧ і пер обробки Проба

/ / І дивимося на її діалог результати спостережень наведено на рис 144 контОбрПробаДч = 798

контОбрПробапер =

ПеречислениеТипПлатежаЗначениеПоНомеру (З) / / Аванс

/ / Оновлюємо діалог обробки Проба контОбрПробаФормаОбновить () КонецПроцедури / / НовийКонтекст

процедура Відкрити () / / Відкриває обробку Проба перем прапор, имяфайла

прапор = ФСВибратьФайл (0, имяфайла,

“Знаходимо файл Пробаеrt, Звіт та обробки | * Ert )

якщо прапор = 1 тоді / / Якщо файл обробки обраний якщо ОткритьФорму (Звіт, контОбрПроба, имяфайла) = 0 тоді

Попередження (Не вдається відкрити обробку + имяфайла)

повернення інакше

НовийКонтекст (контОбрПроба) / / Змінюємо значення змінних ДЧ і пер

КонецЕсли / / І оновлюємо вікно форми обробки Проба інакше

Попередження (Файл обробки не вибраний”)

КонецЕсли КонецПроцедури / / Відкрити

/ / Закриває відкриту обробку Проба, використовуючи для доступу до методу Закрити

/ / Змінну модуля контОбрПроба

процедура ПріЗакритіі ()

якщо ПустоеЗначеніе (контОбрПроба) = 0 тоді контОбрПробаФормаЗакрить ()

КонецЕсли

КонецПроцедури / / ПріЗакритіі

Рис 144 Діалог обробки Проба: а до оновлення б після нього

Структура контексту говорить про те, що він є обєктом агрегованого типу, що включає компоненти (у нашому випадку реквізити форми) і методи, які вживаються з обробкою Наведемо ще один приклад управління формою обробки Проба через її контекст Так, якщо в процедуру перед викликом

контОбрПробаФормаОбновить () виконати оператор

контОбрПробаФормадЧВидимость (0) / / Приховуємо елемент діалогу ДЧ

то рис 144, б прийме наведений на рис 145 вигляд

Рис 145 Управління формою обробки Проба через її контекст Зауваження   МінливаконтОбрПроба,яка повертається функцією ОткритьФорму,

має тип ГрупповойКонтекст У цьому можна переконатися, виконавши виклик Повідомити (ТіпЗначеніяСтр (контОбрПроба)) / / Надрукував ГрупповойКонтекст

Це говорить про те, що через зміннуконтОбрПробадоступні всі вживаються з формою методи: методи форми, елементів її діалогу, контексту модуля форми і контексту модуля форми звіту (обробки)

Контекст форми можна передати в якості вхідного / вихідного параметра процедурі чи функції глобального модуля Нехай, наприклад, в глобальному модулі визначена процедура

процедура РаботаСКонтекстом (конт) експорт контДч = 798

контпер =

ПеречислениеТипПлатежаЗначениеПоНомеру (З) / / Аванс

контФормадЧВідімость (0)

//

Приховуємо

елемент діалогуд Ч

контФормаОбновіть ()

//

Оновлюємо діалог обробки Проба

КонецПроцедури / / РаботаСКонтекстом

При виклику такої процедури в якості фактичного параметра використовується змінна Контекст Наприклад:

процедура Виконати () / / Повязана з кнопкою Пуск обробки Проба РаботаСКонтекстом (Контекст)

КонецПроцедури / / РаботаСКонтекстом

Результат такого виклику см на рис 145

Зауваження   Реально процедура РаботаСКонтекстом після запуску вищенаведеного прикладу видалена з глобальної модуля

Зрозуміло, контекст обробки можна передати як вхідний / вихідний параметр процедурі чи функції, розміщених в модулі обробки Наприклад, запишемо в модулі обробки Проба наступний код:

процедура РаботаСКонтекстомВМодуле (конт) контДч = 798

контпер =

ПеречислениеТипПлатежаЗначениеПоНомеру (З) / / Аванс

контФормадЧВідімость (0)

//

Приховуємо елемент діалогу ДЧ

контФормаОбновіть ()

//

Оновлюємо діалог обробки Проба

КонецПроцедури / / РаботаСКонтекстомВМодуле

процедура Виконати () / / Повязана з кнопкою Пуск обробки Проба РаботаСКонтекстомВМодуле (Контекст)

КонецПроцедури / / Виконати

Виконання коду дасть той же ефект, що і виклик процедури РаботаСКонтекстом глобального модуля Водночас очевидна надмірність такого підходу: область дії змінних діалогу і процедур форми поширюється на всі програмні одиниці її модуля

Зауваження  Все сказане щодо контексту обробки можна застосувати і до контексту довільної форми: документа, форми списку довідника та ін

Джерело: Бартеньев О В 1С: Підприємство: програмування для всіх Базові обєкти та розрахунки на одній дискеті М: Діалог-МІФІ, 2005 464 с

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*