Имя: Пароль:
1C
1С v8
Динамическое считывание данных. В чем польза?
0 IamAlexy
 
20.10.12
02:27
Собственно теорию помню - если флажок стоит то данные считываются порциями что то типа то что влезло в экран + 20% сверху и снизу.

Если флажок не стоит то считывается все сразу.

В итоге получается что если флажок стоит то быстрее открывается список из 100500 документов ибо данные будут отправлены на клиент не все.

Но тут умный пользователь открыв таким образом динамический список какогонибудь хитроопого журнала со сложным запросом берет и начинает зверски скролить..

В итоге база превращается в тыкву ибо при быстром скролле эти 20% практически мгновенно достигаются  база ломится на сервак за очередной порцией.

То есть вместо выигрыша по быстродействию имеем визуальный проигрыш.

По крайней мере наблюдаю у себя вот именно такую ситуацию.
В итоге снял в тяжелых журналах динамическое считывание и отзывчивость системы повысилась.

Или я что то не так понимаю?
1 zladenuw
 
20.10.12
02:29
мб твой журнал тупик. покаж.
2 zladenuw
 
20.10.12
02:30
мб 1с это 1 задница
3 zladenuw
 
20.10.12
02:32
ДС свойства пользователю..... нет!
4 zladenuw
 
20.10.12
02:32
а то строки в группы и пипец
5 kiruha
 
20.10.12
02:33
(0)
Естественно динамическое считывание имеет смысл если ведущая таблица упорядочена по индексу

Запрос находит индексное значение, добавляет положим 20 и считывает

Если индекса нет сканирует всю таблицу при скроллинге
6 zladenuw
 
20.10.12
02:33
уджас
7 zladenuw
 
20.10.12
02:33
листаем. получаем... тупит все
8 IamAlexy
 
20.10.12
02:35
(5) вроде все канонически - основа это по сути список документов к которому левыми соединениями всякое цепляется
9 kiruha
 
20.10.12
02:37
(8)
Журнал ?
10 IamAlexy
 
20.10.12
02:39
(9) не, по сути форма списка...
11 IamAlexy
 
20.10.12
02:40
есть документ "заказ покупателя"
в его форме списка собственно наблюдаем картину описанную в (0)
не смотря на то что основная таблица явно задана - динамическое считывание по сути негативно сказывается на отзывчиваости системы...
12 IamAlexy
 
20.10.12
02:41
причем по сути все тоже самое наблюдаю в других формах списков где произвольный запрос собирает данные чуть более сложнее чем просто тупо реквизиты того документа список которого выводится
13 kiruha
 
20.10.12
02:42
(11)
А упорядочен по дате? Или реквизиту
И есть ли соединения кроме левых
14 kiruha
 
20.10.12
02:43
или отборы
15 IamAlexy
 
20.10.12
02:44
(13) отборы етсть.
упорядочен по дате
хотя соединения тока левые
но тупит и на списках где нет отборов.
16 IamAlexy
 
20.10.12
02:45
у меня мышка с инерционным колесом.
крутанул вверх и смотришь как оно через каждые 20 строк подвешивает систему и долбится на сервер.
17 kiruha
 
20.10.12
02:47
А просто форма списка Заказы без всяких соединений тоже тормозит ?
18 IamAlexy
 
20.10.12
02:49
(17) без соединений не тормозит..

эх..
19 kiruha
 
20.10.12
02:50
запрос смотреть надо
20 IamAlexy
 
20.10.12
02:51
в свое время ушел с заполнения таблицы значений на форме в динамические списки..

походу придется обратно возвращатся..
делать таблицу значений и ее заполнять запросом и обновлять в обработке ожидания :(
как то мрачно все :(
21 kiruha
 
20.10.12
02:55
Сначала простейший запрос без соединений - тормозит или нет
22 rs_trade
 
20.10.12
02:58
(20) быстро не скроллить не предлагать?
23 IamAlexy
 
20.10.12
02:58
(21) чуть легче но подтупляют оба списка - как с динамическим считыванием так и без
24 IamAlexy
 
20.10.12
03:00
хотя вот в простых запросах только по основной таблице динамическое считывание как то меньше рывков дает.. вроде получше..

но блин как тока появляется запрос - все.. трындец
25 IamAlexy
 
20.10.12
03:02
(22) ну тут дело такое.. открывает манагер журнал (а это его основное рабочее место которое в принципе то и не закрывается никогда) и начинает в нем искать какойнить заказ скоролм....

http://xmage.ru/images/201210aya.png


не скорлить не получится
26 rs_trade
 
20.10.12
03:03
(25) научи его искать по полям и пользоваться отборами.
27 IamAlexy
 
20.10.12
03:04
(26) угу..

" я примерно помню порядок цифр и то что там подряд были три заказа с примерно одинаковым откатом"

а теперь вот это фильтрами изобрази :)
28 rs_trade
 
20.10.12
03:06
а если по паре-тройке раз вверх-низ промотать,не кэшируется что ли?
29 kiruha
 
20.10.12
03:06
А сам запрос как выглядит ?
30 rs_trade
 
20.10.12
03:07
хотя это проще сразу весь список получать за период с запасом.
31 IamAlexy
 
20.10.12
03:08
(28) да судя по поведению системы - неособо
(29) х.ево :)
там жесть жестяная :) из списка документов собираются первые три колонки, ну может 4..

остальное со всей базы хреначится..
32 IamAlexy
 
20.10.12
03:08
(30) угу.. походу придется вернуться в ТЗ.
установил период, получил весь список с сервера и дальше играешься
33 kiruha
 
20.10.12
03:09
(31)
Вот есть подозрение что кроме 20 строк основной таблицы
шерстятся не 20 строк из других таблиц, а полный скан
34 kiruha
 
20.10.12
03:12
Регистр сведений - "состояние заказа", и его отображать простым списком, если это так
35 IamAlexy
 
20.10.12
03:14
(34) непрокатит.
нет такого понятия как "состояние заказа"
нужно просто много связанной информации визуально наблюдать
36 IamAlexy
 
20.10.12
03:17
ща перекидаю все в ТЗ, посмотрим как оно сработает
37 kiruha
 
20.10.12
03:21
Измерение Заказ, Ресурсы Возн Остаток, Долг и т.п.
38 IamAlexy
 
20.10.12
03:23
(37) угу статусы производства, постпроизвосдтветнной обработки, доставки отгрузки и еще куча всякого типа крайний счет и краяняя отгрузка  и тд..

пробовал.. херня получается
39 kiruha
 
20.10.12
03:28
не, только то что не вычисляется простым левым соеден и чего нет в заказе
40 kiruha
 
20.10.12
03:30
легче один раз при проведении заполнить, чем потом на каждом пользователе каждые 10 сек вычислять
41 IamAlexy
 
20.10.12
03:31
(39) да там все вычисляется простым левым соединением
тока этих соединений десяток :)
42 kiruha
 
20.10.12
03:38
А "долг" и "Сумма зак. чист" ?
43 IamAlexy
 
20.10.12
03:42
(42) долг остаток по рн
сумма чист - в запросе высчитывается но по данным заказа
44 IamAlexy
 
20.10.12
03:48
пля
перекидал форму на ТЗ
все летает

один раз получили данные и далее хоть уиграйся
45 IamAlexy
 
20.10.12
03:49
блин :)

зато теперь получение данных  за год весьма радует...
46 IamAlexy
 
20.10.12
03:54
в общем веселуха.
47 kiruha
 
20.10.12
03:59
А в при вычислении долга стоит условие на заказы в парамтрах виртуальной таблицы ?
48 kiruha
 
20.10.12
05:52
вообщем неплохо проверить скроллинг без соединения с рн в котором долг остаток
49 rphosts
 
20.10.12
06:46
IamAlexy, не пора-ли замутить аналитическо-поисковую форму заточенную под потребности юзеров?
50 IamAlexy
 
20.10.12
08:26
(49)  по сути это она и есть
51 IamAlexy
 
20.10.12
10:10
блин... с другой стороны ТЗ на форме выбирающая "все" будет на вебклиенте тупить..

пля..

чо теперь- разные формы подсовывать пользователям в зависимости от варината входа в базу?
52 Лефмихалыч
 
20.10.12
10:33
(0) запрети этому ушлёпку пользоваться списком без отборов. Ну действительно, ну зачем ему все 100500 документов? Что он от их созерцания получит, кроме красных глаз?
53 Лефмихалыч
 
20.10.12
10:35
+(52) хотя, это конечно не отвечает на вопрос, зачем демоническое считывание. Наверное оно для сферических пользователей в вакууме, которые понимают, что зверски скроллить большие списки плохо и не делают так
54 Gepard
 
20.10.12
10:39
(0) а по всем этим соединениям есть индексы?
55 Gepard
 
20.10.12
10:43
(54) + если и с индексами тормозит, сделать рс, повторяющий структуру журнала. будет летать
56 Gepard
 
20.10.12
10:44
(55) + само собой в рс тоже индексы на все поля, по которым отбор и сортировка
57 oleg_km
 
20.10.12
11:17
Проблема скроллинга списков не имеет общего решения. В утешение могу поделиться инфой: в свое время наш спец ушел в Metro C&C там SAP. Так вот он сказал, что в большинстве АРМ'ов, особенно там где идет оперативная работа (приемщики, товароведы) вообще нет никаких списков, чтобы открыть документ нужно тупо вводить его номер, по другому документ не откроешь. Стало понятно зачем требование в накладной печатать номер заказа. Вот так очень просто и надежно решилась проблема отклика системы.
Это так для информации
58 H A D G E H O G s
 
20.10.12
11:23
Запрос покажи
59 mikecool
 
20.10.12
11:59
когда работал в проекте на дельфи, там был самописный грид,который обновлял свои данные по таймеру,который обновлялся от движения вверх или вниз по гриду. мышей правда не было, но может аналогично и в эске селать можно? что то похожее делал вроде, но давно...
60 SachoZ
 
20.10.12
12:03
(0)  юзай подборы/отборы/фильты, вобще большинству манагеров достаточно в журнале видеть доки за текущий день.
61 ProProg
 
20.10.12
12:07
(60) фиг с теми журналами. справочник номенклатуры самое юзаемое.
62 SachoZ
 
20.10.12
12:07
+(57) да фирмы у которых большой докоборот делают штрихкодирование документов, потом достаточно сканернуть и все...
63 ProProg
 
20.10.12
12:07
(0) ну а чо ты хотел. авто и есть авно. юзай обычные формы)))) как говорят тут сотни.
64 МуМу
 
20.10.12
12:19
(57)+1 В том плане что общего решения действительно нет.
Зато на эту тему некоторые специалисты даже дисертации защищали:) Я не шучу.
1) Необходимо собрать статистику по видам запросов.
2) На основании этой статистики рассмотреть вопрос относительно издержек на доп индексы по составу полей(по которым идет сортировка).
3) Для статических небольших таблиц рассмотреть вопрос о кешировании на клиенте.
4) Для динамических небольших таблиц рассмотреть вопрос о обновлении данных(еще тот геморой)
А вообщем нужно бить по рукам и регламентами ограничивать порции получаемых данных и параметры сортировки.
65 МуМу
 
20.10.12
12:27
Не просто же так от mssql курсоров динамических(как в 7-ке) отказываются в большинстве решений.
66 acsent
 
20.10.12
13:03
в 8.3 для срезапоследних вроде ввели доп таблицу итогов, должно помочь
67 IamAlexy
 
20.10.12
13:41
(63) про обычные формы расскажи тем кто через веб работает
(66) рановато еще на 8.3 перехожить -  глюков  много
(57) сценарий работы не тот. У меня менеджер в этот журнал пырится весь рабочий день.
68 oleg_km
 
20.10.12
16:00
(67) дык я целиком поддерживаю: не всякая контора сможет перейти на SAP, большинству нужны всякие плюшки в виде быстроскролящихся списков за 3 года.
69 IamAlexy
 
20.10.12
17:27
(68) фиг там..

2 месяца тоже актуально а при объеме заказов под тыщу за эти 2 месяца как раз и упираемся в то что надо скролить...

не оно конечно можо запретить скролл и требовать указать все мыслимые параметры в форме отбора - но это нихрена не удобно именно для конечного пользователя
70 rphosts
 
20.10.12
17:30
(50) совсем нет, я про другое, например: есть в форме списка команда по которой вызывается вот такая поисковая фарма:
http://i061.radikal.ru/1210/b1/894c9e1b6257.jpg
по указанию критериев на всех 3 закладка формируется запрос, если резльтат поиска = 0 записей - радуем юзера,  = 1  - открываем форум этого потребителя, > 1 - открываем динамический список у которого подзапросом идёт этот самый запрос. Далее никакого листания на многие записи не предвидтся

ЗЫ форма чисто умозрительна - по итогам внедроения +20-40% к функциональности поиска будет добавлено, хотя именно в этой теме намана так рублю.
71 IamAlexy
 
20.10.12
17:34
(70) пробовали.. невзлетело.

менеджеры привыкли и руководство их поддерживает: всегда проще и быстрее ввести 1-2 показателя для отбора а затем просто визуально пробежаться глазами по отобранным данным.

пример:  у меня  в журнале (25) отображаются графически статусы прозводства, постобработки, отк, отгрузки оплаты и тд..

с помощью твоей формы отбора общаясь по телефону с клиентом ответить на вопрос "как там мои заказы" - хрен ответишь :)
72 rphosts
 
20.10.12
17:48
(71) ну так вводи с таким поиском хоть 1-2 хоть 20-30... получишь достоверный результат
73 kiruha
 
20.10.12
17:49
Я все так  и не понял - почему не завести регистр сведений
Заполнять по подписке на событие - просто
Журнал летает

Я так делал на журнале Счетов (подписки тогда еще не было правда)
74 rphosts
 
20.10.12
17:52
(73) ну так там многофакторный поиск... причём часто не основаный на данных какой-то записи а на нескольких записях схожих по каким-то криериям (кторых штук полста)
75 IamAlexy
 
20.10.12
18:14
(73) когда то пытались - не справились
+
на тот момент времени появлялись новые контрольные точки которые в "журнал" просто вписывались в запрос и выводились колонкой.

в случае с регистром это реструктуризация, новые ресурсы, дозаполнение старых записей по новым ресурсам и тд и тп - тот еще гемор.

была идея сделать к каждому заказу справочник состояний в табличной части которого обновлять показатели подписками.. но чо то как то дальше размышлений дело не зашло.
Кстати как вариант - таблицу в заказе сделать в которой хранить показатели для журнала, а эту таблицу писать подписками.. но опять же гемор - сейчас журнал он по сути анализирует состояние кучи регистров, а тут придется при записи кучи документов пытаться вписать в некий объект статусы..

в общем куда не ткни - вилы
76 oleg_km
 
20.10.12
18:37
(76) Чем больше регистров пишется при записи документов тем больше клинов со deadlock'ами, при в геометрической прогрессии. У нас сейчас документ пишет в регистр состояние, права доступа и проводки. Сижу и думаю что бы почикать. А от том чтобы добавить еще вспомогательные регистры вообще не идет речи
77 rphosts
 
20.10.12
19:26
(76)управляемые блокировки сводят вероятность дидлуков до минимума.
78 oleg_km
 
20.10.12
19:46
(77) не знаю, вроде включили везде управляемые блокировки, не помогло. И порядок блокировки ресурсов вроде везде одинаковый, однако ж
79 rphosts
 
20.10.12
19:58
(78) а переписать код под блокирование только испоьзуемых объектов не забыли?
80 oleg_km
 
20.10.12
20:42
(79) а как иначе
81 Rounder
 
20.10.12
20:43
Почему при снятии флага ДинамическоеСчитывание все равно при каждом скролле идет обращение к серверу?
82 milan
 
20.10.12
20:47
(81)думаешь все данные из списка сразу передаются на клиента ?
83 Rounder
 
20.10.12
20:49
Хорошо - скажу по другому. Не вижу абсолютно никакой разницы в поведении динамического списка и при установленном свойстве и при снятом. Почему может так быть?
84 milan
 
20.10.12
20:54
глубже копай, профилером можно
85 Rounder
 
20.10.12
20:55
Так это общее поведение ситсемы. Т.е. на всех динамических списках работает так же. Причем абсолютное большинство списков - без произвольного запроса.
86 milan
 
20.10.12
20:56
я тоже разницы не увидел
87 Rounder
 
20.10.12
21:00
А судя по (0) разница должна быть и существенная.
Вот и возник вопрос - либо я не верно понял (0) и даже при сбросе свойства динамического считывания все равно не все данные для дин. списка тянутся на клиента, либо у меня что не так настроено (хотя вроде все стандартно), либо глюки конкретной платформы (8.2.15.294)
88 IamAlexy
 
20.10.12
21:31
(87) не.. у меня кстати разница есть.

берем БП, форму списка ну пусть реализаций, ее произвольном запросе цепляем левым соединением ну например остатки по 62.01 например.

разница реально будет видна при установленном флажке и без него
89 Rounder
 
20.10.12
21:37
(88) Я прочитал прошлые твои ветки (например, про 100тыщ номенклатуры) и понял свои заблуждения. Раньше на этом не заморачивался. Т.е. я верно понимаю: на клиента в любом случае тянется только "экран" + 20% верх/низ. А флажок отвечает лишь за размер хранимой на сервере выборки?
90 IamAlexy
 
20.10.12
21:39
(89) вот я сам нихрена теперь не понимаю
91 Sj
 
20.10.12
21:45
(90) пригласите специалиста
92 IamAlexy
 
20.10.12
21:46
(91) тут полный форум специалистов-отстатысячников - хоть бы кто что то внятное сказал...
93 Rounder
 
20.10.12
21:48
Но судя по поведению системы предположение в (89) близко к истине...
94 H A D G E H O G s
 
20.10.12
21:49
Не надо путать

1) Данные, тянущиеся с Сервера
2) Запрос, получающий часть данных
95 H A D G E H O G s
 
20.10.12
21:49
Раскиньте мозг по черепной коробке.
96 Rounder
 
20.10.12
21:50
(94) Тогда просьба пояснить.
97 IamAlexy
 
20.10.12
21:50
суть (0) в том что простейший пример, например что то типа (88) явно демонстрирует то что динамическое считывание визуально проигрывает по "отзывчивости" системы формам без этого динамического считывания и наглухо проигрывает тупорылой выгрузке в табличную часть или в ТЗ
98 Sj
 
20.10.12
21:51
(92) смотреть потому что надо, а не по словам пытаться понять
99 IamAlexy
 
20.10.12
21:51
+(97) причем чем сложнее произвольный запрос тем соответственно больше лаги..
100 IamAlexy
 
20.10.12
21:52
(98) я в (88) привел конкретный пример моделируемый на любой типовой.
+
описал свой опыт  и спросил опыт форумчан - может кто уже бодался с динсписками с этой точки зрения.
101 H A D G E H O G s
 
20.10.12
21:52
(96) При динамической - запрос тянет часть, там 40-50 записей,

При нединамическом - запрос тянет все???? и частями шлет на клиента.
102 Rounder
 
20.10.12
21:52
(94)
1) и при флаге и без него тянется одинаковое кол-во данных
2) зависит от флага, с флагом выбирает столько сколько нужно для отображения, без - все данные.

так?
103 H A D G E H O G s
 
20.10.12
21:53
Вот интересно, присобачить ДинСписок к рег. сведений на миллион записей и нединамически - сервер падет?
104 Rounder
 
20.10.12
21:53
(101) ну так это и есть то что я написал в (89) только другими словами.
105 IamAlexy
 
20.10.12
21:54
(101) хм...
то есть серверный вызов есть в любом случае (оно и счетчиками показывается) но без динамического меньше нагрузка получается на проц сервака?
ибо выбрать выборку, положить ее в темп и из нее выдавать проще чем каждый раз дрочить остатки..

хм..
106 H A D G E H O G s
 
20.10.12
21:54
Я не видел запроса.

Вдруг там есть немного магии?
107 IamAlexy
 
20.10.12
21:55
то есть логично рассуждаем далее - что чем больше выборка возвращаемая на клиент похожа на основную таблицу тем более осмысленным будет использование динамического считывания..
108 IamAlexy
 
20.10.12
21:55
(106) не.. там много г.вна..
но суть не в этом

на простых примерах типа левого соединения остатков по РБ к таблице списка документов выдает ровно те же результаты
109 H A D G E H O G s
 
20.10.12
21:57
Когда 1С прикрутит МенеджерВременныхТаблиц к дин. списку - тогда будет щасте.
110 IamAlexy
 
20.10.12
22:05
а вот теперь вопрос номер два:

если у меня есть адский запрос с кучей левых соединений - как можно определить на каком участке максимальная тормозня?
111 IamAlexy
 
20.10.12
22:06
после долгих размышлений перекидывать журналы в обработки  дабы юзать табличные части не стал

все же для вебклиента хреначить годовые списки документов уж очень будет напряжно, равно как и для тонкого клиента.
112 kiruha
 
20.10.12
23:10
(108)
>>на простых примерах типа левого соединения остатков

так остатки это уже подзапрос, и судя по всему отбор в нем без временных таблиц сделать сложно
Вот и затыкается на нем
113 IamAlexy
 
21.10.12
01:23
блин

погонял свой журнал в разных режимах
буду переность все в таблицу значений или в табличную часть обработки  - ща прикину что удобнее будет.


звиздец.
особенно разница шикарно видна на вебклиенте - разово в ТЗ грузануло год оборотов (а это чо то типа 4000 заказов-строк в журнале) и далее верти крути скроль и листай как тебе нравится..

в динамическом списке происходит адская жесть.. просто киздец какая жестяная жесть :(
114 kiruha
 
21.10.12
11:34
(113)
Как обновление списка собираешься делать ?
Типа раз в 10 сек - позиция списка в экране?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn