|
Ошибка при изменении текста запроса в ПостроителеОтчета | ☑ | ||
---|---|---|---|---|
0
al_zzz
31.03.12
✎
20:10
|
Хочу поменять алгоритм получения себестоимости в отчете АВС-анализ продаж. Для расчета использую временные таблицы. Получил такой вот запрос в итоге:
ТекстЗапроса = "ВЫБРАТЬ | ПродажиОбороты.Номенклатура, | ПродажиОбороты.Регистратор, | ПродажиОбороты.КоличествоОборот, | ПродажиОбороты.СтоимостьОборот, | ПродажиОбороты.Период, | ПродажиОбороты.НДСОборот |ПОМЕСТИТЬ _0_Продажи |ИЗ | РегистрНакопления.Продажи.Обороты( | &НачалоПериода, | &КонецПериода, | Регистратор, | (НЕ Контрагент В ИЕРАРХИИ (&СобственныеКонтрагенты)) | И Номенклатура <> &ПустаяНоменклатура) КАК ПродажиОбороты |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | СебестоимостьНаДату.Номенклатура, | СебестоимостьНаДату.Регистратор, | СебестоимостьНаДату.Цена |ПОМЕСТИТЬ _01_СебестоимостьНаДокумент |ИЗ | (ВЫБРАТЬ | ВложенныйЗапрос.Номенклатура КАК Номенклатура, | ВложенныйЗапрос.Регистратор КАК Регистратор, | СебестоимостьНоменклатуры.Цена КАК Цена | ИЗ | (ВЫБРАТЬ | _0_Продажи.Номенклатура КАК Номенклатура, | _0_Продажи.Регистратор КАК Регистратор, | МАКСИМУМ(СебестоимостьНоменклатуры.Период) КАК Период | ИЗ | _0_Продажи КАК _0_Продажи | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СебестоимостьНоменклатуры КАК СебестоимостьНоменклатуры | ПО _0_Продажи.Номенклатура = СебестоимостьНоменклатуры.Номенклатура | И _0_Продажи.Период >= СебестоимостьНоменклатуры.Период | И (СебестоимостьНоменклатуры.ТипЦен = &ЦенаТаксировки) | | СГРУППИРОВАТЬ ПО | _0_Продажи.Номенклатура, | _0_Продажи.Регистратор) КАК ВложенныйЗапрос | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СебестоимостьНоменклатуры КАК СебестоимостьНоменклатуры | ПО ВложенныйЗапрос.Номенклатура = СебестоимостьНоменклатуры.Номенклатура | И (СебестоимостьНоменклатуры.ТипЦен = &ЦенаТаксировки) | И ВложенныйЗапрос.Период = СебестоимостьНоменклатуры.Период) КАК СебестоимостьНаДату |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЦеныЗакупа.Номенклатура, | ЦеныЗакупа.Регистратор, | ЦеныЗакупа.Цена |ПОМЕСТИТЬ _2_ЦенаЗакупа |ИЗ | (ВЫБРАТЬ | ЦенаЗакупаМакс.Номенклатура КАК Номенклатура, | ЦенаЗакупаМакс.Регистратор КАК Регистратор, | ЦеныНоменклатуры.Цена КАК Цена | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период, | _0_Продажи.Номенклатура КАК Номенклатура, | _0_Продажи.Регистратор КАК Регистратор | ИЗ | _0_Продажи КАК _0_Продажи | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО _0_Продажи.Номенклатура = ЦеныНоменклатуры.Номенклатура | И (ЦеныНоменклатуры.ТипЦен = &Закуп) | И _0_Продажи.Период >= ЦеныНоменклатуры.Период | | СГРУППИРОВАТЬ ПО | _0_Продажи.Номенклатура, | _0_Продажи.Регистратор) КАК ЦенаЗакупаМакс | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО ЦенаЗакупаМакс.Период = ЦеныНоменклатуры.Период | И (ЦеныНоменклатуры.ТипЦен = &Закуп) | И ЦенаЗакупаМакс.Номенклатура = ЦеныНоменклатуры.Номенклатура) КАК ЦеныЗакупа |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | _0_Продажи.Номенклатура, | _0_Продажи.НДСОборот, | СУММА(_0_Продажи.КоличествоОборот) КАК Количество, | СУММА(_0_Продажи.СтоимостьОборот) КАК Выручка, | СРЕДНЕЕ(_2_ЦенаЗакупа.Цена) КАК Цена, | _01_СебестоимостьНаДокумент.Цена КАК СебестоимостьОборот |ПОМЕСТИТЬ _3_ПродажиГруппировка |ИЗ | _0_Продажи КАК _0_Продажи | ЛЕВОЕ СОЕДИНЕНИЕ _2_ЦенаЗакупа КАК _2_ЦенаЗакупа | ПО _0_Продажи.Регистратор = _2_ЦенаЗакупа.Регистратор | И _0_Продажи.Номенклатура = _2_ЦенаЗакупа.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ _01_СебестоимостьНаДокумент КАК _01_СебестоимостьНаДокумент | ПО _0_Продажи.Номенклатура = _01_СебестоимостьНаДокумент.Номенклатура | И _0_Продажи.Регистратор = _01_СебестоимостьНаДокумент.Регистратор | |СГРУППИРОВАТЬ ПО | _0_Продажи.Номенклатура, | _01_СебестоимостьНаДокумент.Цена, | _0_Продажи.НДСОборот |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | _3_ПродажиГруппировка.Номенклатура КАК Номенклатура, | _3_ПродажиГруппировка.Количество КАК КоличествоПроданныхТоваров, | _3_ПродажиГруппировка.Выручка КАК СуммаВыручки, | _3_ПродажиГруппировка.Количество * _3_ПродажиГруппировка.СебестоимостьОборот КАК СебестоимостьНаДокумент, | _3_ПродажиГруппировка.Количество * СебестоимостьНоменклатурыСрезПоследних.Цена КАК СебестоимостьТекущая, | _3_ПродажиГруппировка.Цена * _3_ПродажиГруппировка.Количество КАК СебестоимостьПоЦенеЗакупа, | _3_ПродажиГруппировка.НДСОборот |ПОМЕСТИТЬ _4_ОбъединеннаяТаблица |{ВЫБРАТЬ | Номенклатура.*, | КоличествоПроданныхТоваров, | СуммаВыручки, | СебестоимостьПоЦенеЗакупа} |ИЗ | _3_ПродажиГруппировка КАК _3_ПродажиГруппировка | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СебестоимостьНоменклатуры.СрезПоследних(, ТипЦен = &ЦенаТаксировки) КАК СебестоимостьНоменклатурыСрезПоследних | ПО _3_ПродажиГруппировка.Номенклатура = СебестоимостьНоменклатурыСрезПоследних.Номенклатура |{ГДЕ | _3_ПродажиГруппировка.Номенклатура.*} |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | _4_ОбъединеннаяТаблица.Номенклатура, | _4_ОбъединеннаяТаблица.КоличествоПроданныхТоваров, | _4_ОбъединеннаяТаблица.СуммаВыручки, | _4_ОбъединеннаяТаблица.СуммаВыручки - _4_ОбъединеннаяТаблица.НДСОборот КАК СуммаВыручкиБезНДС, | ВЫБОР | КОГДА ВЫБОР | КОГДА ВЫБОР | КОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент <> 0 | ТОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьТекущая | КОНЕЦ <> 0 | ТОГДА ВЫБОР | КОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент <> 0 | ТОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьТекущая | КОНЕЦ | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьПоЦенеЗакупа | КОНЕЦ >= 0 | ТОГДА ВЫБОР | КОГДА ВЫБОР | КОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент <> 0 | ТОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьТекущая | КОНЕЦ <> 0 | ТОГДА ВЫБОР | КОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент <> 0 | ТОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьТекущая | КОНЕЦ | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьПоЦенеЗакупа | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ КАК Себестоимость, | _4_ОбъединеннаяТаблица.СуммаВыручки - ВЫБОР | КОГДА ВЫБОР | КОГДА ВЫБОР | КОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент <> 0 | ТОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьТекущая | КОНЕЦ <> 0 | ТОГДА ВЫБОР | КОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент <> 0 | ТОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьТекущая | КОНЕЦ | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьПоЦенеЗакупа | КОНЕЦ >= 0 | ТОГДА ВЫБОР | КОГДА ВЫБОР | КОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент <> 0 | ТОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьТекущая | КОНЕЦ <> 0 | ТОГДА ВЫБОР | КОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент <> 0 | ТОГДА _4_ОбъединеннаяТаблица.СебестоимостьНаДокумент | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьТекущая | КОНЕЦ | ИНАЧЕ _4_ОбъединеннаяТаблица.СебестоимостьПоЦенеЗакупа | КОНЕЦ | ИНАЧЕ 0 | КОНЕЦ КАК СуммаВаловойПрибыли |{ВЫБРАТЬ | Номенклатура.*, | КоличествоПроданныхТоваров, | СуммаВыручки, | СуммаВыручкиБезНДС, | Себестоимость, | СуммаВаловойПрибыли} |ИЗ | _4_ОбъединеннаяТаблица КАК _4_ОбъединеннаяТаблица |{ГДЕ | _4_ОбъединеннаяТаблица.Номенклатура.*} |{УПОРЯДОЧИТЬ ПО | Номенклатура.*}"; Добавлен ещё один ресурс - Себестоимость. В консоли отчетов отрабатывается он корректно, как нужно. Заменяю им "родной" запрос в модуле отчета: ТекстЗапроса = " |ВЫБРАТЬ РАЗРЕШЕННЫЕ //РАЗЛИЧНЫЕ | Продажи." + ОбъектАнализа + " КАК " + ОбъектАнализа + ", | СУММА(Продажи.СтоимостьОборот) КАК СуммаВыручки, | СУММА(Продажи.СтоимостьОборот - Продажи.НДСОборот) КАК СуммаВыручкиБезНДС, | СУММА(ВЫБОР КОГДА (ПродажиСебестоимость.СтоимостьОборот ЕСТЬ NULL ИЛИ ПродажиСебестоимость.КоличествоОборот ЕСТЬ NULL ИЛИ ПродажиСебестоимость.КоличествоОборот = 0) ТОГДА | Продажи.СтоимостьОборот | ИНАЧЕ | Продажи.СтоимостьОборот - (ПродажиСебестоимость.СтоимостьОборот / ПродажиСебестоимость.КоличествоОборот) * Продажи.КоличествоОборот | КОНЕЦ) КАК СуммаВаловойПрибыли, | СУММА(Продажи.КоличествоОборот) КАК КоличествоПроданныхТоваров | | {ВЫБРАТЬ | Продажи.Номенклатура.*, | Продажи.Регистратор.*, | Продажи." + ОбъектАнализа + ".* | //СВОЙСТВА | } | |ИЗ | | ( | ВЫБРАТЬ | Продажи.Номенклатура КАК Номенклатура, | Продажи.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | Продажи.ДоговорКонтрагента.Владелец КАК Контрагент, | Продажи.ДокументПродажи.Ответственный КАК МенеджерПокупателя, | Продажи.СтоимостьОборот КАК СтоимостьОборот, | Продажи.НДСОборот КАК НДСОборот, | Продажи.КоличествоОборот КАК КоличествоОборот, | Продажи.Регистратор КАК Регистратор | | ИЗ | | РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор , (Номенклатура <> &ПустаяНоменклатура"+?(ОбъектАнализа = "Номенклатура",""," И ДоговорКонтрагента <> &ПустойДоговор")+ " И (НЕ Контрагент В (ВЫБРАТЬ Рег.Контрагент ИЗ РегистрСведений.СобственныеКонтрагенты КАК Рег)))) КАК Продажи | | ) КАК Продажи |//СОЕДИНЕНИЯ | | ЛЕВОЕ СОЕДИНЕНИЕ | | ( | ВЫБРАТЬ | ПродажиСебестоимость.Номенклатура КАК Номенклатура, | ПродажиСебестоимость.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | СУММА(ПродажиСебестоимость.СтоимостьОборот) КАК СтоимостьОборот, | СУММА(ПродажиСебестоимость.КоличествоОборот) КАК КоличествоОборот, | ВЫБОР КОГДА ПродажиСебестоимость.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары | ТОГДА ПродажиСебестоимость.Регистратор.ДокументПередачи | ИНАЧЕ ПродажиСебестоимость.Регистратор | КОНЕЦ КАК Регистратор | | ИЗ | РегистрНакопления.ПродажиСебестоимость.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор , Номенклатура <> &ПустаяНоменклатура) КАК ПродажиСебестоимость | | СГРУППИРОВАТЬ ПО | ПродажиСебестоимость.Номенклатура, | ПродажиСебестоимость.ХарактеристикаНоменклатуры, | ВЫБОР КОГДА ПродажиСебестоимость.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары | ТОГДА ПродажиСебестоимость.Регистратор.ДокументПередачи | ИНАЧЕ ПродажиСебестоимость.Регистратор | КОНЕЦ | | ) КАК ПродажиСебестоимость | | ПО | ПродажиСебестоимость.Номенклатура = Продажи.Номенклатура | И | ПродажиСебестоимость.ХарактеристикаНоменклатуры = Продажи.ХарактеристикаНоменклатуры | И | (ВЫБОР | КОГДА ПродажиСебестоимость.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары | ТОГДА ПродажиСебестоимость.Регистратор.ДокументПередачи = Продажи.Регистратор | ИНАЧЕ ПродажиСебестоимость.Регистратор = Продажи.Регистратор | КОНЕЦ) | |{ГДЕ | Продажи.Номенклатура.* КАК Номенклатура, | Продажи.Контрагент.* КАК Контрагент, | Продажи.МенеджерПокупателя.* КАК МенеджерПокупателя | //СВОЙСТВА | //КАТЕГОРИИ | } | |СГРУППИРОВАТЬ ПО | Продажи." + ОбъектАнализа + " | |{УПОРЯДОЧИТЬ ПО | Продажи.Номенклатура.* КАК Номенклатура, | Продажи.Контрагент.* КАК Контрагент, | Продажи.МенеджерПокупателя.* КАК МенеджерПокупателя | //СВОЙСТВА | } | |{ИТОГИ ПО | Продажи.Номенклатура.* КАК Номенклатура, | Продажи.Контрагент.* КАК Контрагент, | Продажи.МенеджерПокупателя.* КАК МенеджерПокупателя, | Продажи.Регистратор.* КАК ДокументПродажи | //СВОЙСТВА | } | |"; В итоге при открытии отчета получаю: "Ошибка при вызове метода контекста (Добавить): Не найдено измерение. "Номенклатура" ПостроительОтчета.ИзмеренияСтроки.Добавить(ОбъектАнализа); по причине: Не найдено измерение. "Номенклатура"" Вопрос: ПостроительОтчета не умеет работать с временными таблицами? Если умеет, чего ему нужно от меня? Что в запросе указано неправильно(не указано)? З.Ы. 1С:Предприятие 8.1 (8.1.15.14). |
|||
1
al_zzz
31.03.12
✎
21:49
|
Блин! Что, никто так и не ответит что ли?
|
|||
2
PVV65
31.03.12
✎
21:58
|
(1) это - к Радчнко.
|
|||
3
al_zzz
31.03.12
✎
22:14
|
(2) Разобрался и без него - пришлось немного раскинуть мозгами. Но за ответ всё равно спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |