Size: a a a

1С, БСП, DevOps и Архитектура

2021 May 26

JD

John Doe in 1С, БСП, DevOps и Архитектура
Все просто: есть двойной цикл, перед которым однократно получаем какой-то массив данных 1.
На первом уровне цикла получаем еще какой-то массив данных 2.
На втором уровне вложенности хотим в запросе поиметь как массив данных 1, так и массив данных 2.
источник

K

KST in 1С, БСП, DevOps и Архитектура
мне иногда мозга не хватает, чтобы найти одну-то таблицу, которая помещается во временную и потом менеджером временных таблиц используется
источник

А

Андрей in 1С, БСП, DevOps и Архитектура
Речь идёт всего о двух циклах, или о рекурсии?
источник

VN

Vladimir Nadulich in 1С, БСП, DevOps и Архитектура
Даже Запрос.Выполнить() без помещения в ВТ, без присваивания в переменную на большой выборке занимает условно в два раза больше времени, чем с помещением в ВТ. Значит где-то трафик SQL-1C фигачит (хотя я не проверял).
источник

JD

John Doe in 1С, БСП, DevOps и Архитектура
Двойной = вложенный один в другой. Без рекурсии.

На втором уровне цикла хотим в запросе обращаться как к результату, вычисленному на первом уровне выше, так и к "глобальному" результату, вычисленному вообще до цикла.
источник

А

Андрей in 1С, БСП, DevOps и Архитектура
В разные ВТ помещать, одну очищать. Зачем два менеджера?
источник

VN

Vladimir Nadulich in 1С, БСП, DevOps и Архитектура
Трудности с использованием одного менеджера только в нежелании ломать типовые сложные механизмы.
В остальном один менеджер хоть в рекурсию пихай, хоть в циклы.
источник

H

Hero in 1С, БСП, DevOps и Архитектура
Только сейчас понял зачем ты такой опрос заводил.
источник

H

Hero in 1С, БСП, DevOps и Архитектура
Я так и не понял почему ты не используешь один менеджер?
источник

H

Hero in 1С, БСП, DevOps и Архитектура
А у тебя что, Батенька, запрос в цикле в цикле?
источник

JD

John Doe in 1С, БСП, DevOps и Архитектура
Текст запроса внешнего цикла статичный. Не хочется делать его динамичным.
Если я в нем использую несколько раз "ПОМЕСТИТЬ ВТ_1" то это вызовет ошибку (имя ВТ должно быть уникальным в пределах одного МВТ).
источник

VN

Vladimir Nadulich in 1С, БСП, DevOps и Архитектура
Использовал - постирай)
источник

JD

John Doe in 1С, БСП, DevOps и Архитектура
Ага
источник

H

Hero in 1С, БСП, DevOps и Архитектура
У тебя нет выбора
Придется делать текст динамическим.
Если у тебя реально больше 10 к строк, то массив тебя не спасет.
источник

H

Hero in 1С, БСП, DevOps и Архитектура
Жуть какая.
Щас начнешь говорить, что там мало итераций?
источник

JD

John Doe in 1С, БСП, DevOps и Архитектура
Там еще не хочется ломать сам собираемый текст запроса, т.к. он используется в другой логике, где нужна выборка не в ВТ.
Переделывать текст выборки на ВТ + добавлять туда уничтожение мне пока показалось некошерным.
источник

H

Hero in 1С, БСП, DevOps и Архитектура
А копирование данных между менеджерами разве не будет тоже самое, что массив выгружать/загружать?
источник

JD

John Doe in 1С, БСП, DevOps и Архитектура
Да, контролируемо мало. Это как бы и есть результат оптимизации. До этого итераций было сотни, а станет не больше 10 всегда.
источник

JD

John Doe in 1С, БСП, DevOps и Архитектура
Штатно без выгрузки результата запроса в ТЗ (и подкладывание ее параметром в другой запрос с новым МВТ) такое кажется не провернуть. Но вдруг кто-нибудь копал и накопал какой-нибудь хак.
источник

H

Hero in 1С, БСП, DevOps и Архитектура
Не знаю.
Обычно менеджер и используется для использования данных из разных запросов.
А твой кейс свовсем сюда не укладывается. Ты хочешь скопировать данные из двух запросов, используя два менеджера слитые в один.
Не очень звучит :)
Может тебе имеет смысл одним пакетным запросом получить все таблицы и работать с ними?
источник