Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 22:19

Пакетный запрос,объединение

Автор jonik_joker, 12 ноя 2013, 20:28

0 Пользователей и 1 гость просматривают эту тему.

jonik_joker

Всем привет. Помогите разобраться: в документе ЗаявкаНаПоставку есть ТабЧ, которая содержит инфу по счетам (Инвойсам). Соответственно регистрируется это все в регистре накоплений ОборотыДенежныхСредств. Инвойс может быть оплачен (Приход,соот-но нужна СуммаПриход) и неоплачен (Расход,соот-но нужна СуммаРасход). В заявке может быть как оплаченные так и неоплаченные Инвойсы.


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


в результате получаю вот такую таблицу



а хотелось бы вот так


jonik_joker

пробовал ч\з объединить.


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

ОБЪЕДИНИТЬ ВСЕ

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


результат


Добавлено: 12 ноя 2013, 20:32


ч\з пакетный


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

////////////////////////////////////////////////////////////////////////////////

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


результат


Kironten

Что за конфигурация?
И еще, что это за два периода в регистре '18.07.2013' и '08.08.2013' от которых вы хотите избавится?

jonik_joker

8.2,Складской Учет
Эти данные потом в Отчете выводятся,после выполнения запроса идет 2 выборки и эти записи все путают(да и зачем мне 2 раза выводить одну и ту же запись из Регистра прихода и Регистра Расхода).

Kironten

Цитата: jonik_joker от 13 ноя 2013, 11:41
8.2,Складской Учет
Эти данные потом в Отчете выводятся,после выполнения запроса идет 2 выборки и эти записи все путают(да и зачем мне 2 раза выводить одну и ту же запись из Регистра прихода и Регистра Расхода).
Не знаю такой конфигурации "Складской учет."
Т.е. по регистру у вас существуют записи:
Период: 18.07.2013 СуммаРасход: 1621,22
Период: 08.08.2013 СуммаРасход: 12159,17
или же они плодятся в результате связи с данными документа в запросе, и таких записей в регистре нет?
Если первое, тогда по какому критерию вы планируете избавляться от дублирующихся записей (и зачем они вообще попадают в регистр)?
Если второе, то тогда, как в регистр попали эти два периода?

jonik_joker


Добавлено: 13 ноя 2013, 13:10


соответственно в отчете мне нужно вывести

инвойс1 приход1
инвойс2 приход2
инвойс3        расход3

т.к. сумма первых 2-х инвойсов одинакова в приходе и расходе

Kironten

Вообще странно, что у вас хотят видеть суммы приходов, и при этом не хотят видеть были ли по этим инвойсам отгрузки, и одновременно хотят видеть отгрузки, но не оплаченные. А когда пройдет оплата по третьему инвойсу (9040,52), в вашем отчете из строки инвойса должна будет уйти сумма расхода и перейти в приход?

jonik_joker

да
Добавлено: 13 ноя 2013, 13:50


Цитата: Kironten от 13 ноя 2013, 13:36
Вообще странно, что у вас хотят видеть суммы приходов, и при этом не хотят видеть были ли по этим инвойсам отгрузки, и одновременно хотят видеть отгрузки, но не оплаченные.

Вообще это не прихоть заказчика, а моя). После выполнения запроса идет 2 выборки, результатом которых является вывод инвойсов с пометкой "Долг"(если инвойс не оплачен,т.е. запись расход в регистре) и "Долга нет"(если инвойс оплачен,т.е. запись приход в регистре).
Добавлено: 13 ноя 2013, 13:56


как я понял вы предлагаете вариант


Добавлено: 13 ноя 2013, 13:58


в принципе этот вариант имеет место быть. как его можно реализовать?

Kironten

Цитата: jonik_joker от 13 ноя 2013, 13:41
в принципе этот вариант имеет место быть. как его можно реализовать?
Как минимум так. Гонять суммы из колонки в колонку это некорректно. Просто потом делать проверку на заполненность колонки СуммаПриход.
А вот для реализации, надо найти связь между суммами оплаты и отгрузки по инвойсу. В скрине регистра я её не вижу. Посмотрите через документ. Не видя конфигурации затруднительно что-либо советовать.

jonik_joker

Цитата: Kironten от 13 ноя 2013, 14:06
А вот для реализации, надо найти связь между суммами оплаты и отгрузки по инвойсу. В скрине регистра я её не вижу. Посмотрите через документ. Не видя конфигурации затруднительно что-либо советовать.

сам с этим мучаюсь) конфу не я писал и вы не первый кто удивляется ее реализации)
Добавлено: 13 ноя 2013, 14:20


Цитата: Kironten от 13 ноя 2013, 14:06
Как минимум так. Гонять суммы из колонки в колонку это некорректно. Просто потом делать проверку на заполненность колонки СуммаПриход.

немного не понял

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск