Имя: Пароль:
1C
1С v8
Вложенный запрос с объединением
0 Kucha88
 
20.09.13
08:46
Доброго всем дня, помогите разобраться с кодом 1с 8.2 УПП. Есть документ заказ покупателя и в ПФ пытаюсь вывести доп колонки КоличествоМест из ТЧ Товары и постоянно выдает ошибки(Ошибка при вызове метода контекста (Выполнить): {(13, 18)}: Поле не найдено "Вложенныйзапрос.количествомест" Вложенныйзапрос.<>количествомест как кмест,) . Я никак не могу разобраться как сделать, помогите пожалуйста разобраться, код:

Запрос = Новый Запрос;
        ТекстЗапроса = "
        |ВЫБРАТЬ
        |    ВложенныйЗапрос.НомерТЧ,
        |    Минимум(ВложенныйЗапрос.ПризнакКорректировка)     КАК ПризнакКорректировка,
        |    Минимум(ВложенныйЗапрос.НомерСтроки)             КАК НомерСтроки,
        |    ВложенныйЗапрос.Номенклатура,
        |    ВложенныйЗапрос.НаименованиеПолное,
        // Добавление в выборку наименования по сертификату.
        |"+?(НаЭкспорт,"    ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, """")  КАК НаименованиеПоСертификату,", "")+"
        |    ВложенныйЗапрос.Номенклатура.Артикул            КАК Артикул,
        |    ВложенныйЗапрос.Номенклатура.Код                КАК Код,
        |    СУММА(ВложенныйЗапрос.Количество)               КАК КоличествоТовара,
        |    ВложенныйЗапрос.ЕдиницаИзмерения  КАК ЕдиницаИзмерения,
        |    ВложенныйЗапрос.количествомест как кмест, // это я пытаюсь добавить
        |    ВложенныйЗапрос.ПроцентСкидкиНаценки
        |    + ВложенныйЗапрос.ПроцентАвтоматическихСкидок   КАК Скидка,
        |    СУММА(ВложенныйЗапрос.СуммаНДС)                 КАК СуммаНДС,
        |    ВложенныйЗапрос.Цена                            КАК Цена,
        |    СУММА(ВложенныйЗапрос.Сумма)                    КАК Сумма,
        |    ВложенныйЗапрос.ХарактеристикаНоменклатуры      КАК Характеристика,
        |    NULL                                            КАК Серия
        |ИЗ
        |
        |(
        |ВЫБРАТЬ
        |        Док.Номенклатура                КАК Номенклатура,
        |        ВЫРАЗИТЬ (Док.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК НаименованиеПолное,
        |        Док.ЕдиницаИзмерения            КАК ЕдиницаИзмерения,
        |       Док.КоличествоМест              как кмест,
        |        Док.Цена                        КАК Цена,
        |        Док.ПроцентСкидкиНаценки        КАК ПроцентСкидкиНаценки,
        |        Док.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
        |        Док.ХарактеристикаНоменклатуры  КАК ХарактеристикаНоменклатуры,
        |        Док.СуммаНДС                    КАК СуммаНДС,
        |" + ?(Шапка.СуммаВключаетНДС,
        "        ВЫБОР
        |           КОГДА Док.Ссылка.СуммаВключаетНДС
        |                ТОГДА Док.Сумма
        |            ИНАЧЕ Док.Сумма + Док.СуммаНДС
        |        КОНЕЦ",
        "        ВЫБОР
        |           КОГДА НЕ Док.Ссылка.СуммаВключаетНДС
        |                ТОГДА Док.Сумма
        |            ИНАЧЕ Док.Сумма + Док.СуммаНДС
        |        КОНЕЦ") + " КАК Сумма,
        |        Док.Количество                  КАК Количество,
        |        (1)                             КАК НомерТЧ,
        |        (0)                             КАК ПризнакКорректировка,
        |        Док.НомерСтроки                 КАК НомерСтроки
        |    ИЗ
        |        Документ." + СтруктураАктуальныйЗаказ.ИмяЗаказа + ".Товары КАК Док
        |
        |    ГДЕ
        |        Док.Ссылка = &АктуальныйЗаказ
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |        Док.Номенклатура               КАК Номенклатура,
        |        ВЫРАЗИТЬ (Док.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК НаименованиеПолное,
        |        Док.ЕдиницаИзмерения           КАК ЕдиницаИзмерения,
        |        Док.КоличествоМест           КАК КМест,
        |        Док.Цена                       КАК Цена,
        |        Док.ПроцентСкидкиНаценки       КАК ПроцентСкидкиНаценки,
        |        Док.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
        |        Док.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        |        Док.СуммаНДС                   КАК СуммаНДС,
        |" + ?(Шапка.СуммаВключаетНДС,
        "        ВЫБОР
        |           КОГДА Док.Ссылка.СуммаВключаетНДС
        |                ТОГДА Док.Сумма
        |            ИНАЧЕ Док.Сумма + Док.СуммаНДС
        |        КОНЕЦ",
        "        ВЫБОР
        |           КОГДА НЕ Док.Ссылка.СуммаВключаетНДС
        |                ТОГДА Док.Сумма
        |            ИНАЧЕ Док.Сумма + Док.СуммаНДС
        |        КОНЕЦ") + " КАК Сумма,
        |        Док.Количество               КАК Количество,
        |        (1)                          КАК НомерТЧ,
        |        (1)                          КАК ПризнакКорректировка,
        // Для корректировок номер строки увеличивается, чтобы добавляемые позиции были последними
        |        (9999 + Док.НомерСтроки)     КАК НомерСтроки
        |    ИЗ
        |        Документ.КорректировкаЗаказаПокупателя.Товары КАК Док
        |
        |    ГДЕ
        |        Док.Ссылка.ЗаказПокупателя = &ТекущийДокумент
        |        И Док.Ссылка.Проведен      = Истина
        |        И Док.Ссылка.Дата > &ДатаАктуальногоЗаказа
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |        Док.Номенклатура                         КАК Номенклатура,
        |        " + СтрокаВыборкиПоляСодержания + "      КАК НаименованиеПолное,
        |        Док.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
        |       NULL как кмест,
        |        Док.Цена                                 КАК Цена,
        |        Док.ПроцентСкидкиНаценки                 КАК ПроцентСкидкиНаценки,
        |        Док.ПроцентАвтоматическихСкидок          КАК ПроцентАвтоматическихСкидок,
        |        NULL                                     КАК ХарактеристикаНоменклатуры,
        |        Док.СуммаНДС                             КАК СуммаНДС,
        |" + ?(Шапка.СуммаВключаетНДС,
        "        ВЫБОР
        |           КОГДА Док.Ссылка.СуммаВключаетНДС
        |                ТОГДА Док.Сумма
        |            ИНАЧЕ Док.Сумма + Док.СуммаНДС
        |        КОНЕЦ",
        "        ВЫБОР
        |           КОГДА НЕ Док.Ссылка.СуммаВключаетНДС
        |                ТОГДА Док.Сумма
        |            ИНАЧЕ Док.Сумма + Док.СуммаНДС
        |        КОНЕЦ") + "                              КАК Сумма,
        |        Док.Количество                           КАК Количество,
        |        (2)                                      КАК НомерТЧ,
        |        (0)                                      КАК ПризнакКорректировка,
        |        Док.НомерСтроки                          КАК НомерСтроки
        |    ИЗ
        |        Документ." + СтруктураАктуальныйЗаказ.ИмяЗаказа + ".Услуги КАК Док
        |
        |    ГДЕ
        |        Док.Ссылка = &АктуальныйЗаказ
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |        Док.Номенклатура                          КАК Номенклатура,
        |" + СтрокаВыборкиПоляСодержания + " КАК НаименованиеПолное,
        |        Док.Номенклатура.ЕдиницаХраненияОстатков  КАК ЕдиницаИзмерения,
        |NULL           КАК КМест,
           |        Док.Цена                                  КАК Цена,
        |        Док.ПроцентСкидкиНаценки                  КАК ПроцентСкидкиНаценки,
        |        Док.ПроцентАвтоматическихСкидок           КАК ПроцентАвтоматическихСкидок,
        |        NULL                                      КАК ХарактеристикаНоменклатуры,
        |        Док.СуммаНДС                              КАК СуммаНДС,
        |" + ?(Шапка.СуммаВключаетНДС,
        "        ВЫБОР
        |           КОГДА Док.Ссылка.СуммаВключаетНДС
        |                ТОГДА Док.Сумма
        |            ИНАЧЕ Док.Сумма + Док.СуммаНДС
        |        КОНЕЦ",
        "        ВЫБОР
        |           КОГДА НЕ Док.Ссылка.СуммаВключаетНДС
        |                ТОГДА Док.Сумма
        |            ИНАЧЕ Док.Сумма + Док.СуммаНДС
        |        КОНЕЦ") + "                               КАК Сумма,
        |        Док.Количество                            КАК Количество,
        |        (2)                                       КАК НомерТЧ,
        |        (1)                                       КАК ПризнакКорректировка,
        // Для корректировок номер строки увеличивается, чтобы добавляемые позиции были последними
        |        (9999 + Док.НомерСтроки)                   КАК НомерСтроки
        |    ИЗ
        |        Документ.КорректировкаЗаказаПокупателя.Услуги КАК Док
        |
        |    ГДЕ
        |        Док.Ссылка.ЗаказПокупателя = &ТекущийДокумент
        |        И Док.Ссылка.Проведен      = Истина
        |        И Док.Ссылка.Дата > &ДатаАктуальногоЗаказа
        |";
        
        Если Тип <> "Счет" Тогда
            ТекстЗапроса = ТекстЗапроса +
            "
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |        Док.Номенклатура                КАК Номенклатура,
            |        ВЫРАЗИТЬ (Док.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК НаименованиеПолное,
            |        Док.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
            |        NULL                           как кмест,
            |        Док.Цена                        КАК Цена,
            |        0                                КАК ПроцентСкидкиНаценки,
            |        0                                 КАК ПроцентАвтоматическихСкидок,
            |        NULL                             КАК ХарактеристикаНоменклатуры,
            |        0                                КАК СуммаНДС,
            |        Док.Сумма                       КАК Сумма,
            |        Док.Количество                  КАК Количество,
            |        (3)                             КАК НомерТЧ,
            |        (0)                             КАК ПризнакКорректировка,
            |        Док.НомерСтроки                 КАК НомерСтроки
            |    ИЗ
            |        Документ." + СтруктураАктуальныйЗаказ.ИмяЗаказа + ".ВозвратнаяТара КАК Док
            |
            |    ГДЕ
            |        Док.Ссылка = &АктуальныйЗаказ
            |
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |        Док.Номенклатура            КАК Номенклатура,
            |        ВЫРАЗИТЬ (Док.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК НаименованиеПолное,
            |        Док.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
            //|Док.Номенклатура.ЕдиницаИзмеренияМест           КАК КМест,
            //|        Док.КоличествоМест           КАК КМест,
             |          NULL                    как кмест,
            |        Док.Цена                    КАК Цена,
            |        0                            КАК ПроцентСкидкиНаценки,
            |        0                            КАК ПроцентАвтоматическихСкидок,
            |        NULL                         КАК ХарактеристикаНоменклатуры,
            |        0                            КАК СуммаНДС,
            |        Док.Сумма                   КАК Сумма,
            |        Док.Количество              КАК Количество,
            |        (3)                         КАК НомерТЧ,
            |        (1)                         КАК ПризнакКорректировка,
            // Для корректировок номер строки увеличивается, чтобы добавляемые позиции были последними
            |        (9999 + Док.НомерСтроки)    КАК НомерСтроки
            |    ИЗ
            |        Документ.КорректировкаЗаказаПокупателя.ВозвратнаяТара КАК Док
            |
            |    ГДЕ
            |        Док.Ссылка.ЗаказПокупателя = &ТекущийДокумент
            |        И Док.Ссылка.Проведен      = Истина
            |        И Док.Ссылка.Дата > &ДатаАктуальногоЗаказа
            |";
        КонецЕсли;
        
        ТекстЗапроса = ТекстЗапроса+
        "
        |) КАК ВложенныйЗапрос
        // Добавление в выборку наименования по сертификату.
        |"+?(НаЭкспорт,    "    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |        ПО ВложенныйЗапрос.Номенклатура = ЗначенияСвойствОбъектов.Объект
        |        И (ЗначенияСвойствОбъектов.Свойство = &НаименованиеПоСертификату)", "")+"
        
        |
        |СГРУППИРОВАТЬ ПО
        |    ВложенныйЗапрос.НомерТЧ,
        |    ВложенныйЗапрос.Номенклатура,
                |    ВложенныйЗапрос.ЕдиницаИзмерения,
                |    ВложенныйЗапрос.КоличествоМест,

        |    ВложенныйЗапрос.ПроцентСкидкиНаценки,
        |    ВложенныйЗапрос.ПроцентАвтоматическихСкидок,
        |    ВложенныйЗапрос.ХарактеристикаНоменклатуры,
        |    ВложенныйЗапрос.Цена,
        
        |"+?(НаЭкспорт,"    ВложенныйЗапрос.НаименованиеПолное,
                        |    ЗначенияСвойствОбъектов.Значение",
                        "    ВложенныйЗапрос.НаименованиеПолное")+"
        
        |
        |УПОРЯДОЧИТЬ ПО
        |    ВложенныйЗапрос.НомерТЧ, ПризнакКорректировка, НомерСтроки
        |";
1 KishMish
 
20.09.13
08:48
а у тебя во вложенном запросе нет поля количествомест
2 Kucha88
 
20.09.13
08:51
а поподробней можно просто с такой структурой впервые сталкиваюсь
3 catena
 
20.09.13
08:53
(2)Куда подробнее? Во вложенном запросе нет поля с псевдонимом "КоличествоМест". Только "кмест" есть.
4 KishMish
 
20.09.13
08:53
ВложенныйЗапрос.количествомест как кмест, // это я пытаюсь добавить

и

|       Док.КоличествоМест              как кмест,

ты во вложенном запросе уже обозвал кмест

и теперь дожен обращатся поэтому псевдониму, то есть

ВложенныйЗапрос.кмест как кмест, // это я пытаюсь добавить
5 KishMish
 
20.09.13
08:55
еще +
вложенные запросы не рекомендуются, негативно влияет на быстродейтсвие. перенеси вложенный запрос во временную таблицу, и дебажить проще будет, и работать будет быстрее.
6 Kucha88
 
20.09.13
09:07
сейчас попробую))
7 Kucha88
 
20.09.13
09:08
Выдает такую ошибку Ошибка при вызове метода контекста (Выполнить): {(203, 18)}: Поле не найдено "ВложенныйЗапрос.КоличествоМест" ВложенныйЗапрос.<>КоличествоМест,
8 Kucha88
 
20.09.13
09:10
исправил в группировке, сейчас не стало ругаться но почему то данные не выводятся в ТЧ, может где то не надо ставить NULL в запросе?
9 KishMish
 
20.09.13
09:13
что ты исправил?
тебе строчку из (0)
ВложенныйЗапрос.количествомест как кмест, // это я пытаюсь добавить
надо поменять на
ВложенныйЗапрос.кмест как кмест, // это я пытаюсь добавить
10 Kucha88
 
20.09.13
09:22
(9) дак я так и сделал, и группировку исправил тоже но в ПФ ничего не выводит - пусто
11 KishMish
 
20.09.13
09:29
(8) в объединении запросов, обязательно количество полей одинаковое. и порядок важен. Поэтмоу НУЛЛ нужны как заглушки.

не знаю что у тебя за документы. н советую сделать так.
Открыть текст запроса в конструкторе запросов
перед этим правда убрать эти блоки
|" + ?(Шапка.СуммаВключаетНДС,
единым текстом, отработать его, а потом уже вставлять условия
|" + ?(Шапка.СуммаВключаетНДС,

"вот так вот" (С)Невский
12 Kucha88
 
20.09.13
09:34
(11) Все разобрался в чем проблема была огромное спасибо ВАМ!!!