|
v7: Оптимизация процедуры | ☑ | ||
---|---|---|---|---|
0
Ayvengo
26.03.13
✎
12:17
|
Всем привет! С 7кой не работал, но есть процедура, которая как мне кажется нуждается в оптимизации. Можно ли как то это все сделать одним запросом?
Процедура Сформировать() Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период с ВыбНачПериода по ВыбКонПериода; | |Контрагент = Документ.РеализацияПродукции.Контрагент; |Экспорт = Документ.РеализацияПродукции.Контрагент.Экспорт; |МодельныйРяд = Документ.РеализацияПродукции.Товар.МодельныйРяд; |Количество = Документ.РеализацияПродукции.Количество; |Всего = Документ.РеализацияПродукции.Всего; |НДС = Документ.РеализацияПродукции.НДС; |ТекДок = Документ.РеализацияПродукции.ТекущийДокумент; | |Функция КоличествоСумма= Сумма(Количество); |Функция ВсегоСумма = Сумма(Всего) Когда (Экспорт = 0); |Функция ВсегоСуммаЭ = Сумма(Всего) Когда (Экспорт = 1); |Функция НДССумма = Сумма(НДС); | |Группировка Контрагент без групп; |Группировка МодельныйРяд без групп; |Группировка День; |Группировка ТекДок; | |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Сообщить("Не удалось обработать данные по реализациям"); Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл Пока Запрос.Группировка(3) = 1 Цикл Пока Запрос.Группировка(4) = 1 Цикл Коэф = 1; Если ПустоеЗначение(Запрос.ТекДок.ДокументОснование) = 0 Тогда Если Запрос.ТекДок.ДокументОснование.Вид() = "Заявка" Тогда Валюта = Запрос.ТекДок.ДокументОснование.Валюта; Если ПустоеЗначение(Валюта) = 0 Тогда Коэф = Валюта.Курс.Получить(Запрос.ТекДок.ДатаДок); Кратность = Валюта.Кратность.Получить(Запрос.ТекДок.ДатаДок); Если Кратность > 0 Тогда Коэф = Коэф / Кратность; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; День = Запрос.День; Контрагент = Запрос.Контрагент; МодельныйРяд = Запрос.МодельныйРяд; СуммаСНДС = Запрос.ВсегоСумма + Запрос.ВсегоСуммаЭ * 1.18 * Коэф; СуммаНДС = Запрос.НДССумма + Запрос.ВсегоСуммаЭ * 0.18 * Коэф; Количество = Запрос.КоличествоСумма; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
1
1Сергей
26.03.13
✎
12:18
|
Переписывай на прямой запрос
|
|||
2
Ayvengo
26.03.13
✎
12:19
|
(1) так я за помощью пришел, не шарю как запросы в 7ке писать, какие-то они ...
|
|||
3
orefkov
26.03.13
✎
12:19
|
А сейчас что, не одним делается?
ЗЫ: Любой клюшечный запрос можно сделать одним запросом. При условии, что это прямой запрос. |
|||
4
GLazNik
26.03.13
✎
12:19
|
(2) Переписывай на прямой запрос (c)
|
|||
5
orefkov
26.03.13
✎
12:20
|
Работает - не трожь :)
На основании чего кажется, что нуждается в оптимизации? Замеры делал? |
|||
6
1Сергей
26.03.13
✎
12:21
|
(2) ну, если ты восьмерошник и тебя не забанили в гугле, то проблем вообще не вижу
|
|||
7
Ayvengo
26.03.13
✎
12:21
|
(5) да мне нужно его в 8ке использовать для загрузки, не хочу еще код процедуры переписывать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |