Что быстрее? НайтиПоРеквизиту или Запрос? #653596


#0 by Кокос
Сабж. Надо подгрузить из экселя один реквизит в мульон договоров БП20.
#1 by Aswed
Запрос
#2 by MSII
Прочитать значения реквизитов из файла, запихать массив и одним запросом выбрать все договоры.
#3 by Ksandr
Только не запрос в цикле :)
#4 by MSII
А НайтиПоРеквизиту - это как раз оно. Так что при всем богатстве выбора запросу альтернативы нет.
#5 by EvgeniuXP
а что быстрее: установить отбор использовать или установить параметр в динамическом списке? :)
#6 by Кокос
&НаСервере щаз буду тестировать на 10 записях. а потом на ночь оставлю...
#7 by Кокос
а такое запросом без перебора можно сделать?:)
#8 by Reset
из цикла вытащи и .ссыка убери tt
#9 by Reset
точнее второе вытащить, а первое просто точку убрать
#10 by Кокос
.ссыка у меня это привычка :))
#11 by rs_trade
Стесняюсь спрсить. А НайтиПоРеквизиту это не запрос?
#12 by EvgeniuXP
запрос в 8.1 выполняется за 8 секунд, тот же самый запрос на 8.3 - выполняется минуту :) 8.3 вывод: самая ужасная платформа :)
#13 by Reset
Сначала все "Договор"(где строковое имя) в таблицу вытащить, а потом 1 запрос
#14 by Classic
Найти по реквизиту - вообще штука стремная при больших наборах данных. Лучше уже извращаться с параллельным обходом
#16 by H A D G E H O G s
Байки.
#17 by EvgeniuXP
нет не байки, возьми один документ и выбери у него два реквизита и ссылку, тут же объедини с другим видом документа, выбери те же два реквизита и свою ссылку, потом сгруппируй получившийся результат по двум реквизитам и выведи итог в дерево. Запрос1 Объединить ИТОГИ через СКД те же 8 секунд, через консоль - минута, может чуть более.
#18 by EvgeniuXP
выведи иерархию всю с итогами.
#19 by ВалераОшкин
НайтиПоРеквизиту быстрее, если ищешь не в цикле. Если надо искать в цикле, лучше пиши запрос, который обработает весь свод информации без цикла.
#20 by Ksandr
Кокос похоже romix, но почему-то Кокос :)
#21 by Кокос
это я из книги знаний мисты взял код :)
#22 by H A D G E H O G s
Делать мне больше нечего, повторяя ваши глупые тесты.
#23 by H A D G E H O G s
Как ни удивительно, но сегодня прав, именно в ситуации .
#24 by rs_trade
<<НайтиПоРеквизиту быстрее, если ищешь не в цикле. А почему быстрее?
#25 by Кокос
:)
#26 by Кокос
мне не просто искать нужно. мне еще нужно "если нет то создать" :)
#27 by GANR
Ставим вопрос по другому: план запроса для НайтиПоРеквизиту и Запрос какой? Операция SEEK быстрее SCAN. А вообще можно мини-конфигурашку сделать, рандомом генерировать 20000-50000 элементов справочника и проверить.
#28 by ВалераОшкин
Потому, что НайтиПоРеквизиту это встроенный запрос платформы
#29 by Кокос
= > 500 000 строк :)
#30 by rs_trade
Ого. А чем встроенный запрос лучше не встроенного? Почему он быстрее будет искать?
#31 by GANR
А убрать запрос из цикла нельзя??? Выборка.Сбросить с Выборка.НайтиСледующий пошустрее существенно.
#32 by Ksandr
Значение уникально?
#33 by Кокос
а с параметрами как быть?:)
#34 by Кокос
уникален ВнешнийКод и ИмяДоговора. Вообще это номер счета. а у них договор = счет.
#35 by ВалераОшкин
Сам подумай, все тебе разжевывать надо :)
#36 by Кокос
я просто через КД грузил и он у меня при загрузке всех договоров валился. я поставил договора по ссылке. все загрузил. теперь подгружаю левым способом через текстовик сами договора. молюсь чтобы это все влезло в файловую БП30
#37 by ВалераОшкин
Спасибо, я буду гордиться, что сам H A D G E H O G s меня похвалил :0)
#38 by Ksandr
Вот Вам почва для размышлений 1. Поиск по реквизиту 2. Запрос по реквизиту 3. Запрос по массиву значений и поиск по единственному 4. Тоже что и 3, но выгрузка в ТЗ, добавление индекса колонке и поиск
#39 by GANR
Вот так: &НаСервере
#40 by Кокос
спасибо за урок. Буду теперь всегда так делать. :)
#41 by ВалераОшкин
в базе, естественно, никто не работает?
#42 by ВалераОшкин
Это столько буков надо написать, чтобы найти по реквизиту? :)
#43 by Ksandr
Файловый вариант, никто не работает
#44 by ВалераОшкин
А нормальные пацаны про файловый вариант и не знают...
#45 by GANR
и это Перечисления.ВидыДоговоровКонтрагентов.СПокупателем являются скрытыми запросами в цикле (см. замер производительности) - их надо за пределами цикла 1 раз получить и подставлять
#46 by ВалераОшкин
+ ты так не смеши больше с файловым вариантом и производительностью. Ладно?
#47 by Ksandr
Расскажи про разницу в относительных измерениях, а я следом выложу скрин клиент-сервер с 20 пользователями онлайн
#48 by Ksandr
Подсказка - существенные отличия только в одной цифре - в какой?
#49 by rs_trade
Подумал. Не придумал. Разжуй пожалуйста.
#50 by Ksandr
в дополнение к клиент-сервер (32 бита, СУБД MS SQL 2008), 20 пользователей онлайн
#51 by EvgeniuXP
тогда не надо утверждать - "Байки" :)
#52 by GANR
И ещё, в отличии от не найдет созданные в цикле элементы, поэтому при создании нового договора и контрагента их нужно добавлять в кэш (массив, соответствие) и искать их там дальше по ключу ВнешниКод для контрагент и ВнешнийКод + СимволКоторыйНеМожетПрисутствоватьВДоговорИНаименование+Наименование для договоров. Это позволит избежать задвоения.
#53 by Кокос
ну в данном случае я думаю этого не произойдет. в исходной таблице по определению нет задвоений. А так всё прошло ок. Часа за два загрузилось.
#54 by Кокос
а новые контрагенты не создаются ибо всё подгрузилось через КД. надо было только договора подгрузить.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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