![]() |
![]() |
![]() |
|
Как в проверить в запросе возможность группировки? | ☑ | ||
---|---|---|---|---|
0
Shur1cIT
26.12.16
✎
14:03
|
Полазил по методам ничего прямо подходящего не нашел.
Списание по партиям, соответственно есть товар который в разрезе номенклатуры храниться, номенклатуры и серии, номенклатуры и характеристики, номенклатуры характеристики и серии ну и прочие возможные варианты. Списание по партиям делаю класическим способом ставлю группировку по номенклатуре, серии и характеристики, но если учет по характеристики не ведеться то естественно выходим из цикла не добравшись до момента проведения, пытался найти проверки на возможность группировки не удалось, в табличной части могут быть товары которые и по сериям ведуться и без, тоже самое с характеристиками тоесть текст запроса динамически менять не могу (ну если только запрос в цикле не делать), ниже кусок кода сам запрос не привожу он нормальный... Запрос.УстановитьПараметр("Выборганизация",Организация); Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда ДатаОстатков = Неопределено; Иначе ДатаОстатков = Новый Граница(МоментВремени(),ВидГраницы.Включая); КонецЕсли; Запрос.УстановитьПараметр("Выбпериод",ДатаОстатков); Запрос.УстановитьПараметр("Ссылка",Ссылка); Результат = Запрос.Выполнить(); ВыборкаПоНоменклатуре = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,); Пока ВыборкаПоНоменклатуре.Следующий() Цикл ВыборкаПоСериям = ВыборкаПоНоменклатуре.Выбрать(); Пока ВыборкаПоСериям.Следующий() Цикл ВыборкаПоХарактеристикам = ВыборкаПоСериям.Выбрать(); Пока ВыборкаПоХарактеристикам.Следующий() Цикл ВыборкаПопартиям = ВыборкаПоХарактеристикам.Выбрать(); Пока ВыборкаПопартиям.Следующий() Цикл //Тут проводим по регистру КонецЦикла; КонецЦикла; конецЦикла; КонецЦикла; |
|||
1
Fragster
гуру
26.12.16
✎
14:07
|
||||
2
Fragster
гуру
26.12.16
✎
14:07
|
>естественно выходим из цикла не добравшись до момента проведения
ЛОЖЬ |
|||
3
Fragster
гуру
26.12.16
✎
14:07
|
это неестественно. если нет учета по характеристикам, то там будет одна строка
|
|||
4
Shur1cIT
26.12.16
✎
14:20
|
(3) Нету там одной стоки
http://s017.radikal.ru/i434/1612/d5/207d9fe8d4df.jpg http://s020.radikal.ru/i718/1612/a7/0e0c8d662ecc.jpg на шаге Пока ВыборкаПоХарактеристикам.Следующий() Цикл выход из цикла У меня только извращеный вариант есть, в запросе в условии поля поставить условие если характеристики нет использовать пустую ссылку на характеристику дабы обход по группировкам не порушился |
|||
5
Shur1cIT
26.12.16
✎
14:34
|
фокус с пустой ссылкой не получился, не хочет он выборку по пустой ссылке делать
ЕСТЬNULL(ТабЧасть.ХарактеристикаНоменклатуры, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК ХарактеристикаНоменклатуры, |
|||
6
Fragster
гуру
26.12.16
✎
14:39
|
если есть итоги, то есть и детальные записи.
|
|||
7
Fragster
гуру
26.12.16
✎
14:40
|
соответственно, если нет детальных записей, то нет и итогов.
|
|||
8
Fragster
гуру
26.12.16
✎
14:40
|
а значит обход выборки тут не причем
|
|||
9
Shur1cIT
26.12.16
✎
14:45
|
(7) Хорошо как мне проверить наличие итогов по характеристике?
|
|||
10
Shur1cIT
26.12.16
✎
14:54
|
(7) значение итога смогу узнать только после
Пока ВыборкаПоХарактеристикам.Следующий() Цикл которое валиться если характеристика NULL или пустая ссылка |
|||
11
Shur1cIT
26.12.16
✎
14:59
|
Кидаю целиком процедуру для наглядности
Процедура ПровестиПоОстаткамПремий(РежимПроведения) Запрос = Новый запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.СерияНоменклатуры, | РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры, | СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество |ПОМЕСТИТЬ ТабЧасть |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.СерияНоменклатуры, | РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТабЧасть.Номенклатура КАК Номенклатура, | ТабЧасть.СерияНоменклатуры КАК СерияНоменклатуры, | ЕСТЬNULL(ТабЧасть.ХарактеристикаНоменклатуры, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК ХарактеристикаНоменклатуры, | ТабЧасть.Количество КАК Количество, | ПартииТоваровСкидкиОстатки.КоличествоОстаток КАК КоличествоОстаток, | ПартииТоваровСкидкиОстатки.ДокументОприходования, | ПартииТоваровСкидкиОстатки.СтоимостьУУОстаток КАК СтоимостьУУОстаток, | ПартииТоваровСкидкиОстатки.ДокументОприходования.МоментВремени КАК МоментВремени |ИЗ | ТабЧасть КАК ТабЧасть | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровСкидки.Остатки(&Выбпериод, Организация = &Выборганизация) КАК ПартииТоваровСкидкиОстатки | ПО ТабЧасть.Номенклатура = ПартииТоваровСкидкиОстатки.Номенклатура | И ТабЧасть.СерияНоменклатуры = ПартииТоваровСкидкиОстатки.СерияНоменклатуры | И ТабЧасть.ХарактеристикаНоменклатуры = ПартииТоваровСкидкиОстатки.ХарактеристикаНоменклатуры | |УПОРЯДОЧИТЬ ПО | МоментВремени УБЫВ |ИТОГИ | МАКСИМУМ(Количество), | СУММА(КоличествоОстаток), | СУММА(СтоимостьУУОстаток) |ПО | Номенклатура, | СерияНоменклатуры, | ХарактеристикаНоменклатуры"; Запрос.УстановитьПараметр("Выборганизация",Организация); Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда ДатаОстатков = Неопределено; Иначе ДатаОстатков = Новый Граница(МоментВремени(),ВидГраницы.Включая); КонецЕсли; Запрос.УстановитьПараметр("Выбпериод",ДатаОстатков); Запрос.УстановитьПараметр("Ссылка",Ссылка); Результат = Запрос.Выполнить(); ВыборкаПоНоменклатуре = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,); Пока ВыборкаПоНоменклатуре.Следующий() Цикл ВыборкаПоСериям = ВыборкаПоНоменклатуре.Выбрать(); Пока ВыборкаПоСериям.Следующий() Цикл ВыборкаПоХарактеристикам = ВыборкаПоСериям.Выбрать(); Пока ВыборкаПоХарактеристикам.Следующий() Цикл ВыборкаПопартиям = ВыборкаПоХарактеристикам.Выбрать(); Пока ВыборкаПопартиям.Следующий() Цикл //Тут проводим по регистру КонецЦикла; КонецЦикла; конецЦикла; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |