|
v8: Помогите оптимизировать код | ☑ | ||
---|---|---|---|---|
0
SanGvin
18.04.12
✎
08:58
|
Помогите оптимизировать код
Цель - выбрать документы выпуска за период и разбить их на несколько таких же по признаку реквизита реквизита (сорь за тафталогию) ТЧ. В моем случае - СкладПоУмолчанию у номенклатуры. Сделал так на скорую руку, оно даже работает, но вложенность циклов смущает. Подскажите, как сделать красиво. [CODE] ЗапросДоки = Новый Запрос; //выберем доки ЗапросДоки.Текст = "ВЫБРАТЬ | ОбщепитВыпускПродукции.Ссылка |ИЗ | Документ.ОбщепитВыпускПродукции КАК ОбщепитВыпускПродукции |ГДЕ | ОбщепитВыпускПродукции.ПометкаУдаления = ЛОЖЬ | И ОбщепитВыпускПродукции.Комментарий ПОДОБНО &Комментарий | И ОбщепитВыпускПродукции.Дата МЕЖДУ &ДатаНач И &ДатаКон"; ЗапросДоки.УстановитьПараметр("Комментарий","Подлежит разбивке"); ЗапросДоки.УстановитьПараметр("ДатаНач", ДатаНачалаПериода); ЗапросДоки.УстановитьПараметр("ДатаКон", ДатаКонцаПериода); РезультатДоки = ЗапросДоки.Выполнить().Выбрать(); Пока РезультатДоки.Следующий() Цикл ЗапросСклады = Новый Запрос; //для каждого дока выберем разные склады ЗапросСклады.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ОбщепитВыпускПродукцииТовары.Номенклатура.СкладПоУмолчанию КАК Склад |ИЗ | Документ.ОбщепитВыпускПродукции.Товары КАК ОбщепитВыпускПродукцииТовары |ГДЕ | ОбщепитВыпускПродукцииТовары.Ссылка = &Ссылка"; ЗапросСклады.УстановитьПараметр("Ссылка",РезультатДоки.Ссылка); РезультатСклады = ЗапросСклады.Выполнить().Выбрать(); Пока РезультатСклады.Следующий() Цикл //для каждого склада сделаем отдельный новый док ЗапросТЧ = Новый Запрос; ЗапросТЧ.Текст = "ВЫБРАТЬ * |ИЗ | Документ.ОбщепитВыпускПродукции.Товары КАК ОбщепитВыпускПродукцииТовары |ГДЕ | ОбщепитВыпускПродукцииТовары.Номенклатура.СкладПоУмолчанию = &Склад | И ОбщепитВыпускПродукцииТовары.Ссылка = &Ссылка"; ЗапросТЧ.УстановитьПараметр("АТП_Склад",РезультатСклады.Склад); ЗапросТЧ.УстановитьПараметр("Ссылка",РезультатДоки.Ссылка); РезультатТЧ = ЗапросТЧ.Выполнить().Выгрузить(); НовДок = РезультатДоки.Ссылка.Скопировать(); НовДок.Дата = РезультатДоки.Ссылка.Дата; НовДок.Склад = РезультатСклады.Склад; НовДок.Товары.Очистить(); НовДок.Товары.Загрузить(РезультатТЧ); НовДок.Комментарий = "Разбивка - " + РезультатДоки.Ссылка; НовДок.Записать(РежимЗаписиДокумента.Запись); КонецЦикла; //склады //отметим исходный док на удалние ДокОбъект = РезультатДоки.Ссылка.ПолучитьОбъект(); ДокОбъект.УстановитьПометкуУдаления(Истина); КонецЦикла; //доки [/CODE] Спасибо за внимание |
|||
1
zak555
18.04.12
✎
09:00
|
> ЗапросДоки.УстановитьПараметр("Комментарий","Подлежит разбивке");
жесть двойной запрос в цикле - тоже жесть не проще смотреть движения дока ? |
|||
2
SanGvin
18.04.12
✎
09:00
|
док не проведен
|
|||
3
SanGvin
18.04.12
✎
09:03
|
(1) коммент - просто признак, хотя лучше добавить реквизит с типом булево
вопрос не в этом, а как раз в том, как запрос оптимизировать, чтобы не было цикла в цикле |
|||
4
vmv
18.04.12
✎
09:03
|
запрос в цикле - повешенье
|
|||
5
vmv
18.04.12
✎
09:05
|
(3) сделать запросом ВТ, те которые в циклах и соединить их с итоговым запросм
|
|||
6
SanGvin
18.04.12
✎
09:05
|
(4) понимаю что г-код за сим прошу помощи)
|
|||
7
Джон Тирби
18.04.12
✎
09:13
|
(5)Нафиг! Все запросы из одного дока...делай сводную таблицу и из нее уже расформировывай по докам.
|
|||
8
Balabass
18.04.12
✎
09:16
|
(0) Используй крабов
|
|||
9
zak555
18.04.12
✎
09:21
|
(3) вопрос как раз в том, когда ты перепишешь эту куйню ?
|
|||
10
vde69
18.04.12
✎
09:28
|
даже не говоря про запросы в цикле, запрос к таблице документов - это растрел на месте (даже для обменов не стоит использовать), делай запросы к регистрам....
|
|||
11
zak555
18.04.12
✎
09:39
|
(10) > запрос к таблице документов - - это растрел на месте
а как же получить данные, например, в модуле доке для расчёта себестоимости товара ? =) |
|||
12
Maxus43
18.04.12
✎
09:41
|
(10) в каждой типовой в каждом документе запросы к таблице документов в обработке проведения) от задачи зависит
|
|||
13
SanGvin
18.04.12
✎
09:47
|
(10) нет движений у дока, писал уже
|
|||
14
SanGvin
18.04.12
✎
10:13
|
тему можно закрыть. все делается одним запросом с обходом по группировкам.
|
|||
15
cViper
18.04.12
✎
10:20
|
(18) Молодец.Читая ветку искал коммент который тебе это посоветует, ибо то что в (0) МУСОР.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |