|
Искуственная задержка в Бухгалтерии 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) у вас в Сапе бухгалтерии нет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |