Медленно работает динамический список в УФ. Что делаю не так? #641719


#0 by SerGa
Есть на форме два динамических списка. Цель: При активизации какой либо строки первого списка выводить связанные с ней строки второго списка. Делаю для первого списка: Второй динамический список "СписокСоответствиеСтатейБюджетаИСтатейДДСУУ"  имеет тип произвольный запрос ВЫБРАТЬ    РегистрСведенийСоответствиеСтатейБюджетаИСтатейДДСУУ.СтатьяБюджета,    РегистрСведенийСоответствиеСтатейБюджетаИСтатейДДСУУ.СтатьяДДСУУ    ИЗ    РегистрСведений.СоответствиеСтатейБюджетаИСтатейДДСУУ КАК РегистрСведенийСоответствиеСтатейБюджетаИСтатейДДСУУ Установлена галка Динамическое считывание данных. Проблема в следующем: 1. Работает заметно медленнее чем в обычном режиме. 2. Сервер вызывается почему-то 2 раза при каждом перемещении курсора в первом списке.. что делаю не так?
#1 by Mort
Храни ссылку на текущую строку и в приАктивизации сравнивай текущее значение с сохраненным.
#2 by SerGa
что это даст не очень пойму??
#3 by SerGa
не много не правильно в скопировал первую процедуру так правильно &НаКлиенте
#4 by Mort
Когда ты ставишь отбор ПриАктивизацииСтроки вызывается снова. Кстати ХЗ как на нынешних платформах, но в 8.2.13 это вводило код из в бесконечный штопор.
#5 by Mort
Вот, например, у меня под списком несколько списков на закладках. Для оптимизации введены флаги по обновлению: ..... &НаКлиенте
#6 by Юрий Лазаренко
"Установлена галка Динамическое считывание данных" - убери, значительно снизится трафик
#7 by Юрий Лазаренко
" Сервер вызывается почему-то 2 раза" - скорее всего из-за галки "дин считывание"
#8 by Юрий Лазаренко
Поставить обоим спискам произвольный запрос, выбирать в нем только необходимые данные, отказаться от отбора и нужные данные получать через параметры запроса - в некоторых случаях очень помогает. Недавно подобную задачу решал, в итоге вместо 2-х вызовов сервера, 0,8 сек и 65000 кб входящих данных получил 1 вызов, 0,2 сек и 17000 кб.
#9 by acsent
это ничем не поможет
#10 by acsent
Правильно нужно Обработчик ожидания + запоминание строки
#11 by acsent
Это кстати офф ответ от 1с
#12 by Юрий Лазаренко
Обработчик ожидания я тоже прикрутил, помогает, ага, но и тоже дает экономию трафика, проверено.
#13 by acsent
параметры вместо отборов никак не могут помочь. или у тебя изначально запрос был просто кривой
#14 by SerGa
снятие галки динамический список не помогло... даже медленнее стало...    попробую щас через параметры запроса и через обработку ожидания
#15 by Юрий Лазаренко
У меня изначально вообще там запроса не было.
#16 by SerGa
если из списка для сравнения в отборе  убрать второй элемент списка ПустаяСтатьяБюджета (который у меня хранит пустое значение справочника)  , т.е. оставить в списке только 1 элемент то вызовов сервера становится 1 и работает в 2 раза быстрее...   загадка блин...
#17 by Юрий Лазаренко
Ну вот перепиши на произвольный запрос и сразу условие отбора в нем задавай, будет тебе счастье.
#18 by SerGa
с запоминанием строки не поял..  зачем её запоминать? если я скролю по первому списку вниз, то каждый раз при изменении строки вызывается ПриАктивизацииСтроки для этого списка, в котором устанавливается отбор для второго списка...  это вроде логично и правильно... я вот только не понял почему после установки отбора опять должна вызываться ПриАктивизацииСтроки ???
#19 by Юрий Лазаренко
"почему после установки отбора опять должна вызываться ПриАктивизацииСтроки" - платформа так работает, ты отбор поставил и теперь той строки, на которой был установлен курсор, вообще в списке нет, а значит была активирована другая  строка.
#20 by SerGa
У меня платформа 8.2.16  сижу в отладчике.  поставил точку останова в начале процедуры ПриАктивацииСтроки.... запустил...  при скроле вызывается всегда только один раз.. то что я внутри процедуры ПриАктивацииСтроки первого списка ставлю отбор во втором дин списке не инициализирует повторный вызов ПриАктивацииСтроки в первом списке
#21 by Юрий Лазаренко
Если ставишь отбор во втором, то в первом точно ничего не будет вызываться.
#22 by SerGa
Переделал на использование Параметров произвольного запроса ВЫБРАТЬ    РегистрСведенийСоответствиеСтатейБюджетаИСтатейДДСУУ.СтатьяБюджета,    РегистрСведенийСоответствиеСтатейБюджетаИСтатейДДСУУ.СтатьяДДСУУ ИЗ    РегистрСведений.СоответствиеСтатейБюджетаИСтатейДДСУУ КАК РегистрСведенийСоответствиеСтатейБюджетаИСтатейДДСУУ , передаю туда массив работает также медленно как и через использование отбора и 2 вызова сервера
#23 by acsent
Читай до простветления
#24 by acsent
#25 by acsent
кстати ты во второй таблице в индекс попадаешь?
#26 by MSII
Хорошо, что всего 2 вызова. Заботливая все же платформа.
#27 by SerGa
что значит " в индекс попадаешь" ?
#28 by SerGa
партнерский форум не доступен у меня ((
#29 by SerGa
Сделал через обработку + проверку строки &НаКлиенте сервер вызывается 1 раз .....  шаманство какое-то... единственое с задержкой отображаются данные второго списка... непонятно что принципиально изменилось и что дергало сервер второй раз... может что на партнерском форуме писали про это??
#30 by SerGa
А как быть (оптимизировать) если не одна а несколько связанных с основным динамических списков. Если их например 4 и для каждого в оброботке ожидания вызывать .Параметры.УстановитьЗначениеПараметра( то получается при смене строки не 1 а 4! вызова сервера и работает очень медленно. Как быть?
#31 by Юрий Лазаренко
Попробуй вместо динамических списков список значений или дерево значений. Их содержимое можно получать за один вызов сервера. Но тоже не всегда помогает.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С