|
Простой запрос и характеристики (без СКД) - слетают итоги | ☑ | ||
---|---|---|---|---|
0
suvolod
18.12.11
✎
15:25
|
Поставленная передо мной задача (специфическое форматирование отчета) не позволяет использовать СКД, поэтому столкнулся с тем, что обрабатывать характеристики надо как-то непосредственно в запросе. Пример:
1// У меня есть запрос следующего вида: Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Представление, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул, | ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, | ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, , , ) КАК ТоварыНаСкладахОстаткиИОбороты | |УПОРЯДОЧИТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование |ИТОГИ | СУММА(КоличествоНачальныйОстаток), | СУММА(КоличествоКонечныйОстаток) |ПО | ОБЩИЕ, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура"; Общие итоги по этому запросу возвращают, например, 1816 ед. как КоличествоНачальныйОстаток и 1719 как КоличествоКонечныйОстаток. 2// В исходном запросе меня не устраивает то, что мне нужно "расшифровать" ХарактеристикаНоменклатуры, т.е. получить поля "Цвет", "Размер", "Рост", которые являются свойствами (и значениями) конкретной характеристики. Для этого я делаю внутреннее соединение к регистру сведений, где эти значения хранятся. Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Представление, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Артикул, | ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, | ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток, | ЗначенияСвойствОбъектов.Свойство.Представление, | ПРЕДСТАВЛЕНИЕ(ЗначенияСвойствОбъектов.Значение) |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, , , ) КАК ТоварыНаСкладахОстаткиИОбороты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов | ПО ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры = ЗначенияСвойствОбъектов.Объект | |УПОРЯДОЧИТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование |ИТОГИ | СУММА(КоличествоНачальныйОстаток), | СУММА(КоличествоКонечныйОстаток) |ПО | ОБЩИЕ, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура, | ХарактеристикаНоменклатуры"; 3// Насколько я понимаю, этот запрос должен увеличить количество записей в результате. Т.е, если в запросе1 у меня по характеристике была запись вида: Юбка 000000145 "Ч XXL" 3 1 то в результате запроса2 она развернется в несколько строк: Юбка 000000145 "Ч XXL" 3 1 - - (группировочная) Юбка 000000145 "Ч XXL" 3 1 Цвет Черный (детальная запись) Юбка 000000145 "Ч XXL" 3 1 Размер XXL (детальная запись) И все-бы хорошо, но итоговые записи теперь у меня считаются неправильно: - задваиваются, а то и затраиваются (по кол-ву свойств характеристик). Это можно как-то поправить или придется их отслеживать/рассчитывать вручную? |
|||
1
suvolod
18.12.11
✎
15:35
|
... мне просто нужно знать, как правильно в этом случае работать с характеристиками. Сперва я вообще хотел оставить первый запрос как есть, а когда буду в цикле делать перебор характеристик номенклатуры из результата, отдельными маленькими запросами получать свойства и значение каждой характеристики. Но, наверное, это жутко неоптимально и все надо делать все одним запросом. Только вот как?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |