v7: УложитьСписокОбъектов работает медленно #506102


#0 by YHVVH
Замечено при больших списках(больше 100 элементов) тормозит это так и должно быть или у меня руки кривые? УложитьСписокОбъектов Есть варианты "ускорить" данное действие?
#1 by YHVVH
опечатка в сабже.
#2 by ДенисЧ
напиши свой, с бриджем и гетерами
#3 by YHVVH
не понял ни одного слова, подробней.
#4 by YHVVH
щас заплачу
#5 by filh
сколько? :)
#6 by vS
кому заплатишь?
#7 by YHVVH
за что?
#8 by filh
ну дык в платить собрался...а за что - тебе виднее.
#9 by YHVVH
я не прошу чтоб за меня делали, просто дали совет.
#10 by VladZ
ыыыы..  хватит тупить... Оборжался ужО...
#11 by YHVVH
:-) это можно убрать
#12 by YHVVH
УложитьВсписокОбъектов отрабатывает по времени больше чем сам запрос. Как вариант придется сам запрос переписывать чтоб обойти тормоза. Есть ли варианты как закинуть во врменную таблицу 'SQL' списиок объектов из 1с 'побырому'?
#13 by ДенисЧ
перебрать и закинутуь - не вариант?
#14 by YHVVH
тупой insert?
#15 by ДенисЧ
Можешь острым bulk insert'ом.
#16 by YHVVH
а подробней,я что то не понимаю, что такое острой бюджет
#17 by ДенисЧ
где ты увидел слово бюджет? О_о
#18 by YHVVH
блин инсерт
#19 by ДенисЧ
ну ты же не хочешь пользоваться тупым, значит, зато и пользуйся острым... Вообще - вопрос очень странный. Как из памяти можно перенести в таблицу sql данные? Назови 3 способа.
#20 by YHVVH
база дбф если что.
#21 by Mikeware
совет есть... пока ищи стену покрепче, и яд понадежнее... Технологию опишу чуть позже..
#22 by YHVVH
почему странный, я же говорю есть список например товара или клиентов пользуюсь УложитьСписокОбъектов , если спсиок большой, то долго он отрабатывает. я так понимаю долго создает табличку эту временную , если я правильно выразился. попробовать инсерт сделать в цикле как вариант. Может кто как подругому делал. че сразу яд.
#23 by VitGun
вообще-то в доке к 1С++ крайне не рекомендуется использовать УложитьСписокОбъектов с большим количеством элементов. Так что это не баг, а фича...по сути эта процедура аналогична в SQL WHERE some_param IN ('00001','00002','00003'.......'00100') так все что после IN она и делает. а теперь представь размер такого запроса. оптимизатор вешается и сервер тоже. как вариант - пользовать временные таблицы, т.е выгрузить сначала туда список объектов которые должны попадать в условие и уже оттуда дергать значения
#24 by ДенисЧ
это где она аналогична? в sql она создаёт врменную таблицу с прамари индексом...
#25 by VitGun
эва как...глянул в доку - точно...в темп таблицу кладет...а где ж я тогда читал ересь которую сам написал в ? и был же вариант решения без УложитьСписокОбъектов...
#26 by YHVVH
вообще-то в доке к 1С++ крайне не рекомендуется использовать УложитьСписокОбъектов с большим количеством элементов это я усвоил хорошо.спасибо. как вариант - пользовать временные таблицы, т.е выгрузить сначала туда список объектов которые должны попадать в условие и уже оттуда дергать значения а тут не понятно что за временные таблички и как туда запихнуть данные.
#27 by ado
Оговорочки по Фрейду :-)
#28 by v_rtex
попробуй вместо Поле IN (SELECT val FROM #ВТ) использовать INNER JOIN #ВТ ВТ ON ВТ.val=Поле хз.. вдруг поможет -)
#29 by YHVVH
у еня тормозит ни сам запрос, а УложитьСписокОбъектов , т.е. до выполнения.
#30 by Кириллка
в абсолютных значениях это как тормозит?
#31 by YHVVH
это 70 секунд происходит упаковка в список и 5 сек выполняется запрос.
#32 by Кириллка
а каков размер укладываемого списка? и список ли укладывается или справочник?
#33 by YHVVH
ладно вопрос снят, решил в цикле инсертит во временную таблицу, так быстрей выходит.всем спасибо.Если кто не знаь то вот как сделал:
#34 by YHVVH
более 100 элеменвтов, укладывал список, состав списка это элементы справочника.
#35 by Кириллка
странно это все, не должно быть такого. Если пошел делать через курсоры, то советую укладывать параметризированным запросом - будет быстрее.
#36 by YHVVH
а ты проверь, может у меня дбф поэтому так медленно.
#37 by Z1
Иногда подходит укладывать не элементы а только папки ( без повторов ) список получается гораздо меньше. тогда вместо условия на ID надо ставить условие на  PARENTID
#38 by Кириллка
ну я несколько лет назад проверял :)
#39 by Z1
PS также зачтите ветку по улучшению subj
#40 by YHVVH
спасибо почитаю.
#41 by Ёпрст
пользуй 1sqlite, заместо создания "псевдо-временной таблички" в фоксе.
#42 by Ёпрст
ну-ну.. а если в списке группы справочника ? :)
#43 by Ёпрст
+42 УложитьСписокОбъектов  всю иерархию делает, если попросишь.
#44 by YHVVH
да нет там групп
#45 by Ёпрст
ну, а если есть?
#46 by Ёпрст
+45 и группы и элементы ? :))
#47 by Кириллка
а чего гадать-то - select count(*) from " + ВремТабл + "
#48 by Кириллка
+47 кстати (если ничего не изменилось), если вид справочника не указан параметром, то разворачивание иерархии не будет делаться.
#49 by YHVVH
а нету вот. :-) если есть группы это ни мой случай.
#50 by Salimbek
А работать должна со всеми случаями. Кроме того, как сказал Ёпрст в в твоем случае выгоднее использовать 1sqlite т.к., по умолчанию, УложитьСписокОбъектов будет крутится в "memory", так что лишних обращений к диску не будет, да и оптимизатор быстрее будет работать. Кроме того, сортировка у Фокс-а, не совпадает с 1С-ной... Ну и еще много дополнительных бонусов (например возможность работы в монопольном режиме)
#51 by orefkov
Это должно было быть написано в нулевом посте.
#52 by orefkov
И таки да, может ты указывал вид справочника, хотя разворот по иерархии тебе не нужен?
#53 by YHVVH
там проблема была с использованием 1sqlite , в случае разделенного доступа к 1с т.е. когда работают несколько юзеров, что то я не рискнул использовать эту ВК. где то была пробелма блокировки. так руки не дошли.
#54 by FN
Подозреваю что в спТоваров находится список товаров из табличной части дока... в таком случае лучше приджойнить табличку со строками документа с необходимыми условиями.
#55 by orefkov
Эти проблемы давно уже решены.
#56 by YHVVH
я уж понял что решены, если народ пользуется.
#57 by Z1
моя  идея по  subj ( сделано для sql) в declare @folders table алгоритм 0. в временной таблице для папок ставим признак папка. 1. в @folders помещаем только папки из начального списка 2. если папок нет @folders алгоритм останавливается.(что нужно 0 ) т.е. на вход подали список в котором только элементы. 3. в цикле добавляем в @folders только папки ! (аналогично как сейчас но без удаления из @folders) т.е. строим все папки без их удаления. 4.@folders  соеденяем с основной таблицей справочника и в итоговую помещаем все элементы где parentid в @folders. Выигрыш с тем что есть что папок гораздо меньше чем элементов. но если это не встараивать внутрь 1с++ то весь выигрыш вообще потеряется на одной передачи из списка значений1c во временную таблицу. тексты могу скинуть ( описанный выше алгоритм работает под ms sql ) PS Легко сделать три режима 1 в итоговый список будут помещаться только элементы ( как сейчас ) 2 только папки ( несколько раз именно это и нужно было и из-за чего все это и придумал) 3 и элементы и папки
#58 by Кириллка
нудак сделай, алгоритм обсосан, руки прикладываешь и лабаешь :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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