Имя: Пароль:
1C
1С v8
Запрос
0 ksTheme
 
04.09.13
18:09
Запрос.Текст = "ВЫБРАТЬ
    |    ПриемТовараНаРемонт.Номенклатура,
    |    ЕСТЬNULL(ПриемТовараНаРемонт.Количество, 0) КАК ПриемКоличество,
    |    ЕСТЬNULL(ВложенныйЗапрос.Количество, 0) КАК Поле1
    |ИЗ
    |    (ВЫБРАТЬ
    |        ПриемТовараНаРемонтТовары.Номенклатура КАК Номенклатура,
    |        ПриемТовараНаРемонтТовары.Количество КАК Количество
    |    ИЗ
    |        Документ.ПриемТовараНаРемонт.Товары КАК ПриемТовараНаРемонтТовары
    |    ГДЕ
    |        ПриемТовараНаРемонтТовары.Ссылка = &ДокументПриемТовара) КАК ПриемТовараНаРемонт
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ";
    //Если реализация
    Если ТипДокумента = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
        Запрос.Текст = Запрос.Текст+" РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
        |            РеализацияТоваровУслугТовары.Количество КАК Количество
        |        ИЗ
        |            Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        |        ГДЕ
        |            РеализацияТоваровУслугТовары.Ссылка = &Документ) КАК ВложенныйЗапрос";
    //Если ОРП        
    ИначеЕсли ТипДокумента = Тип("ДокументСсылка.ОтчетОРозничныхПродажах") Тогда
        Запрос.Текст = Запрос.Текст+" ОтчетОРозничныхПродажахТовары.Номенклатура КАК Номенклатура,
        |            ОтчетОРозничныхПродажахТовары.Количество КАК Количество
        |        ИЗ
        |            Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажах
        |        ГДЕ
        |            ОтчетОРозничныхПродажах.Ссылка = &Документ) КАК ВложенныйЗапрос";
    КонецЕсли;  
    
    Запрос.Текст = Запрос.Текст+" ПО ПриемТовараНаРемонт.Номенклатура = ВложенныйЗапрос.Номенклатура";
    
    Запрос.УстановитьПараметр("Документ", Документ.Ссылка);
    Запрос.УстановитьПараметр("ДокументПриемТовара", ЭтотОбъект.Ссылка);
    
    Результат = Запрос.Выполнить();

Текст ошибки:
{Документ.ПриемТовараНаРемонт.МодульОбъекта(367)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить();
по причине:
{(13, 29)}: Поле не найдено "ОтчетОРозничныхПродажахТовары.Номенклатура"
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ <<?>>ОтчетОРозничныхПродажахТовары.Номенклатура КАК Номенклатура,

Что я не так делаю?
Если выбираю реализацию а не отчет о розн продажах то все работает
1 ale-sarin
 
04.09.13
18:11
Я вижу здесь ошибку. А Вы?
        Запрос.Текст = Запрос.Текст+" ОтчетОРозничныхПродажахТовары.Номенклатура КАК Номенклатура,
        |            ОтчетОРозничныхПродажахТовары.Количество КАК Количество
        |        ИЗ
        |            Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажах
        |        ГДЕ
        |            ОтчетОРозничныхПродажах.Ссылка = &Документ) КАК ВложенныйЗапрос";
2 YF
 
04.09.13
18:12
Что не понятно в описании ошибки?
3 ale-sarin
 
04.09.13
18:12
Не мучайся. На

        Запрос.Текст = Запрос.Текст+" ОтчетОРозничныхПродажахТовары.Номенклатура КАК Номенклатура,
        |            ОтчетОРозничныхПродажахТовары.Количество КАК Количество
        |        ИЗ
        |            Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
        |        ГДЕ
        |            ОтчетОРозничныхПродажахТовары.Ссылка = &Документ) КАК ВложенныйЗапрос";
4 ksTheme
 
04.09.13
18:14
(1) вот я тугодум, смотрю в книгу вижу фигу, спасибо!
5 ale-sarin
 
04.09.13
18:31
(4) Потому что надо по другому делать.
Например так: один запрос с РТУ, а если выбран ОтчетОРозничныхПродажах, то
Запрос.Текст = СтрЗаменить(Запрос.Текст, "РеализацияТоваровУслуг", "ОтчетОРозничныхПродажах");

При условии совпадения структуры объектов.
И конструктором открывать.