Что дают пакетные запросы? #804368


#0 by vi0
Видите ли вы преимущества пакетного запроса перед использованием нескольких запросов? Какие? Известно, что временные таблицы можно передавать между запросами используя менеджер временных таблиц, т.е. по ВР вопроса не возникает. Допускаю, что при слабой связи, например в мобильном приложении или в веб-клиенте, есть смысл сократить количества обращений к серверу и делать пакетами. А в прочих случаях?
#0 by vi0
Видите ли вы преимущества пакетного запроса перед использованием нескольких запросов? Какие? Известно, что временные таблицы можно передавать между запросами используя менеджер временных таблиц, т.е. по ВР вопроса не возникает. Допускаю, что при слабой связи, например в мобильном приложении или в веб-клиенте, есть смысл сократить количества обращений к серверу и делать пакетами. А в прочих случаях?
#1 by Волшебник
Может обсудим целесообразность циклов Для? Ведь есть же цикл Пока.
#2 by wondkind
Зачем нужны циклы если есть "Перейти"
#3 by 1dvd
Любой цикл можно заменить рекурсией
#4 by Ненавижу 1С
до сих пор в 1С нет цикла с постусловием: do ... while(...)
#5 by Rovan
да, смысл сократить количества обращений к серверу и делать пакетами.
#6 by 1dvd
ваще не критично
#7 by Ненавижу 1С
во-первых, это удобно в конструкторе
#8 by ELEA26
repeat until :)
#9 by vi0
а какой профит для обычного клиент-сервера? неужели такая ресурсоемкая операция - обращение к серверу?
#10 by Ненавижу 1С
у тебя паскалевский вариант, у меня сишный кстати, в них условие трактуются как противоположные
#11 by vi0
не факт что удобно воспринимать одной большой портянкой и в типовых весь пакет собирается динамически
#12 by vi0
еще соглашусь что в динамических списках удобно будет для ВР
#13 by ELEA26
именно). сишный повторяется пока истина, паскалевский до тех пор пока не истина. Просто 1С как-то к паскалю ближе. Вроде.
#14 by 1dvd
1с - это васик переведенный промтом
#15 by Timon1405
~НачалоЦикла:
#16 by Ненавижу 1С
1С ближе к бейсику
#17 by vi0
Сформулирую вопрос по другому: Представим, что вам в задаче удобно организовать программный модуль так, чтобы выполнялись отдельные запросы, а не пакет. Будете ли вы стремится все таки сделать пакет? Почему?
#18 by Ненавижу 1С
"например в мобильном приложении или в веб-клиенте" вообще-то они делаются на сервере приложений
#19 by Волшебник
Зато есть Неопределено.
#20 by vi0
согласен
#21 by elCust
Жесть
#22 by Ненавижу 1С
Неопределено я бы все таки оставил как аналог пустого указателя на объектный тип, как nil в паскале или nullptr в С++
#23 by Fish
Когда мне удобнее отдельные запросы, я делаю отдельный. Когда мне удобно делать пакетный запрос - я делаю пакетный. Не понял твоей проблемы вообще - ты не можешь определить, что и как тебе удобнее делать в конкретной задаче?
#24 by vi0
проблемы нет свои вопросы я написал конкретно
#25 by Волшебник
Хорошо, что тебя нет в команде разработчиков. А то бы мы занимались такой же фигнёй как в С: освобождали бы память или натыкались на Null Pointer Exception
#26 by Волшебник
Почему Вам важно поговорить об этом?
#27 by 1dvd
Процедура БезЦикла(КоличествоИтераций, Н = Неопределено)
#28 by MrStomak
Пакетный запрос имел смысл как способ оптимизации в обычном приложении, когда каждый вызов запроса обозначал передачу управления с клиента на сервер приложений. Сейчас, на УФ, имеет смысл только для удобства, всё и так на сервере делается, а СУБД будет вызвана в любом случае несколько раз.
#29 by Ненавижу 1С
нет же, автоматическая сборка мусора, это прекрасно в шарпе и яве тоже есть пустой указатель null, но не стоит его путать с NULL из SQL
#30 by 1dvd
Если один запрос, и данные берутся только из него, то обращение к БД будет только одно. Не?
#31 by ELEA26
вариант с перейти ближе к циклу. Не используется стек (стэк).
#32 by Ненавижу 1С
пакетный запрос это синтаксический сахар: 1. удобно редакктировать как единый запрос в конструкторе 2. тоже самое в СКд 3. не надо напрягаться с удалением временных таблиц
#33 by Fish
При относительно небольшом кол-ве итераций (сейчас не вспомню точное число, но что-то емнип около 40000) - 1С упадёт, не успев даже ругнуться :)
#34 by 1dvd
в определенных кругах за "перейти" пальцы прищемляют дверью
#35 by 1dvd
надо будет затестить
#36 by MrStomak
Нет. Более того, обращений к СУБД может быть несколько даже при 1 запросе (когда используются ВТ (особенно регистра бухгалтерии) или конструкции "В иерархии", ну и еще наверняка есть варианты)
#37 by ELEA26
а за рекурсию вместо цикла нет? НюНю...
#38 by patapum
Менеджер временных таблиц лучше пакетника, если к одной временной таблице обращаешься несколько раз. У меня таких задач не помню, чтобы было. А зачем еще?
#39 by ELEA26
еще всякие срезы последних. 1 запрос 1С >= 1 запрос к БД :)
#40 by 1dvd
хотя, да. Помнится, пытался трасернуть штатную ОСВ, которая на СКД. И глаза разбежались...
#41 by Lazy Stranger
в языке Фортран-4, которому меня учили на первом курсе, циклы примерно так и выглядели, через if и goto
#42 by 1dvd
ну, вы ещё язык Ассемблера вспомните или маш.код
#43 by Адинэснег
нафига городить с созданием менеджера ВТ, когда можно выполнить пакетный?
#44 by Fish
Я наврал. ОФ на 2.3.8 упала на 2025-й итерации :)))
#45 by Адинэснег
->
#46 by MrStomak
В Ассемблере даже не цикл, а просто условие через "goto" всё равно ;)
#47 by Адинэснег
было в
#48 by MrStomak
Там речь про циклы!
#49 by Fedor-1971
не совсем просто сахар. Есть оптимизатор SQL - ему проще получить пакет и построить план выбора данных для многих таблиц сразу, чем строить много планов из-за оптимальности: выбрали доки в ВТ, потом на её основании добираем нужную информацию
#50 by 1dvd
тоже затестил. Упал на 2026 :) 1С:Предприятие 8.3 (8.3.8.2027)
#51 by aka MIK
если у тебя пакетный запрос, то юзать МВТ вообще без нужды
#52 by MrStomak
Какое это имеет отношение к "Менеджер ВТ или пакетный запрос"? И там и там много планов.
#53 by Адинэснег
так это ты реготчетность с закрытием месяца пишешь? держи его, пасаны!
#54 by ELEA26
А еще временные таблицы можно индексировать...
#55 by Адинэснег
а в пакетном нельзя?
#56 by MrStomak
Индекс, кстати, всегда 1 и кластерный.
#57 by Fedor-1971
Про оптимизатор почему-то забыли. к счастью нет.
#58 by MM
В пакетном запросе, теоретически, можно выполнять несколько запросов на СУБД одновременно, если они не используют данные друг друга.
#59 by MrStomak
План составляется на каждый конкретный запрос. Всегда. Пакеты, не пакеты - пофигу. Или не составляется, если запрос вызывается через ХП и есть кэш.
#60 by ELEA26
это если MS SQL и включен параллелизм? Тоже надо тестить... А реально было бы интересно. Если создаешь двумя запросами две разные ВТ, а потом с ними работаешь - было бы круто, если бы они формировались одновременно.
#61 by MrStomak
Параллелизм работает внутри 1 запроса. Запросы в пакете выполняются последовательно.
#62 by ELEA26
Это да. Согласен. Меня там больше на фантазии понесло.
#63 by Buster007
Почему не рекомендуется использовать запрос в цикле? Именно для этого и нужен пакетный запрос, а так ты можешь, конечно, и без пакетника.
#64 by MM
Выполняются последовательно 1С или MS SQL?
#65 by lodger
все такие умные. а где хранятся временные таблицы? если явно объявлен менеджерВТ, то на стороне предприятия. и вся эта когорта передается изв СУБД для дальнейших запросов. логично? пока да. а вот пакетный запрос. 1с готовит запросы и отдает их в СУБД для исполнения, при этом где времянки? в ТемпДБ СУБД? или они перекатываются в сервер 1с для обработки в 1с? судя по монитору ресурсов - rphost при запросе немножко тужится и высырает что-то в скуль. дальше скуль тужится и один раз отдает все скопом в рпхост. но запрос тем временем большой и пакетный... простите за сумбур.
#66 by MrStomak
Временные таблицы хранятся на СУБД и никуда не передаются. Так что логика не очень.
#67 by lodger
а как это я ВТ могу помацать из отладчика если она на субд?
#68 by ELEA26
ВТ все в tempdb...
#69 by MrStomak
Отладчик запрос к субд на содержание ВТ делает. Точно также, как и наименование справочника ты можешь посмотреть из отладчика. Прикинь, он не хранит это в сервере ;)
#70 by ELEA26
ты выборку с нее "мацаешь".
#71 by lodger
наименование справочника это ж метаданные, они всегда на сервере есть.
#72 by dezss
И как же ты ВТ "мацаешь"? Делаешь Выгрузить, правильно? А не замечал, как эта Выгрузить подтормаживает в отладчике?
#73 by MrStomak
Наменование основного средства не хранится в метаданных. А из отладчика, сюрприз!, видно. И дальше можно плюсиками раскрывать до чего угодно.
#74 by Адинэснег
#75 by Адинэснег
Если Вы используете объект МВТ, то временные таблицы рекомендуется удалять одним из первых 2 методов, как только в них отпала необходимость, иначе они будут висеть в памяти сервера СУБД, пока процедура/функция не закончит работу, что не есть хорошо   Источник: ©Курсы-по-1С.рф
#76 by lodger
то о чем ты говоришь это реквизит, а Имя справочника это таки его метаданные.
#77 by MrStomak
Тебе сказать по теме есть чего, кроме шокирующих открытий, что Имя справочника это оказывается таки его метаданные?
#78 by Ненавижу 1С
правильно, реквизит хранится в СУБД, но его можно посмотреть в отладчике
#79 by lodger
все. тему можно закрывать.
#80 by vi0
ошибаешься
#81 by VS-1976
Да ладно а что тогда в ассемблере loop?
#82 by VS-1976
Хотя могли бы сделать через курсоры...
#83 by spiller26
Я отвечу - "Просто удобно"
#84 by vi0
курсоры это совсем другая тема
#85 by assasu
если ты свой код собираешься поддерживать и вносить исправления - делай всегда отдельные запросы. если пишешь код "на от@@ись" - пиши один запрос с кучей пакетов. так в нем будет сложнее разобраться.
#86 by VladZ
Не понял проблемы.  Нужны пакетные - делаешь. Не нужны - не делаешь. От себя: мне еще ни разу не понадобились.
#87 by vi0
спасибо за мнение от представителей радикальной фракции
#88 by Ненавижу 1С
ты наверное и писать то их не умеешь
#89 by VS-1976
Есть к примеру ситуации, когда предварительные данные позже соединяются с разными таблицами. По этому пакетный запрос в каких то случаях может даже дать прирост производительности.
#90 by dmpl
А БезЦикла(1000000) что дает?
#91 by dmpl
А в других кругах перейти - единственный вариант ветвления. А за рекурсию без необходимости бьют везде.
#92 by 1dvd
см
#93 by 1dvd
а можно пример когда перейти - единственный вариант ветвления?
#94 by dmpl
Не рекомендуется, но используют. Даже инопланетяне (создатели типовых).
#95 by dmpl
В микроконтроллерах нередко бывает что только jump по условию и есть.
#96 by 1dvd
вот это ты сейчас к чему вообще сказал?
#97 by dmpl
Привел пример других кругов.
#98 by lodger
просто вы не умеете их готовить. да и читать видимо тоже. большой запрос разбитый на пакеты в разы легче читается, отлаживается и редактируется, нежели мешанина закинутая в огромные вложенные запросы с десятками джойнов и юнионов.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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