![]() |
![]() |
|
Как оптимизировать запрос? vicof, rittchie, takefive, San787, pasha_d, hunter76, Fynjy, asady, abfm, privetik, orakool, piter3, mgmac, NikeArz, andryscha1c, okmail, Мультук, _Дайвер_, Garykom, DAKE, craxx, Elf_80_lvl, Hawk_1c, Anton1307, youalex, Zombi, H A D G E H O G s, LoneMan, Timon1405, Чеширский, TormozIT, JohnGilbert, Вадим33, MishaSan, lubitelxml, Fish, maxab72, bwi3, 2S, Волшебник, Chameleon1980, skafandr, lEvGl, Михаил_, Кир Пластелинин, НовыйЯ, program345, ADirks, reg0303, Шаграм, Гипервизор, X Leshiy, Многолетний Апельсин, Ногаминебить, tomvlad, maxar, Жеглофф, Ненавижу 1С, Wern, Джордж1, Crusher, yurikmellon2
| ☑ | ||
---|---|---|---|---|
0
program345
04.07.25
✎
10:44
|
Привет,
получаю логин пароль из рег.Сведений, получаю токен соответствующего склада, запросом в цикле ищу оплаченные заказы, и отправляю по ним данные по api. Как уйти от запроса в цикле? Насколько знаю по стандартам 1с это моветон. Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗаказКлиента.Склад КАК Склад, | API.Логин КАК Логин, | API.Пароль КАК Пароль |ИЗ | Документ.ЗаказКлиента КАК ЗаказКлиента | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.API КАК API | ПО (ЗаказКлиента.Склад = API.Склад) | И (ЗаказКлиента.КаналПродаж = API.КаналПродаж) |ГДЕ | ЗаказКлиента.Проведен | И ЗаказКлиента.ДополнительныеРеквизиты.Свойство = &Свойство | И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Значение"; Запрос.УстановитьПараметр("Свойство",СвойствоСтатусЗазаза); Запрос.УстановитьПараметр("Значение",ЗначениеУведомлениеОПоступленииЗаказаПередано); РезультатЗапроса = Запрос.Выполнить(); ВыборкаСклад = РезультатЗапроса.Выбрать(); Пока ВыборкаСклад.Следующий() Цикл ЗапросВыкупленные = Новый Запрос; ЗапросВыкупленные.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗаказКлиента.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента, | ЗаказКлиента.Ссылка КАК Ссылка, | ЗаказКлиента.Склад КАК Склад, | ЧекККМТовары.Ссылка КАК ЧекККМСсылка |ИЗ | Документ.ЗаказКлиента КАК ЗаказКлиента | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМ.Товары КАК ЧекККМТовары | ПО ЗаказКлиента.Ссылка = ЧекККМТовары.ЗаказКлиента | И (ЧекККМТовары.Ссылка.Проведен) |ГДЕ | ЗаказКлиента.ДополнительныеРеквизиты.Свойство = &Свойство | И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Значение | И ЗаказКлиента.Проведен | И ЗаказКлиента.КаналПродаж = &КаналПродаж | И ЗаказКлиента.Склад = &Склад"; ЗапросВыкупленные.УстановитьПараметр("Свойство",СвойствоСтатусЗазаза); ЗапросВыкупленные.УстановитьПараметр("Значение",ЗначениеУведомлениеОПоступленииЗаказаПередано); ЗапросВыкупленные.УстановитьПараметр("КаналПродаж", КаналыПродаж); ЗапросВыкупленные.УстановитьПараметр("Склад",ВыборкаСклад.Склад); РезультатЗапроса = ЗапросВыкупленные.Выполнить(); КонецЦикла; |
|||
1
vicof
04.07.25
✎
10:27
|
СОЕДИНЕНИЯ спасут мир
|
|||
2
lEvGl
гуру
04.07.25
✎
10:36
|
а где тут вложенный запрос
в цикле что ле вот это что то стремное ГДЕ | ЗаказКлиента.Проведен | И ЗаказКлиента.ДополнительныеРеквизиты.Свойство = &Свойство | И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Значение надо брать из ТЧ ДопРеквизиты документа с внутренней связкой к регистру АПИ и еще одной внутренней связкой К НЕМУ же с ТЧ документа Чек три таблицы, две связи - между 1й и 2й, между 2й и 3й |
|||
3
Garykom
гуру
04.07.25
✎
10:30
|
Объедини два запроса в один, запрос в цикле не требуется
|
|||
4
Волшебник
04.07.25
✎
10:35
|
(0) Очередной бред
|
|||
5
LoneMan
04.07.25
✎
10:42
|
Ну хотя бы так навскидку
|
|||
6
lEvGl
гуру
04.07.25
✎
10:46
|
(5) как то соединений многовато, условия где ненужны, ну и работать, если так навскидку - не будет
да и вт наверно лишняя |
|||
7
Волшебник
04.07.25
✎
10:46
|
(5) Забыли период
|
|||
8
Garykom
гуру
04.07.25
✎
11:04
|
(6) ВТ есть смысл сделать для Склад|Логин|Пароль
но совсем не обязательно и да в (5) очередная глупость да еще с группировкой |
|||
9
LoneMan
04.07.25
✎
11:12
|
Нормальный запрос. Все таблицы и соединения будут использованы в итоговом запросе на стороне СУБД.
В контекст и оптимизацию не вникал, учитывая, что в исходном запросе вообще непонятно, что происходит. |
|||
10
Мультук
гуру
04.07.25
✎
11:13
|
(0)
если складов в районе 10 штук, то лучше оставить текущий говнокод и не писать новый. |
|||
12
Garykom
гуру
04.07.25
✎
11:46
|
(9) Ты кучу записей кладешь в ВТ а затем из нее снова забираешь
Зачем? Записей по складам с логин/пароль явно меньше, если и класть в ВТ то их Да еще универсальная ВТ (с запросом) для аналогичных других выгрузок по складам Но имхо одним запросом без ВТ (и без группировок) все прекрасно делается У тебя же чатгопотный идиотизм с МАКСИМУМ(ДокументЧекККМ.Ссылка) КАК ЧекККМ и СГРУППИРОВАТЬ ПО |
|||
13
LoneMan
04.07.25
✎
11:53
|
(12) А, ты об этом. Да не, вообще не парился. Разумеется, для реальной задачи написал бы по-другому.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |