Имя: Пароль:
1C
1С v8
помогите из двух запросов сделать один (вложенные запросы)
0 MrZLO
 
04.05.12
09:29
Здрасте!

1С 8.1 УТ 10.3 тюненная

Вообщем, есть документ заказ покупателя, там есть поле "реализовано", оно при определенных действиях все время пересчитывается... Чтобы получить значение для поля "реализовано" применяется ниженаписанная функция. Реализовывается товар через Документ Реализация Товаров и Услуг, у которого есть реквизит я_ДокументОснование, он есть ссылка на заказ покупателя.

Функция ПолучитьРеализованоПоКоду(Код)
   
   Реализовано = 0;
   
   Запрос = Новый Запрос;
   
   Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);
   Запрос.УстановитьПараметр("ПустаяСсылка", Документы.ЗаказПокупателя.ПустаяСсылка());
   Запрос.УстановитьПараметр("Код", Код);

   Запрос.Текст =
   "ВЫБРАТЬ
   |    РеализацияТоваровУслугТовары.Номенклатура,
   |    СУММА(ЕСТЬNULL(РеализацияТоваровУслугТовары.Количество, 0)) КАК Реализовано
   |ИЗ
   |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
   |ГДЕ
   |    РеализацияТоваровУслугТовары.Ссылка.я_ДокументОснование = &Ссылка
   |    И РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
   |    И РеализацияТоваровУслугТовары.Ссылка.я_ДокументОснование <> &ПустаяСсылка
   |    И РеализацияТоваровУслугТовары.Номенклатура.Код = &Код
   |
   |СГРУППИРОВАТЬ ПО
   |    РеализацияТоваровУслугТовары.Номенклатура";        
       
   РезультатЗапроса = Запрос.Выполнить();
   
   Если НЕ РезультатЗапроса.Пустой() Тогда
       
       Реализовано = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Реализовано")[0];
       
   КонецЕсли;
   
   Возврат Реализовано;
   
КонецФункции

Внешней обработкой сделал новый вид счета, с колонкой реализовано.
При заполнении макета нового счета используется Функция ПолучитьПараметрыПечатиСчетаДляСайта(Тип)

в ней есть запрос...

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


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

я в MySQL умею JOIN-ы использовать, но тут пока не уловил синтаксиса...
3 MrZLO
 
05.05.12
13:28
сделал через конструктор запросов :)
4 Alex_MA
 
05.05.12
13:29
временные таблицы, пакетный запрос
5 Alex_MA
 
05.05.12
13:29
перепиши запрос используя временные таблицы
6 MrZLO
 
05.05.12
13:30
я сделал как вложенный1 и через левое объединение
7 Alex_MA
 
05.05.12
13:55
ВЫБРАТЬ
   |        ЗаказПокупателя.Номенклатура,
   |        ЗаказПокупателя.ЕдиницаИзмерения,
   |        ЗаказПокупателя.ПроцентСкидкиНаценки        КАК ПроцентСкидкиНаценки,
   |        ЗаказПокупателя.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
   |        ЗаказПокупателя.Цена                        КАК Цена,
   |        Заказпокупателя.Срок,
   |        СУММА(ЗаказПокупателя.Количество)           КАК Количество,
   |        СУММА(ЗаказПокупателя.Сумма     )           КАК Сумма,
   |        СУММА(ЗаказПокупателя.СуммаНДС  )           КАК СуммаНДС,
   |        ЗаказПокупателя.ХарактеристикаНоменклатуры  КАК Характеристика,
   |        МИНИМУМ(ЗаказПокупателя.НомерСтроки)        КАК НомерСтроки,
   |        0                                           КАК Метка,
   |        ЗаказПокупателя.Собрано                КАК Собрано
   |ПОМЕСТИТЬ ВложенныйЗапрос
   |    ИЗ
   |        Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателя
   |    ГДЕ
   |        ЗаказПокупателя.Ссылка = &ТекущийДокумент
   |    СГРУППИРОВАТЬ ПО
   |        ЗаказПокупателя.Номенклатура,
   |        ЗаказПокупателя.ЕдиницаИзмерения,
   |        ЗаказПокупателя.ПроцентСкидкиНаценки,
   |        ЗаказПокупателя.ПроцентАвтоматическихСкидок,
   |        ЗаказПокупателя.Цена,
   |        Заказпокупателя.Срок,
   |        ЗаказПокупателя.ХарактеристикаНоменклатуры,
   |        ЗаказПокупателя.Собрано
8 Alex_MA
 
05.05.12
13:58
запрос из (7) используйте в (2) и у вас не будет вложенного запроса.
Как говориться, лучше день потерять...