Имя: Пароль:
1C
1С v8
Искуственная задержка в Бухгалтерии 3.0
0 whitedi
 
01.04.13
18:48
Версия Бух 3.0.18.9.
При суммирование ячеек табличного документа в стандартных отчетах есть искусственная задержка, которая делается след. кодом:

ИнтервалОжидания = ?(ПолучитьСкоростьКлиентскогоСоединения() = СкоростьКлиентскогоСоединения.Низкая, 1, 0.2);
       ПодключитьОбработчикОжидания("Подключаемый_РезультатПриАктивизацииОбластиПодключаемый", ИнтервалОжидания, Истина);

В чем высокий смысл? И почему 0.2, а не 0? Может кто-нить просветить для чего сей "изврат"?)
1 Wobland
 
01.04.13
18:49
при где?
2 vde69
 
01.04.13
18:51
дело в том что на клиенте арифметические действия могут приводить к неожиданным последствиям, по этому все вычисления идут на сервере а обработчик ожидания нужен что бы получить результат и при этом основное окно не потеряло активность
3 whitedi
 
01.04.13
18:52
(1) когда области в стандартном отчете выделяешь, происходит суммирование выделенных ячеек
4 whitedi
 
01.04.13
18:53
(2) гм... арифметические действия сложения? к каким например?)
5 whitedi
 
01.04.13
18:54
(2) даже если и так), а почему тогда с интервалом 0.2 а не 0?
6 vde69
 
01.04.13
18:55
(4)в веб клиенте используется ява, а в ней нет целочисленной арифметики.

если интересно посмотри мои темы, года 2 назад писал...
7 vde69
 
01.04.13
18:56
(5) про кеши серверные слышал?
8 whitedi
 
01.04.13
18:57
(7) кэш понятие растяжимое... а он тут причем?
9 kosts
 
01.04.13
18:57
(0) Аналогичные задержки ставят в некоторых случаях в событии "при активации строки" в табличном поле. Ну тоже для синхронизации с сервером.
10 vde69
 
01.04.13
18:59
(8) веб клиент работает с веб сервером, веб сервер может использовать кеш (на одинаковые запросы выдавать один результат)
11 IamAlexy
 
01.04.13
18:59
(0) платформа 1С 8.2 настолько молниеносна а конфигурация БП8 на регистрах бухгалтерии столь стремительна что приходится их искуственно тормозить..
12 Euguln
 
01.04.13
19:00
(5) А что будет происходить, если выставить параметр ИнтервалОжидания =0? Анализировал?
13 whitedi
 
01.04.13
19:00
(11) я примерно к тому же выводу пришел)
14 whitedi
 
01.04.13
19:01
(12) там тут же отключение обработчика происходит после первого входа, поэтому некритично
15 Euguln
 
01.04.13
19:02
(11) +1 Причем на 8.3 уже есть встроенный метод ПодождатьПользователя(Время, ЖдатьПокаНеПроснется = Истина)
16 whitedi
 
01.04.13
19:07
Короче какой-то изврат. Что это за платформа такая, если для синхронизации с сервером приходится такие палки подставлять в определенных случаях.
Еще раз разочаровался...
17 IamAlexy
 
01.04.13
19:08
(16) переходите на сап.. там такого беспредела нету
18 vde69
 
01.04.13
19:11
(17) все эти заморочки из за веб клиента.

В сапе есть веб клиент?
19 IamAlexy
 
01.04.13
19:12
(18) любой 1Сник знает что в сапе есть все и это все работает быстрее лучше и правильнее чем 1С...
и пользователи там не ошибаются и программисты пишут быстрее проще и без ошибок, а зарплаты получают в три раза больше


это вам не 1С..
20 smotritel
 
01.04.13
19:29
(0)
1. В параметрах метода ПодключитьОбработчикОжидания() не может быть нуля, минимальный интервал 0.1
2.1 Если из обработчика (на клиенте) ПриАктивизации... сделать серверный вызов, форма будет перерисована - и в этом случае опять сработает обработчик ПриАктивизации - что может породить бесконечный цикл.
В этом случае рекомендуется использовать обработчик ожидания, который и сделает отложенный вызов. Цикла в этом случае не будет.
2.2 Обрабтчик ПриАктивизации... будет работать все время пока ты ведешь мышкой или курсором (выделяешь область) - т.е. будет столько вызовов сервера, сколько ячеек выделится. Если сделать обработчик ожидания - то она сделает только ОДИН вызов сервера, когда непрерывное интерактивное действие пользователя прервется.

P.S. в новом БГУ 2.0, например, таких "извращений" (по твои словам) нет. Включи там показатели производительности, сформируй любой отчет и поводи мышкой, выделяя область. Посмотри как накручивается счетчик вызовов :)
21 Фокусник
 
01.04.13
20:08
(18) Почему только в веб-клиенте? Я так делаю так без всяких веб-клиентов, например при динамическом отображении неких данных (остатков, картинки и т.д.) в формах списков. Чтобы "подчиненные данные" стали отображаться, ТОЛЬКО когда пользователь ОСТАНОВИТСЯ на строке списка (поэтому выжидаем долю секунды), а не при каждой АктивизацииСтроки...
22 Gorgol
 
01.04.13
20:15
23 whitedi
 
02.04.13
09:31
(20) так зачем же сервер вызывать - все на клиенте делается. Счетчики молчат и не появляются.
24 smotritel
 
02.04.13
12:34
(23)
1. посмотри БГУ - ещё как вызываются
2. попробуй выделить ПОБОЛЬШЕ ячеек. увидишь вызов. если ячеек мало - вызов в БП не делают, считают на клиенте
25 vde69
 
02.04.13
12:52
(23) на клиенте НЕЛЬЗЯ делать, читай (6)
26 wald
 
02.04.13
12:57
На курсах 1С по клиент-серверному взаимодействию вообще сказали что любое вычисление на клиенте - зло.
27 regniws
 
02.04.13
13:16
(6) в веб клиете используется свой интепретатор встроенного язык, сам код непосредственно в js не транслируется (по-моему в 14ой это реализовали).

(0) Это сделано из-за особенностей работы веб-клиента, такие вызовы (при активизации строки, при выделении области) лучше делать "отложенными", чтобы они не по интерактивным действиям заполнялись, плюс здесь улучшения, что запускается не сразу, а чуть позже, вдруг ты еще выделять соберешься дальше, так зачем считать сразу.
28 regniws
 
02.04.13
13:18
(26) любое выражение, содержащее слово "любое" - зло. Надо же думать все же своей головой, что можно посчитать на клиенте, а что лучше не стоит. Проход по всем ячейкам таблицы - явно не лучшее, что можно сделать на клиенте. Но и тягать огромного размера таблицы значений, например, для того, чтобы просуммировать колонку не самый лучший вариант.
29 vde69
 
02.04.13
13:51
(23)(28) и всем счетоводам на клиенте: http://dev.mista.ru/topic.php?id=529172

считать на клиенте НЕЛЬЗЯ.
30 regniws
 
02.04.13
13:55
(29) ну по ссылке я вижу ошибку платформы, и как это связано с выводом о том, что считать на клиенте нельзя?
31 smotritel
 
02.04.13
13:56
(29) так там ничего и не ОКРугляется. тупо складываются числа, с двумя знаками после запятой
32 vde69
 
02.04.13
14:31
(31) (30) еще раз говорю

в ЯВЕ (заметели что тут про 1с вообще ни слова) ВСЕ числа имеют формат +E, и по этому и возникают проблеммы
33 Мыш
 
02.04.13
14:35
(32) Кстати, та же проблема при работе через COM
34 smotritel
 
02.04.13
14:54
(32) ну и?
в этом случае, например, вместо 11 645,81 будет 11 645,81000000003

теперь посчитай, при каком сочетании возникнет вышеуказанная тобой проблема погрешности хотя бы в копейку.
35 Мыш
 
02.04.13
15:07
(34) Когда вместо 11 645,81 будет 11 645,80999999999999999
36 Aleksey
 
02.04.13
16:04
(29) 2 + 2 = 3,99999999 - считать на 1С нельзя
37 Зойч
 
02.04.13
16:51
(29) И поэтому нужно дергать сервер????
38 Jolly Roger
 
02.04.13
16:59
(0) это сделано для более гладкого движения курсора при зажатой кнопке со стрелкой...
39 Эмбеддер
 
03.04.13
06:30
(38) ну тогда это нормальный код. когда увидел вчера эту тему, даже расстроился. если для получения правильных цифр надо делать задержку, это заляп
40 Эмбеддер
 
03.04.13
06:37
(32)(36) на Си с типом double/float то же самое может произойти
41 tpudl_bases
 
03.04.13
10:06
(19) у вас в Сапе бухгалтерии нет
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой