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

29.06.18

Разработка - Механизмы платформы 1С

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

Скачать исходный код

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

 

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

 

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

   

 

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

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

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

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

 

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

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

 

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

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

   

 

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

   

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

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

   
 

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

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

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

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

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

 

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

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

 
  Транзакция

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

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

   

ПриЗаписи()

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

 

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

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

 
 

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

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

 

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

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

   

 

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

   

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

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

   

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

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

   
     

Примечания:

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

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

 

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

См. также

Сервисы интеграции без Шины и интеграции

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    2523    dsdred    16    

57

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    5777    dsdred    53    

81

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    5773    YA_418728146    25    

67

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6904    dsdred    36    

113

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18983    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12648    human_new    27    

76

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    9320    YA_418728146    6    

143

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6502    sebekerga    54    

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


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

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

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

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

выполняется до процедур обработчиков, в том числе ПриЧтенииНаСервере() - код который расположен ПОСЛЕ всех процедур и функций
в модуле формы
в модуле объекта
16. Dach 373 13.08.18 10:49 Сейчас в теме
(14) товарищ (15) имеет ввиду, видимо, компиляцию программного кода модуля формы и модуля объекта... И про определение операторов тела программы типа "мСпециальныйФлаг = Истина". В принципе да, важное замечание - можно добавить в статью пару слов про последовательность компиляции
17. sml 41 20.08.18 17:33 Сейчас в теме
Рекомендую дополнить заголовок словом "объекта". Для УФ набора записей, записи, отчета и обработки существуют другие процедуры и функции.
Cthulhu; kiruha; +2 Ответить
18. dr2c 44 31.08.18 16:36 Сейчас в теме
Под книжкой "Разработка управляемых форм" имелась в виду "Разработка управляемого интерфейса" с Радченко и Хрусталевой?
Student1C; +1 Ответить
19. stas_ganiev 1775 03.09.18 03:01 Сейчас в теме
20. NittenRenegade 108 23.11.18 18:40 Сейчас в теме
Очень хорошая схема, автор молодец. Есть дополнение к:
Если проверяемый реквизит привязан к функциональной опции, то при ее отключении заполнение реквизита проверяться не будет (имя отсутствует в массиве ПроверяемыеРеквизиты);

Нужно уточнить, что это верно для непараметризованных функциональных опций. Читаем:
Поскольку от разработчика зависит, как и в какой момент в конкретной форме будут установлены параметры функциональных опций, проверяемые реквизиты, связанные с параметризуемыми функциональными опциями, всегда присутствуют в массиве ПроверяемыеРеквизиты. Если в конкретной ситуации заполненность этого реквизита проверять не нужно, разработчик самостоятельно должен удалить его из массива проверяемых реквизитов.


Взводится такая ФО примерно вот так:
ПараметрыОпций = Новый Структура("Поставщик", Объект.Поставщик);

УстановитьПараметрыФункциональныхОпцийФормы(ПараметрыОпций);
stas_ganiev; +1 Ответить
21. salazar 1 12.04.19 11:36 Сейчас в теме
Вот ещё картинка
Прикрепленные файлы:
vis_tmp; SagittariusA; Cthulhu; balanceprof; Blagin; user591389_aska_rabota; Suslik_Johns; +7 Ответить
26. Suslik_Johns 17.02.20 12:26 Сейчас в теме
(21) Спасибо. Хорошие схемы.
22. salazar 1 12.04.19 11:37 Сейчас в теме
И другая
Прикрепленные файлы:
vis_tmp; balanceprof; Blagin; user591389_aska_rabota; Suslik_Johns; +5 Ответить
23. ovadia 19.10.19 13:42 Сейчас в теме
Есть вообще какой-то справочник или манул 1С:8.3 по всем событиям? С учетом того, что будущий читатель может и не знать как называются события, то есть СП не поможет.
24. stas_ganiev 1775 23.10.19 06:21 Сейчас в теме
(23)Руководство разработчика и синтакс-помощник ))
25. ovadia 23.10.19 20:15 Сейчас в теме
(24) Отличная шутка. Так я написал, что СП не поможет, так как пользователь не знает названия функций. Какое конкретно руководство, дайте ссылку на источник.
Оставьте свое сообщение