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

Программирование - Практика программирования

Жизненный цикл управляемой формы управляемая форма управляемые формы УФ

210
Прочитав когда-то давно книжку "Разработка управляемых форм", составил для себя такую схемку-напоминалку для обращения в процессе разработки. С тех пор не раз выручала и избавляла от необходимости лезть в гуглы.

 

Модуль формы (клиент) Модуль формы (сервер) Модуль объекта (сервер)

 

1. Открытие формы

   

 

ПриЧтенииНаСервере()(1)

Только для существующего объекта. Подготовка доп.данных, зависящих от данных объекта. Объект - основной элемент открываемой формы; ТекущийОбъект - объект, прочитанный из БД (доступны экспортные методы объекта)

ОбработкаЗаполнения()(1)

Только для нового объекта. Начальное заполнение объекта данными. Доступны ДанныеЗаполнения (ссылка на объект-основание либо структура отбора). В случае "СтандартнаяОбработка = Истина", после обработки заполнения, обрабатываются сначала ДанныеЗаполнения, затем ЗначенияЗаполнения

 

ПриСозданииНаСервере()

Окончательная подготовка формы (ее представления) к открытию

 

ПриОткрытии()

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

   

 

2. Запись объекта из формы

   

ПередЗаписью()

Анализ готовности вспомогательных данных для записи объекта

   
 

1. ОбработкаПроверкиЗаполненияНаСервере()

Проверка данных, не относящихся к объекту. Параметр ПроверяемыеРеквизиты содержит массив имен реквизитов формы

Механизм проверки заполнения(2)
   

2. ОбработкаПроверкиЗаполнения()

Всё, что относится к проверкам реквизитов основного объекта БД. Параметр ПроверяемыеРеквизиты содержит массив имен реквизитов объекта

 

ПередЗаписьюНаСервере()

Объект - основной реквизит формы объекта; ТекущийОбъект - объект, который реально будет записан в БД. Анализировать данные и дозаполнять реквизиты нужно через ТекущийОбъект, модификация Объекта ни к чему не приведет. Обработчик вызывается только при записи из формы

 
  Транзакция

ПередЗаписью()

Вызывается при любом способе записи. Данные объекта записываются в БД, но транзакция не закрывается

   

ПриЗаписи()

Выполняются действия над доп.данными, которые неразрывно связаны с основными данными объекта

 

ПриЗаписиНаСервере()

Предназначение аналогично ПриЗаписи(), но при обработке доп.данных можно использовать данные формы. ТекущийОбъект - данные, которые были записаны в БД, работать следует именно с ним; Объект - данные основного реквизита формы, которые были до записи, его модификация бесполезна. Если это запись нового объекта, то у Объект свойство Ссылка пустое, а у ТекущийОбъект уже заполнено

 
 

ПослеЗаписиНаСервере()

Действия над формой, которые выполняются только в том случае, когда объект гарантированно записан. ТекущийОбъект загружен в Объект, и теперь следует работать с Объектом, т.к. ТекущийОбъект будет уничтожен после обработчика. Но его можно использовать для вызова экспортных методов объекта

 

ПослеЗаписи()

Действия, которые невозможно выполнить на сервере, или требующие интерактивного взаимодействия с пользователем. Объект гарантированно записан

   

 

3. Закрытие формы

   

ПередЗакрытием()

Проверка, можно закрыть форму или нельзя. Если отключить стандартную обработку, то форма будет закрыта, независимо от модифицированности

   

ПриЗакрытии()

Выполняется, если форма 100% закрывается. На момент вызова пользователь форму уже не видит

   
     

Примечания:

1) Вызывается только один из двух обработчиков, в зависимости от того, записан объект в БД или создаётся новый;

2) Параметр Отказ нужен для отказа от записи объекта (не будет вызываться обработчик ПередЗаписьюНаСервере()). Чтобы отказаться от проверки заполнения, нужно очистить массив ПроверяемыеРеквизиты. При этом, если в обработчике [1] удалить из массива значение Объект, то обработчик [2] вызываться не будет. Если проверяемый реквизит привязан к функциональной опции, то при ее отключении заполнение реквизита проверяться не будет (имя отсутствует в массиве ПроверяемыеРеквизиты);

 

210

Скачать файлы

