Запрос в цикле (или цикл в запросе)? #684463


#0 by Мисти
Как решить, как быстрее будет работать обработка табличной части - расчет (с несколькими запросами по доп. реквизитам и т.д.) по каждой строчке отдельно, или все нужные (а, возможно, и лишние) данные посчитать сразу для всей табличной части, а потом из результата запроса вытягивать нужное?
#1 by eklmn
1 запрос и все
#2 by DexterMorgan
что такое цикл в запросе?
#3 by vicof
Известная велосипедистка не сдавала экзамен на специалиста по платформе.
#4 by exwill
Это - запрос в цикле наоборот.
#5 by Мисти
не-а, не сдавала. И не сдам никогда! У меня склероз, до сих пор всё ищу в словарике "7-8"
#6 by vicof
Пейте таблеточки
#7 by Мисти
Я пояснила, что я имею в виду. Просто часть данных заведомо не понадобиться. Не, ну теоретически - возможно все-все условия указать в запросе и не искать лишнего, но так я не умею.
#8 by Зойч
Какая то слабенькая попытка потроллить. До Светы тебе ой как далеко
#9 by Enders
А потом: "1С тормозит, на костёр 1С" =)))
#10 by Мисти
и без меня тормозит.
#11 by Мисти
Ну так что, всё в одном запросе? А 1с разве не рассчитвает по строкам?
#12 by Dmitry1c
делай рекурсивный запрос в цикле
#13 by kiruha
Самое медленное - запрос Он должен быть один. Не должны по возможности извлекаться лишние данные И потом не должно быть в постобработке обращений через точку. Пост обработка это доли сек если нет супер пупер партионного учета
#14 by Chai Nic
Запрос в цикле - это хорошо. Особенно если при этом выводить прогресс-бар с процентиками. Это бухгалтера любят, это настраивает на позитив.. можно спокойно попить кофе.
#15 by Infsams654
это вопрос к Defender-у. Удивляюсь, зачем запрос, ежели в объекте ТЧ уже есть. Если чего-то не хватает, доставай обычными методами объекта (который уже есть). Ну уж, если нет, то как хочешь
#16 by kiruha
+ Не , ну если очень постараться можно завесить и постобработку результата запроса - например  в цикле создавать ТЗ по 10 000 элементов
#17 by azernot
Лучше выполнить одни большой запрос, потом проверить данные подзапросами в цикле, и плюс убедиться в корректности обращением через точку к объектам. Для надёжности и в целях подстраховки.
#18 by User_Agronom
А передать табличную часть в запрос как параметр? И тогда будет один запрос. Или я что-то неправильно понял?
#19 by Мисти
Хватит издеваться! А вот серьезно, неужели "для каждого стр из Объект.Товары" - существенно медленнее, чем если это выгрузить в таблицу?
#20 by Dmitry1c
один раз открыть дверь или сто раз открыть дверь?
#21 by Мисти
Предположим, по списку номенклатуры нужно искать доп. реквизиты, но в зависимости от разных условий (в частности, от остатка на складе, который в другом запросе, в один я их точно не объединю) нужно искать разные доп. реквизиты. Можно сразу найти все и потом из таблицы вытаскивать нужные, или в в цикле по каждой строчке - но зато искать только нужное, где-то доп. реквизиты и вовсе не нужны.
#22 by azernot
Доп реквизиты - это одна таблица. Если всё так сложно, получай все, а потом по необходимости используй нужные.
#23 by kiruha
>>в один я их точно не объединю Выгружаешь результат во временную (Поместить) Дальше с ней работаешь Все в один запрос сувать не надо
#24 by Мисти
А несколько запросов отдельно, или в пакете - принципиально на скорость влияют?
#25 by azernot
В пакете - в смысле пактным запросом? Конечно принципиально. Пакетный обычно быстрее.
#26 by kiruha
Если про поместить - я большой разницы не заметил
#27 by kiruha
Менеджер временных должен быть один
#28 by hhhh
там время всех запросов приблизительно одинаково у вас. Поэтому 100 запросов по 100 строкам табчасти будет выполняться ровно в 100 раз больше, чем один запрос по 100 строкам.
#29 by azernot
Не думаю, что если не хватает знаний для простого объединения запросов по остаткам и доп.реквизитам номенклатуры, хватит знаний для объединения данных об остатках номенклатуры помещённых во временную таблицу с данными о доп. реквизитах в одном менеджере временных таблиц запроса..
#30 by zladenuw
та да
#31 by Мисти
У меня будет 2 запроса, а в циклке по строкам я разберусь, что откуда брать.
#32 by Мисти
Ну а простой вопрос: Как красиво вставить туда массив? У меня вот так пока Ну и, кстати, работает - незаметно как. Быстро. Хотя некрасиво, конечно.
#33 by Eugene_life
Открой для себя МассивНомен =ВыборкаДокументы.Ссылка.Товары.ВыгрузитьКолонку(Номенклатура");
#34 by kiruha
Вообще то достаточно Ссылки
#35 by kiruha
#36 by Зойч
двойка тебе
#37 by Мисти
Не надо двойку, надо совет.
#38 by sttt
как то так: ------------- ВЫБРАТЬ ИЗ
#39 by Лефмихалыч
у тех, кто использует запросы в цикле без жизненной на то необходимости, денег нет и не будет. Народная примета
#40 by ilkoder
это опять же смотря какой сервер и какой запрос - можно запросом по всем документам за год сервер и вообще положить, а разбив на части потихоньку выполнить. мне нравится запрос из нескольких складывать через временные... забыл как они и называются в запросе "ПОМЕСТИТЬ В"
#41 by sttt
злыдень)))
#42 by lEvGl
не знаю известную велосипедистку лично, как некоторые отписавшиеся в теме, но трололо, по-моему, витает в воздухе. по теме - речь идет о регистре сведений ЗначенияСвойстОбъектов?
#43 by sttt
не угадал, смотри внимательно это УТ11
#44 by ilkoder
Дополнительные реквизиты - это табличная часть справочника номенклатура вроде...
#45 by dmpl
Это будет глючить. Потому что ТЧ в БД и ТЧ в объекте не обязаны совпадать. Да, кстати, а если документ новый и еще ни разу не записанный - что делать?
#46 by kiruha
Посмотри на выборку девушки - документы не новый. Как довести до ума с массивом - пущай сама думает Разница с   никакой нет, если не нужны реквизиты из ТЧ А что такое ТЧ в объекте - вообще не понял
#47 by kiruha
В варианте 38 она может получить в 10 раз больше строк, чем необходимо, что не комильфо
#48 by фобка
Ответ можно узнать очень просто - реализовать оба варианта и замерить
#49 by dmpl
Вот я записал документ со 100500 строками, потом открыл документ, очистил табличную часть и добавил 1 строку. Твой запрос даст 100500 строк вместо 1.
#50 by mishgan75
разница с 38 очень даже есть выражается в скорости(35 будет выполняться существенно дольше) табличная часть товары в документе (измененном, но еще не записанном) будет отличаться от данных в Базе
#51 by sttt
про ограничения ничего не было сказано))
#52 by sttt
сделал как у нее в , на каждую строку в документе выводит доп. реквизит, что просили то и получили. ну может малость недоделан, выборку документов в этот же запрос закинуть вместо МассивДокументов
#53 by kiruha
Вы что издеваетесь ? Предположим что есть 10 000 документов с 10 строками 10 свойств. 500 различной номенклатуры Вариант слевым соединением даст 10 000 * 10 * 10 = 1 млн строк Вариант "в" (ссылку заменить на массив) даст 500*10 = 5000 строк
#54 by dmpl
Быстро, но неправильно - это не наш метод.
#55 by mishgan75
если в добавить "Различные" или сгруппировать правильно запрос, результатом будут те же 5000 строк, только выполняться он будет раз в 100 быстрее
#56 by mishgan75
, с моей точки зрения ты предложил гораздо более правильное решение
#57 by mishgan75
+ естественно к постам
#58 by kiruha
Можно поинтересоваться с какой стати Вы так решили ? Видели план запроса, делали замеры или с чего ?
#59 by sttt
))))     Документ.ТестовыйДокумент.Товары КАК ТестовыйДокументТовары ГДЕ     ТестовыйДокументТовары.Ссылка.Дата МЕЖДУ &Начало И &Конец ИНДЕКСИРОВАТЬ ПО     Товар
#60 by sttt
тогда лучше это мерять
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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