Имя: Пароль:
1C
1С v8
Ошибка при изменении текста запроса в ПостроителеОтчета
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) Разобрался и без него - пришлось немного раскинуть мозгами. Но за ответ всё равно спасибо!