|
Интересно можно както оптимизировать этот код | ☑ | ||
---|---|---|---|---|
0
Gray776
05.05.17
✎
11:08
|
Ну всё работает так как и должно. Всё устраивает. Но я писал от фонаря особо не озадачиваясь. Вот и чисто интересно... Из истории кода:
Написано для конвертации данных из отраслевой + доработанной УПП 1,3 в БП 2,0. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ //| РеализацияТоваровУслугТовары.Ссылка.Грузополучатель, | РеализацияТоваровУслугТовары.Ссылка.ВалютаДокумента, | РеализацияТоваровУслугТовары.Ссылка.ВидОперации, | РеализацияТоваровУслугТовары.Ссылка.ДоговорКонтрагента, | РеализацияТоваровУслугТовары.Ссылка.Контрагент, | МАКСИМУМ(1) КАК КратностьВзаиморасчетов, | МАКСИМУМ(1) КАК КурсВзаиморасчетов, | РеализацияТоваровУслугТовары.Ссылка.Организация, | РеализацияТоваровУслугТовары.Ссылка.Склад, | РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС, | РеализацияТоваровУслугТовары.Ссылка.ТипЦен, | РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС, | РеализацияТоваровУслугТовары.Номенклатура, | СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество, | МАКСИМУМ(1) КАК КоличествоМест, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения, | МАКСИМУМ(1) КАК Коэффициент, | РеализацияТоваровУслугТовары.Цена, | СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма, | РеализацияТоваровУслугТовары.СтавкаНДС, | СУММА(РеализацияТоваровУслугТовары.СуммаНДС) КАК СуммаНДС |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | И РеализацияТоваровУслугТовары.Ссылка.Проведен | |СГРУППИРОВАТЬ ПО //| РеализацияТоваровУслугТовары.Ссылка.Грузополучатель, | РеализацияТоваровУслугТовары.СтавкаНДС, | РеализацияТоваровУслугТовары.Ссылка.Контрагент, | РеализацияТоваровУслугТовары.Ссылка.ВидОперации, | РеализацияТоваровУслугТовары.Ссылка.Организация, | РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения, | РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС, | РеализацияТоваровУслугТовары.Ссылка.Склад, | РеализацияТоваровУслугТовары.Ссылка.ДоговорКонтрагента, | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.Ссылка.ТипЦен, | РеализацияТоваровУслугТовары.Цена, | РеализацияТоваровУслугТовары.Ссылка.ВалютаДокумента | |УПОРЯДОЧИТЬ ПО | РеализацияТоваровУслугТовары.Ссылка.Контрагент, | РеализацияТоваровУслугТовары.Ссылка.Склад"; Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); ТЗ = РезультатЗапроса.Выгрузить(); ТЧ = ТЗ.СкопироватьКолонки(); ТЗРез = ТЗ.СкопироватьКолонки(); ТЗРез.Колонки.Добавить("Товары"); ПозТЗ = 0; Пока Выборка.СледующийПоЗначениюПоля("Контрагент") Цикл НоваяСтрока = ТЗРез.Добавить(); //Создали шапку документа ЗаполнитьЗначенияСвойств(НоваяСтрока, ТЗ[ПозТЗ]); ТекущийСклад = Выборка.Склад; Пока Выборка.Следующий() Цикл Если ТекущийСклад = Выборка.Склад Тогда //Пока все товары с одного склада ЗаполнитьЗначенияСвойств(ТЧ.Добавить(), ТЗ[ПозТЗ]); //заполняем ТЧ документа ПозТЗ = ПозТЗ+1; Иначе //Сменился склад, ТекущийСклад = Выборка.Склад; НоваяСтрока.Товары = ТЧ.Скопировать(); //Фиксируем докупент по предыдущему складу ТЧ.Очистить(); НоваяСтрока = ТЗРез.Добавить(); //и начинаем заполнять для следующего. ЗаполнитьЗначенияСвойств(НоваяСтрока, ТЗ[ПозТЗ]); ЗаполнитьЗначенияСвойств(ТЧ.Добавить(), ТЗ[ПозТЗ]); ПозТЗ = ПозТЗ+1; КонецЕсли; КонецЦикла; НоваяСтрока.Товары = ТЧ.Скопировать(); ТЧ.Очистить(); КонецЦикла; ВыборкаДанных = ТЗРез; ЗЫ: ОШИБКА: Сработал фильтр анти-мат (слово в о б щ е м (навтыкал пробелов ото опять ругаться начало на это самое слово)). Попробуйте выразиться более прилично. Эммм... Евгений Ваганович подрабатывает админством на мисте? |
|||
1
Gray776
05.05.17
✎
11:17
|
+ А да забыл надо было при выгрузке сворачивать по контрагентам реализации ну и если реализация одному клонтрагенту с разных складов чтоб так же по складам разбивалось свернутое. Ну про склады в процессе как бы выяснилось бухи просили просто сворачивать по контрагенту...
|
|||
2
бомболюк
05.05.17
✎
11:18
|
а замеры производительности где нить показывают откровенно слабые места?
|
|||
3
Fish
05.05.17
✎
11:18
|
(0) Работает - не трожь! (с)
|
|||
4
Fish
05.05.17
✎
11:20
|
(0) И да. Учитесь писать грамотно. Матофильтр как бы намекает.
|
|||
5
zvial
05.05.17
✎
11:21
|
С итогами в запросе как-то прозрачней бы выглядело
|
|||
6
zvial
05.05.17
✎
11:21
|
А так да, не трожь ) (3)
|
|||
7
Gray776
05.05.17
✎
11:21
|
(3) да сча тож самое для поступления ваять ... это трогать не буду но мож как -то улучшить код дя поступлений...
|
|||
8
Gray776
05.05.17
✎
11:23
|
(5) хммм ок подумаем над итогами :) спасиб
|
|||
9
Gray776
05.05.17
✎
11:24
|
(2) кстати довольно шустро работает я даж не ожидал... Если стандартно на автомате делать то блин медленне процесс выгрузки загрузки ...
|
|||
10
catena
05.05.17
✎
11:42
|
<Сработал фильтр анти-мат (слово в о б щ е м>
Потому что нет такого слова. Можно писать "в общем" и "вообще". |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |