|
Puzzlers из мира 1С | ☑ | ||
---|---|---|---|---|
0
fisher
02.11.20
✎
16:48
|
Если в секции инициализации модуля формы внешней обработке УФ написать вывод сообщения и открыть обработку - сообщение выведется четыре раза.
Два раза - понятно почему. Но почему два раза? :) |
|||
1
Fedor-1971
02.11.20
✎
16:50
|
(0) и почему понятно вывод сообщения 2 раза?
|
|||
2
fisher
02.11.20
✎
16:50
|
(1) А это вопрос на сообразительность :)
|
|||
3
Fedor-1971
02.11.20
✎
16:57
|
(2) так куда положил вывод сообщения? в ПриСозданииНаСервере?
|
|||
4
Asmody
02.11.20
✎
17:00
|
(3) Написано русским языком "в секции инициализации модуля формы"
|
|||
5
fisher
02.11.20
✎
17:01
|
(3) Не. В доке 1С по структуре программных модулей это почему-то называют "разделом основной программы", хотя это всегда называлось секцией инициализации. Короче просто в модуле пишешь. Вне процедур и функций.
|
|||
6
Вафель
02.11.20
✎
17:03
|
зачем пытаться понять пому косячный код косячит?
|
|||
7
H A D G E H O G s
02.11.20
✎
17:04
|
Подключить-Создать?
|
|||
8
fisher
02.11.20
✎
17:06
|
(7) Очень, очень правдоподобно. Бинго, я бы сказал.
Потому что во встроенной обработке выводится два раза. |
|||
9
Многолетний Апельсин
02.11.20
✎
17:10
|
Очень любопытно,
Сделал такой код: #Если НаКлиенте Тогда Сообщить("НаКлиенте"); #ИначеЕсли НаСервере Тогда Сообщить("НаСервере") #КонецЕсли Платформа пишет: НаСервере НаСервере НаСервере НаКлиенте Интересно, откуда 3-й раз "НаСервере"? |
|||
10
fisher
02.11.20
✎
17:20
|
(9) Да, не сростается...
Видать еще какая-то фича внешних обработок срабатывает. Может, что-то с защитой от опасных действий связанное... Ну да гадать бесполезно. |
|||
11
Ботаник Гарден Меран
02.11.20
✎
17:46
|
Похоже на кэш метаданных.
Если изменить внутреннее имя обработки, то выведется четыре сообщения (три "НаСервере" и одно "НаКлиенте"). При повторном открытии - два ("НаСервере" и "НаКлиенте"). |
|||
12
Жан Пердежон
02.11.20
✎
17:48
|
кстати да, тоже 2 раза выводилось, пока имя не поменял
|
|||
13
Fedor-1971
02.11.20
✎
17:49
|
(9) так нормально
1 Компиляция для серверных процедур 2 компиляция для клиентских процедур 3 Собственно вызов НаСервере 4 вызов НаКлиенте |
|||
14
fisher
02.11.20
✎
17:50
|
(11) Похоже именно на Подключить-Создать (оно как кэш в том числе и работает). Почему-то при подключении два раза инициализирует.
|
|||
15
fisher
02.11.20
✎
17:54
|
Просто при повторном открытии менеджер внешних обработок находит ее в уже подключенных и открывает без спецэффектов.
|
|||
16
mistеr
02.11.20
✎
18:00
|
(13) При компиляции выполняется код? О_О
|
|||
17
Fedor-1971
02.11.20
✎
18:03
|
(16) 1с Интерпретатор с кэшем кода. Не?
|
|||
18
mistеr
02.11.20
✎
18:10
|
(17) ХЗ, но ЗАЧЕМ?!
|
|||
19
fisher
02.11.20
✎
18:11
|
Хотя не очень понятно, зачем вообще инициализировать модуль при подключении внешней обработки, не говоря уже про два раза. Похоже на багофичу.
|
|||
20
Fedor-1971
03.11.20
✎
09:39
|
(19) Возможно и баг, логика примерно такая:
компилим модуль, отправляем его в кэш и выполняем то, что не относится к обработчикам событий или функциям (типа выполняем инициализационные мероприятия). Вот система и дёргает код вывода сообщения лишних 2 раза, вполне возможно, что сия фича появилась с защитой от опасных действий |
|||
21
mistеr
03.11.20
✎
12:14
|
(20) Бредовая логика. При компиляции невозможно ничего выполнить, т.к. нет контекста.
|
|||
22
Fedor-1971
03.11.20
✎
12:28
|
(21) не совсем, мы дёрнули подключение внешней обработки и контекст таки есть,
а вот выполнить код инициализации формы сразу после компиляции, тут, наверно, есть какой-то глубинный смысл или косяк в платформе, а может то и другое в одном флаконе. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |