Вход | Регистрация
 

Puzzlers из мира 1С

Puzzlers из мира 1С
Я
   fisher
 
02.11.20 - 16:48
Если в секции инициализации модуля формы внешней обработке УФ написать вывод сообщения и открыть обработку - сообщение выведется четыре раза.
Два раза - понятно почему. Но почему два раза? :)
   Fedor-1971
 
1 - 02.11.20 - 16:50
(0) и почему понятно вывод сообщения 2 раза?
   fisher
 
2 - 02.11.20 - 16:50
(1) А это вопрос на сообразительность :)
   Fedor-1971
 
3 - 02.11.20 - 16:57
(2) так куда положил вывод сообщения? в ПриСозданииНаСервере?
   Asmody
 
4 - 02.11.20 - 17:00
(3) Написано русским языком "в секции инициализации модуля формы"
   fisher
 
5 - 02.11.20 - 17:01
(3) Не. В доке 1С по структуре программных модулей это почему-то называют "разделом основной программы", хотя это всегда называлось секцией инициализации. Короче просто в модуле пишешь. Вне процедур и функций.
   Вафель
 
6 - 02.11.20 - 17:03
зачем пытаться понять пому косячный код косячит?
   H A D G E H O G s
 
7 - 02.11.20 - 17:04
Подключить-Создать?
   fisher
 
8 - 02.11.20 - 17:06
(7) Очень, очень правдоподобно. Бинго, я бы сказал.
Потому что во встроенной обработке выводится два раза.
   Многолетний Апельсин
 
9 - 02.11.20 - 17:10
Очень любопытно,
Сделал такой код:
#Если НаКлиенте Тогда

    Сообщить("НаКлиенте");
#ИначеЕсли НаСервере Тогда

    Сообщить("НаСервере")
#КонецЕсли

Платформа пишет:
НаСервере
НаСервере
НаСервере
НаКлиенте

Интересно, откуда 3-й раз "НаСервере"?
   fisher
 
10 - 02.11.20 - 17:20
(9) Да, не сростается...
Видать еще какая-то фича внешних обработок срабатывает. Может, что-то с защитой от опасных действий связанное... Ну да гадать бесполезно.
   Ботаник Гарден Меран
 
11 - 02.11.20 - 17:46
Похоже на кэш метаданных.
Если изменить внутреннее имя обработки, то выведется четыре сообщения (три "НаСервере" и одно "НаКлиенте").
При повторном открытии - два ("НаСервере" и "НаКлиенте").
   Жан Пердежон
 
12 - 02.11.20 - 17:48
кстати да, тоже 2 раза выводилось, пока имя не поменял
   Fedor-1971
 
13 - 02.11.20 - 17:49
(9) так нормально
1 Компиляция для серверных процедур
2 компиляция для клиентских процедур
3 Собственно вызов НаСервере
4 вызов НаКлиенте
   fisher
 
14 - 02.11.20 - 17:50
(11) Похоже именно на Подключить-Создать (оно как кэш в том числе и работает). Почему-то при подключении два раза инициализирует.
   fisher
 
15 - 02.11.20 - 17:54
Просто при повторном открытии менеджер внешних обработок находит ее в уже подключенных и открывает без спецэффектов.
   mistеr
 
16 - 02.11.20 - 18:00
(13) При компиляции выполняется код? О_О
   Fedor-1971
 
17 - 02.11.20 - 18:03
(16) 1с Интерпретатор с кэшем кода. Не?
   mistеr
 
18 - 02.11.20 - 18:10
(17) ХЗ, но ЗАЧЕМ?!
   fisher
 
19 - 02.11.20 - 18:11
Хотя не очень понятно, зачем вообще инициализировать модуль при подключении внешней обработки, не говоря уже про два раза. Похоже на багофичу.
   Fedor-1971
 
20 - 03.11.20 - 09:39
(19) Возможно и баг, логика примерно такая:
компилим модуль, отправляем его в кэш и выполняем то, что не относится к обработчикам событий или функциям (типа выполняем инициализационные мероприятия).

Вот система и дёргает код вывода сообщения лишних 2 раза, вполне возможно, что сия фича появилась с защитой от опасных действий
   mistеr
 
21 - 03.11.20 - 12:14
(20) Бредовая логика. При компиляции невозможно ничего выполнить, т.к. нет контекста.
   Fedor-1971
 
22 - 03.11.20 - 12:28
(21) не совсем, мы дёрнули подключение внешней обработки и контекст таки есть,
а вот выполнить код инициализации формы сразу после компиляции, тут, наверно, есть какой-то глубинный смысл или косяк в платформе, а может то и другое в одном флаконе.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.