Наименование Файл Версия Размер
Жизненный цикл управляемой формы. Шпаргалка разработчика
.docx 21,11Kb
29.06.18
48
.docx 1.0 21,11Kb 48 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. nik_lankaster 29.06.18 09:49 Сейчас в теме
Очень кстати. Спасибо что поделились)
2. leosoft 127 29.06.18 11:25 Сейчас в теме
3. ildary 29.06.18 11:29 Сейчас в теме
Большое спасибо за наглядную подсказку!
4. EMelihoff 29.06.18 11:44 Сейчас в теме
Хорошо, нашёл время сделать схему, у меня на стене висит скан страницы из книги Радченко, т.к. "кирпичи"
5. CyberCerber 219 29.06.18 11:57 Сейчас в теме
Наглядная схема, спасибо
Однако есть не все события. Для полноты картины не хватает ПередЗагрузкойДанныхИзНастроекНаСервере и подобных.
adhocprog; Alias; logarifm; +3 Ответить
8. benony 735 29.06.18 13:56 Сейчас в теме
(5)
(6)
Возможно, картина не полная, не судите строго...
Выписал то, на что сам Радченко обращал внимание, в другие источники некогда было лазить. Но, по опыту, могу сказать, что большего пока и не требовалось))
Переопределение параметров однозначно входит в жизнь формы, с ними там целая эпопея. Но вот как-то без них...
(7)
Спасибо, загляну!
9. CyberCerber 219 29.06.18 14:35 Сейчас в теме
(8) Я, бывает, в работе сталкиваюсь, когда нужно как-то обработать значения полей формы, которые были сохранены у пользователя в настройках. При создании на сервере - это еще рано, при открытии - можно, но это на клиенте. Самое правильное - это вот таких специальных событиях.
11. logarifm 1017 01.07.18 19:04 Сейчас в теме
(5)
ПередЗагрузкойДанныхИзНастроекНаСервере


Это да, но уже они с более новых платформ. Я так понимаю автор хотел основную механику.
6. SlavaKron 29.06.18 12:16 Сейчас в теме
Переопределение параметров открываемой формы перед созданием входит в её жизненный цикл?
10. logarifm 1017 01.07.18 18:39 Сейчас в теме
На самом деле не весьма наглядно, поскольку на одном уровне расположены ПриЧтенииНаСервере() и ОбработкаЗаполнения()
. На самом деле вначале обработчики происходят МодуляОбъекта, а потом уже на стороне модулей формы но никакак ни наодном уровне. исправьте!
13. benony 735 04.07.18 02:03 Сейчас в теме
(10) Разве можно говорить о порядке двух обработчиков, один из которых выполняется только для нового объекта, а другой - только для существующего? Они взаимоисключаемые )) Не вижу смысла исправлять.
12. kiruha 370 02.07.18 11:04 Сейчас в теме
Еще пропущено
1) Код модуля формы
2) Код модуля объекта

И это основные механики.

из новых ОбработкаЗаписиНового

Кстати попробуйте догадайтесь в каком порядке происходит вызов кода модуля формы ))
14. benony 735 04.07.18 02:06 Сейчас в теме
(12) Не понял вашего замечания. По-моему, именно эти вещи отмечены на схеме.
А по поводу дополнительных обработчиков, которых нет на схеме, еще раз повторюсь: я не претендую на абсолютную полноту ))
15. kiruha 370 04.07.18 10:47 Сейчас в теме
(14)
Открытие формы

выполняется до процедур обработчиков, в том числе ПриЧтенииНаСервере() - код который расположен ПОСЛЕ всех процедур и функций
в модуле формы
в модуле объекта
16. Dach 199 13.08.18 10:49 Сейчас в теме
(14) товарищ (15) имеет ввиду, видимо, компиляцию программного кода модуля формы и модуля объекта... И про определение операторов тела программы типа "мСпециальныйФлаг = Истина". В принципе да, важное замечание - можно добавить в статью пару слов про последовательность компиляции
17. sml 37 20.08.18 17:33 Сейчас в теме
Рекомендую дополнить заголовок словом "объекта". Для УФ набора записей, записи, отчета и обработки существуют другие процедуры и функции.
18. dr2c 39 31.08.18 16:36 Сейчас в теме
Под книжкой "Разработка управляемых форм" имелась в виду "Разработка управляемого интерфейса" с Радченко и Хрусталевой?
19. benony 735 03.09.18 03:01 Сейчас в теме
Оставьте свое сообщение