Имя: Пароль:
1C
1С v8
Событие "ПриСменеСтраницы" в управляемой форме
0 LordCMEPTb
 
23.04.14
11:25
Доброго дня!
Интересует вопрос, какой код позволить активировать событие "ПриСменеСтраницы" в управляемой форме при программной смене страницы?
Небольшая обработка: http://yadi.sk/d/Iaq1KbjTN3nnb
1 Wobland
 
23.04.14
11:26
sendkeys. событие - это событие
2 LordCMEPTb
 
23.04.14
11:29
(1) Можно уточнить, что имелось ввиду и как это применимо к 1С?
3 Wobland
 
23.04.14
11:39
я уж не помню в точности те слова, которые мне на 2м курсе рассказывали.. чтобы произошло событие СменаСтраницы, нужно таки сменить сраницу
4 Wobland
 
23.04.14
11:39
+(3) интерактивно
5 LordCMEPTb
 
23.04.14
11:43
(4) Интерактивно менять страницу не получится, ибо закладки скрыты по техническим причинам. Почему-то мне кажется, что для управлением отображением реквизитов формы лучше сделать переключение страниц, чем пересоздание всех реквизитов и элементов.
(3) А хотелось бы увидеть код для программной смены страницы, при котором бы выполнилась процедура "ПриСменеСтраницы"...
6 Адский плющ
 
23.04.14
11:45
А самому вызвать обработку при смене не судьба?
7 Defender aka LINN
 
23.04.14
11:46
(0) Примерно такой:

    ПриСменеСтраницы(Элементы.ГруппаСтраницы, ТекущаяСтраница);
8 Wobland
 
23.04.14
11:48
(5) процедуры не умеешь вызывать?
9 LordCMEPTb
 
23.04.14
11:49
Конечно же судьба, вот только зачем существует событие для страниц управляемой формы "ПриСменеСтраницы", которое, судя по описанию из спинтакс-помощника, возникает при переключении с одной страницы на другую?
(7) А без костыльно-ориентированного программирования не получится?
10 Wobland
 
23.04.14
11:50
(9) внезапно оно существует для возможности что-то сделать  при переключении с одной страницы на другую
11 LordCMEPTb
 
23.04.14
11:50
(10) Под какой платформой?
12 Адский плющ
 
23.04.14
11:50
(9) События для пользователей, а не для шаловливых кодерских ручонок. Вынеси обработку при смене в отдельную процедуру и её вызывай.
13 Wobland
 
23.04.14
11:51
(11) за 8.0 не скажу
14 LordCMEPTb
 
23.04.14
11:51
(12) Тогда почему в обычном приложении работает это событие как при ручной смене страниц, так и при программной?
15 Wobland
 
23.04.14
11:52
(14) а всё потому, что кто-то врёт
16 Defender aka LINN
 
23.04.14
11:52
(9) В чом костыль-то? Событие возникает при ИНТЕРАКТИВНОЙ смене страницы, чтобы мог отработать некий код. Если программист меняет страницу программно, то ему и решать, какой код должен отработать, не факт, что целиком весь обработчик.

Как же одинэснегов всегда поражает необходимость в языке программирования писать код...
17 Адский плющ
 
23.04.14
11:52
(14) В обычном приложении много ещё чего через заднее место.
18 LordCMEPTb
 
23.04.14
11:56
(16) Костыль в том, что в синтакс-помощнике не указано, что данное событие вызывается при ИНТЕРАКТИВНОЙ смене страницы, а для меня смена страницы - это когда была страница1, а стала страница2 и не важно, программно она была изменена или интерактивно...
А для решения, какой же код должен отработать, пишутся отдельные процедуры, а не вызываются события обработчиков.
19 Wobland
 
23.04.14
11:57
(18) попахивает дублированием кода
20 Defender aka LINN
 
23.04.14
11:59
(18) "для решения, какой же код должен отработать, пишутся отдельные процедуры" - а видимость у тебя не из процедуры меняется, не? "а не вызываются события обработчиков." - а ты СОБЫТИЕ и не вызываешь. Ты будешь вызывать процедур-обработчик. Почуй разницу.
"в синтакс-помощнике не указано, что данное событие вызывается при ИНТЕРАКТИВНОЙ смене страницы" - программные действия не вызывают возникновения событий у элементов формы, есличо, так что писать это излишне.
21 Адский плющ
 
23.04.14
12:01
Имхо, явно вызывать обработчик события не айс. Карма портится.
22 Kalambur
 
23.04.14
12:10
(21) да с самого начала было понятно что унего весь код через ..опу
23 Defender aka LINN
 
23.04.14
12:13
(21) А обосновать заявление можешь?
24 LordCMEPTb
 
23.04.14
12:14
(19) Почему же дублированием? Изначально пишем процедуру, которая должна выполнить определнную часть работы, а далее просто вызываем данную процедуру там, где требуется.
(20) В том-то и проблема, что события вызываются при действии с элементами формы, без разницы, программно на них воздействовали или интерактивно. В частности могу предложить взглянуть на еще одну обработку, в которой идет программная активация строки, однако событие "ПриАктивацииСтроки" почему-то отрабатывает.
Ссылка на обработку: http://yadi.sk/d/Iaq1KbjTN3nnb
25 LordCMEPTb
 
23.04.14
12:15
(22) Не могу согласиться, ведь исходников платформы 1С не видел, но, возможно, какие-то недоработки там есть
26 DS
 
23.04.14
12:18
(21) Ничем не объяснимая закомплексованность.
27 Адский плющ
 
23.04.14
12:18
(23) Не вопрос. Завтра встанет задача изменить поведение исключительно для интерактивной смены страницы.
28 LordCMEPTb
 
23.04.14
12:20
(27) Жаль огорчать, но как было сказано в (5) , нет возможности интерактивного переключения закладок, ибо страницы сделаны лишь для того, чтобы не мучать сервер при изменении определенных данных
29 Defender aka LINN
 
23.04.14
12:20
(27) И? Берешь и меняешь, в чем проблема-то?
30 Адский плющ
 
23.04.14
12:21
(28) Тогда вообще событие тут нах не нужно.
31 Kalambur
 
23.04.14
12:23
есть процедура которая отрабатывает некий код, вызывай её когда нужно и если нужно пихай в любые активации событий в которых она нужна, в чем проблема?
32 Адский плющ
 
23.04.14
12:23
(29) Чего меняешь? В смысле убираешь г*код с вызовом обработчика событий и делаешь нормально, как можно было сделать сразу?
33 LordCMEPTb
 
23.04.14
12:23
(30) Все может быть, однако вопрос в (0) задан немного не про вызов любой процедуры, а именно про активацию события...
34 Defender aka LINN
 
23.04.14
12:26
(32) Вы знаете, в нашей работе таки иногда и программировать приходится.
И я таки в упор не вижу, в чем заключается "говнокод вызова процедуры".

Ну и - а куда надо было бы бежать в случае (27) если событие всегда вызывается?
35 Kalambur
 
23.04.14
12:27
(33) какая на.. активация если не интерактивно?
36 DS
 
23.04.14
12:28
(33) Интерактивно происходит самоактивация, программно активировать необходимо явно - вызовом процедуры события. Что не ясно?
37 LordCMEPTb
 
23.04.14
12:30
(35) Программная, естественно.
(34) А бежать никуда не надо, просто нужно разрабатывать процедуры так, чтобы они вызывались там, где нужно. Почему нельзя создать общую процедуру (событие) для изменения общих параметров (как для программного, так и для интерактивного изменения) и процедуру для изменения реквизитов (только программное изменение), которую вызывать при программном изменении?
38 LordCMEPTb
 
23.04.14
12:31
(36) Можно уточнить, что есть самоактивация?
39 Адский плющ
 
23.04.14
12:33
(34) ХЗ может я чо-то непонятно объясняю, попробую на пальцах.

Допустим, мы обработку полностью запихнули в обработчик события, а при программной смене страницы явно вызываем "ПриСменеСтраницы(Элемент, ..".

Теперь пришла задача, чтобы когда пользователь переключал страницу программа выдавала предупреждение. А программно не выдавала.

Если бы мы сначала сделали всё руками и вытащили обработку в отдельную процедуру, нам было бы достаточно допилить обработчик события. А так нужно всё перепиливать.
40 DS
 
23.04.14
12:33
(38) Вызов процедуры интерактивным действием.
41 1dvd
 
23.04.14
12:35
мде...
Это не эска костылеориентированная, а топик-стартер
42 LordCMEPTb
 
23.04.14
12:44
(39) Как костыльщик могу предложить решение:
При программной активации события записать в переменную формы значение НеВыдаватьПредупреждение, в событие "ПриАктивацииСтроки" перед выводом предупреждения проверять на соответствие значению, а в конце события обнулять значение.
Ибо такую ситуацию придется моделировать, например, для события табличного поля "ПриАктивацииСтроки".
(40) Рассмотренное выше событие табличного поля "ПриАктивацииСтроки" вызывается как при интерактивном выделении строки, так и при программном.
43 Адский плющ
 
23.04.14
12:45
(42) Мсье знает толк в извращениях...
44 LordCMEPTb
 
23.04.14
12:46
(43) 1С учит изобретать и пользоваться костылями...
45 Defender aka LINN
 
23.04.14
13:42
(37) Дык покажи пальцем, кто тебе мешает это сделать?
46 LordCMEPTb
 
23.04.14
14:11
(45) Потерял нить разговора, на что показать пальцем?
47 Defender aka LINN
 
23.04.14
15:55
(46) "просто нужно разрабатывать процедуры так, чтобы они вызывались там, где нужно. Почему нельзя создать общую процедуру (событие) для изменения общих параметров (как для программного, так и для интерактивного изменения) и процедуру для изменения реквизитов (только программное изменение), которую вызывать при программном изменении?" - вот и я не пойму - почему нельзя, кто мешает?