Имя: Пароль:
1C
1C 7.7
v7: Непрекращающийся вызов функции.
0 Eeakie
 
18.04.14
00:57
Справочник. Форма списка. На колонке висит функция (BRUSH_S), красящая текущую строку.
Открываю справочник, а дальше никаких манипуляций, НО функция постоянно вызывается. За минуту вызвалась 1300 раз. Что за такое...?
1 Zhuravlik
 
18.04.14
01:08
Это так клюшки работают) Чтоб не вызывать 1300 раз ставь защиту.
2 Eeakie
 
18.04.14
01:13
(1) Это я так решил потестить вызов процедур/функций во всей конфе... просто охренел. Может в формексе дело?

Защиту поставить? Думал уже, но как?
3 Eeakie
 
18.04.14
01:15
Кстати, такая же беда и в ТЧ документов...
4 Zhuravlik
 
18.04.14
01:33
(2)(3) Можно еще текстовое поле кинуть на форму обработки, на закладке дополнительно прописать вызов функции "МояФункция()", а в теле обработки такой код:

Перем Счетчик;
Функция МояФункция()
Счетчик = Счетчик +1;
Сообщить("Эта " + Счетчик + " вызов...");

КонецФункции

Счетчик =0;
5 Zhuravlik
 
18.04.14
01:34
+
6 Zhuravlik
 
18.04.14
01:35
Перем Счетчик;
Перем Защита;
Функция МояФункция()

Если Защита <> 0 Тогда Возврат; КонецЕсли;

Счетчик = Счетчик +1;
Сообщить("Эта " + Счетчик + " вызов...");

Защита = 1;
КонецФункции

Счетчик =0;
Защита = 0;
7 Eeakie
 
18.04.14
01:39
(6) Это, конечно, выход. Просто хотелось бы знать в чём причина такого "массового беспорядка" ;)
8 Eeakie
 
18.04.14
01:44
+(6) Хотя, я ведь в функцию всё равно буду попадать с той же регулярностью, только делать вместо одной строчки с "brush_s[]" проверку на значение переменной. Есть ли разница? По скорости выполнения разница в 1 миллисекунду в пользу проверки на счетчик.
9 Eeakie
 
18.04.14
01:48
А вообще это нормально, что клюшки так делают? :) Это стандартный механизм такой?
10 Zhuravlik
 
18.04.14
01:48
(8) в 77 вот так... я когда остатки окрашивал по условию в форме списка, так делал, практически не тупило =)
11 Eeakie
 
18.04.14
01:50
(10) Понял :) Буду пробовать :) Спасибо.
12 Злопчинский
 
18.04.14
03:56
(11) хрень у вас какая-то (могу конечно ошибаться..)... не должно так быть по идее.. что-то у вас постоянно форму обновляет
.
убрать раскраску строки.
поставить как журавлик нарисовал функцию в текст - смотреть обновляется или нет...
13 vcv
 
18.04.14
06:35
Включить замер производительности в отладчике. Ничего не делать, через минуту выключить. Убедиться, что "За минуту вызвалась 1300 раз". Искать в результатах замера, кто и зачем дергает что-то типа Форма.Обновить().
14 Ёпрст
 
18.04.14
09:32
(0) нехрен писать в функциях Форма.Обновить()
15 Ёпрст
 
18.04.14
09:32
бездумно.
16 Eeakie
 
18.04.14
13:11
(13), (14), никаких Форма.Обновить() и в помине нет.

Оставил только одну функцию. Воткнул в неё "Сообщить(ТекущийЭлемент())".
Открываю справочник: 4 элемента постоянно повторяются. Без остановки.

(13) 1781 раз за 56 секунд.

В функции стоит замер времени выполнения, кстати. Это может как-то влиять?
17 Eeakie
 
18.04.14
13:12
(12) Не обновляется. Всё нормально. Но сам факт захода в функцию остается.
18 Ёпрст
 
18.04.14
13:18
(16) наивный какой, ищи лучше.
19 Ёпрст
 
18.04.14
13:19
+ смотреть, что в формулах текстовых колонок справочника
20 Eeakie
 
18.04.14
13:35
Почему каждая функция отрабатывает по 2 раза?
21 oslokot
 
18.04.14
13:41
(12) +1 у них форма обновляется, всего и делов то
22 Eeakie
 
18.04.14
13:56
(21) После срабатывания одной функции форма обновляется?
23 Eeakie
 
18.04.14
13:57
Включил все функции, так они вызываются по столько раз, сколько из всего.
24 Eeakie
 
18.04.14
14:26
Функции циклятся, когда внутри функции есть процедура, которая обновляет элемент справочника.

На пальцах: например, справочник, который хранит название функции и количество её вызовов. Т.е. при заходе в функцию перезаписывается элемент этого справочника на количество вызовов + 1. Если убрать Спр.Записать(), то всё отрабатывает нормально, иначе циклится вызов функции. Что за оно?
25 Ёпрст
 
18.04.14
14:59
(24) даже не знаю, 86 ?
26 Eeakie
 
18.04.14
15:00
(25) 86?
27 Ёпрст
 
18.04.14
15:01
(26) твой год выпуска, не 86 случаем ?
А то судя по (24) - самое оно.

Это где такому учат, чтобы в формуле реквизита записывать справочник ?..
28 Ёпрст
 
18.04.14
15:02
который автоматом вызывает обновление формы и так до бесконечности..
29 Ёпрст
 
18.04.14
15:02
+28 обновление формы вызывает функцию в формуле и.. см (27)
30 Eeakie
 
18.04.14
15:02
(28) Вооооот.. вызывает обновление формы...
31 Ёпрст
 
18.04.14
15:02
Ну и запись в формуле - это пять!
32 Ёпрст
 
18.04.14
15:03
хотя, пятница.. бухой видать да ?
Или уже весенний срез грибочков подоспел ?
33 Eeakie
 
18.04.14
15:03
(31) Кстати, да, до Чернобыля совсем недалеко... ;)
34 Eeakie
 
18.04.14
15:05
(32) В любом случае это всё объяснило. Спасибо.
35 Злопчинский
 
18.04.14
21:27
Я безумно рад что в (12) я не ошибся!