8.х Обьеденить запрос

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем PumbaNirvana, 16 сен 2009.

  1. TopicStarter Overlay
    PumbaNirvana
    Offline

    PumbaNirvana

    Регистрация:
    25 авг 2009
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    Люди, подскажите.
    Есть два запроса:

    Запрос.Текст = "ВЫБРАТЬ
    |Продажи.Контрагент КАК Контрагент,
    |Сумма(Продажи.Стоимость) КАК Стоимость
    |ИЗ
    |РегистрНакопления.Продажи КАК Продажи
    |ГДЕ
    |Продажи.Период МЕЖДУ &ДатаС И &ДатаПо
    |СГРУППИРОВАТЬ ПО Контрагент
    |АвтоУпорядочивание";

    ЗапросВоз.Текст = "ВЫБРАТЬ
    | ВозвратТоваровОтПокупателя.Контрагент КАК Контрагент,
    | Сумма(ВозвратТоваровОтПокупателя.СуммаДокумента) КАК СуммаДокумента
    |ИЗ
    | Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
    |ГДЕ
    | ВозвратТоваровОтПокупателя.Товары.Ссылка.Дата МЕЖДУ &ДатаС И &ДатаПо И
    | ВозвратТоваровОтПокупателя.Комментарий ПОДОБНО ""%брак%"" И
    | ВозвратТоваровОтПокупателя.Товары.Ссылка.ПРОВЕДЕН=ИСТИНА
    |СГРУППИРОВАТЬ ПО Контрагент, СуммаДокумента
    |АвтоУпорядочивание";

    Нуно их обьеденить, но обьеденить так, что бы в отчет попали не только одинаковые контрагенты, а так же контрагенты которых нет в первом запросе(но они есть во втором) соответственно и наоборот.
    Уже третий день бьюсь, бошку сломал.

    Спасибо за помощь.
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!

    Объединить результаты запроса Вы можете вот так вот


    Код:
    Функция ПолучитьРезультатЗапроса_Pumba()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    Продажи.Контрагент,
    |    СУММА(Продажи.Стоимость) КАК Стоимость
    |ИЗ
    |    РегистрНакопления.Продажи КАК Продажи
    |ГДЕ
    |    Продажи.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
    |
    |СГРУППИРОВАТЬ ПО
    |    Продажи.Контрагент
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ВозвратТоваровОтПокупателя.Контрагент,
    |    ВозвратТоваровОтПокупателя.СуммаДокумента
    |ИЗ
    |    Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
    |ГДЕ
    |    ВозвратТоваровОтПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    |    И ВозвратТоваровОтПокупателя.Комментарий ПОДОБНО &Комментарий
    |    И ВозвратТоваровОтПокупателя.Проведен = ИСТИНА
    |АВТОУПОРЯДОЧИВАНИЕ";
    //Параметры запроса
    Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);// Дата
    Запрос.УстановитьПараметр("ДатаОкончания",ДатаОкончания);// Дата
    Запрос.УстановитьПараметр("Комментарий","");// Строка
    Результат = Запрос.Выполнить();
    
    Возврат Результат;
    
    КонецФункции //ПолучитьРезультатЗапроса_Pumba
    
    Результат будет следующим:

    Контрагент Стоимость
    1. Контрагент1 100
    2. Контрагент1 1584,50

    1 запись - Это результат первого запроса (Продажа)
    2 запись - Это результа второго запроса (Возврата)

    Однако стоит понимать что у регистра продажа регистратором является и документ Реализация и документ ВозвратПокупателю, взвязи с чем было продано 1684,50 за минусов возврата в 100руб. итого 1584,5 руб, вот.
    И первый и второй вопрос вернули в качестве параметра различные данные, но в единый параметр стоимость.
    Если Вам нужно отследить только отгрузку, без возврата, тогда сделайте так.


    Код:
    Функция ПолучитьРезультатЗапроса_Pumba()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    Продажи.Контрагент,
    |    СУММА(Продажи.Стоимость) КАК Стоимость
    |ИЗ
    |    РегистрНакопления.Продажи КАК Продажи
    |ГДЕ
    |    Продажи.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
    |    И Продажи.Регистратор = (ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг))
    |
    |СГРУППИРОВАТЬ ПО
    |    Продажи.Контрагент
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ВозвратТоваровОтПокупателя.Контрагент,
    |    ВозвратТоваровОтПокупателя.СуммаДокумента
    |ИЗ
    |    Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
    |ГДЕ
    |    ВозвратТоваровОтПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    |    И ВозвратТоваровОтПокупателя.Комментарий ПОДОБНО &Комментарий
    |    И ВозвратТоваровОтПокупателя.Проведен = ИСТИНА
    |АВТОУПОРЯДОЧИВАНИЕ";
    //Параметры запроса
    Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);// Дата
    Запрос.УстановитьПараметр("ДатаОкончания",ДатаОкончания);// Дата
    Запрос.УстановитьПараметр("Комментарий","");// Строка
    Результат = Запрос.Выполнить();
    
    Возврат Результат;
    
    КонецФункции //ПолучитьРезультатЗапроса_Pumba
    
    

    Надеюсь помог :unsure: , и удачи!!!!
  3. TopicStarter Overlay
    PumbaNirvana
    Offline

    PumbaNirvana

    Регистрация:
    25 авг 2009
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    Первый вариант просто класс! Но можно сделать так, чтоба разбивалось по следующим столбцам:
    Например:

    Контрагент | Стоимость | СуммаДокумента

    Магазин-1 200 100
    Магазин-1 0 500
    Магазин-3 500 0


    ....ну и так далее. Формирует в один столбец, а разделить моно?
  4. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    можно. Главное чтобы полученные данные не противоречили заданию :)

    Код:
    ВЫБРАТЬ
    ВложенныйЗапрос.Контрагента,
    СУММА(ВложенныйЗапрос.Стоимость) КАК Стоимость,
    СУММА(ВложенныйЗапрос.Сумма) КАК Сумма
    ИЗ
    (ВЫБРАТЬ
    Продажи.Контрагент КАК Контрагент,
    СУММА(Продажи.Стоимость) КАК Стоимость,
    0 КАК Сумма
    ИЗ
    РегистрНакопления.Продажи КАК Продажи
    ГДЕ
    Продажи.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
    
    СГРУППИРОВАТЬ ПО
    Продажи.Контрагент
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
    ВозвратТоваровОтПокупателя.Контрагент,
    0,
    ВозвратТоваровОтПокупателя.СуммаДокумента
    ИЗ
    Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
    ГДЕ
    ВозвратТоваровОтПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    И ВозвратТоваровОтПокупателя.Комментарий ПОДОБНО &Комментарий
    И ВозвратТоваровОтПокупателя.Проведен = ИСТИНА) КАК ВложенныйЗапрос
    
    СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Контрагент
    АВТОУПОРЯДОЧИВАНИЕ
    
    
  5. TopicStarter Overlay
    PumbaNirvana
    Offline

    PumbaNirvana

    Регистрация:
    25 авг 2009
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    Пишет,
    Поле не найдено "ВложенныйЗапрос.Контрагента"
    ВложенныйЗапрос.<<?>>Контрагента,
  6. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    букву а в конце убери :)
  7. TopicStarter Overlay
    PumbaNirvana
    Offline

    PumbaNirvana

    Регистрация:
    25 авг 2009
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    гы, убрал уже, извинтиляюсь, толком не глянул

    Парни, всем большое спасибо за помощь! :unsure:
    Сам бы пока доделал этот отчет, ежика быстрее родил.

Поделиться этой страницей