Имя: Пароль:
1C
1С v8
Незадокументированная бага 1С
0 lucifer
 
03.06.13
16:22
Если в событии динамического списка "ПослеУдаления" вызвать процедуру описанную на сервере падает 1С (УФ)
http://s020.radikal.ru/i722/1306/cd/55154fd77837.jpg

т.е. такой безобидный код

&НаСервере
Процедура Итог_Вычислить_НаСервере()

КонецПроцедуры


&НаКлиенте
Процедура СписокПослеУдаления(Элемент)
   Итог_Вычислить_НаСервере();
КонецПроцедуры


приведет к падению 1С.

Зачем вызывать процедуру на сервере спросите вы, отвечу, для пересчета итогов по колонке сумма (отображение в подвале) если вы знаете другой способ как в подвале динамического списка вывести итого по колонке поделитесь со мной.
1 palpetrovich
 
03.06.13
16:28
windows сильно умный, проверь на ХР :)
2 lucifer
 
03.06.13
16:30
(1) нет возможности
3 fisher
 
03.06.13
16:34
Баг интересный.
Но потребность еретическая.
4 MSII
 
03.06.13
16:44
На Вин7 и 16.368 воспроизвести не получилось.
5 acsent
 
03.06.13
16:46
какая версия 1с?
6 lucifer
 
03.06.13
16:47
(5) 8.2 (8.2.17.153)
7 smotritel
 
03.06.13
16:48
(0) нефиг так делать.
ты скорее всего впадаешь в бесконечную рекурсию.

нужно через обработчик ожидания итоги обновлять.
8 lucifer
 
03.06.13
16:51
(7) это ж через опу получается, я согласен что можно так и сделаю если не будет найдено решение
9 Лефмихалыч
 
03.06.13
16:53
(0) есть воркараунд: не делай так.
10 х86
 
03.06.13
17:10
оповесить не поможет?
11 lucifer
 
03.06.13
17:21
(10) неа, пробовал, валится так же
12 smotritel
 
03.06.13
17:30
(8) это вообще-то, практически стандарт разработки.

см. например обсуждение v8: Искуственная задержка в Бухгалтерии 3.0
13 lucifer
 
03.06.13
17:39
например про событие ПриАктивизацииСтроки в СП написано что нельзя использовать директиву компиляции &НаСервере. Странно прочему про ПослеУдаления не написали
15 Кокос
 
03.06.13
17:45
(14) реклама?
(7) ага. тут явно рекурсия. поэтому и валится
16 EvgeniuXP
 
03.06.13
19:09
(13) вызываю при активизации серверную процедуру "ОбновитьДерево" - глюков нет... сп неправильно пишут? :)
17 vde69
 
03.06.13
19:15
сделай так

&НаСервереБезКонтекста
Процедура Итог_Вычислить_НаСервере()

КонецПроцедуры


&НаКлиенте
Процедура СписокПослеУдаления(Элемент)
   Итог_Вычислить_НаСервере();
КонецПроцедуры
18 vde69
 
03.06.13
19:16
кстати итог - можно сделать вообще без кода!
19 MSII
 
03.06.13
20:38
(16) Правильно СП пишут. Ты просто отсекаешь повторный вызов обработчика после возврата на клиент. Известный трюк.
20 lucifer
 
04.06.13
09:38
(18) ну так научи
21 lucifer
 
04.06.13
09:40
(17) без контекста не могу
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший