Имя: Пароль:
1C
1С v8
Язык запросов - автоматическая группировка данных в скд (как хочу так и делаю...)
0 LAG1cFK1c
 
08.08.21
00:35
Добрый день! В СКД решил сделать небольшой запрос. В результате картина следующая:
Выбираю документы и суммы по ним получаю табличку:
Документ1 10000
Документ2 10000
Документ3 3000

Все верно! Теперь удаляю детализацию по ссылке получаю следующее:
13 000

по какой-то причине сгруппировались 10 000, как вывести заветные 23 000?
1 Rovan
 
гуру
08.08.21
00:40
так и покажи сам запрос а не его словесное примерное описание
2 LAG1cFK1c
 
08.08.21
00:50
(1) ВЫБРАТЬ
    ДоговорыКонтрагентов.Владелец КАК Контрагент,
    ВЫБОР
        КОГДА ЕСТЬNULL(ДоговорыКонтрагентов.СрокОплатыПокупателя, 0) = 0
            ТОГДА 5
        ИНАЧЕ ДоговорыКонтрагентов.СрокОплатыПокупателя
    КОНЕЦ КАК СрокОплатыПокупателя,
    ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка КАК Договор,
    ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство КАК НачислятьПениНаименование,
    ДоговорыКонтрагентовДополнительныеРеквизиты.Значение КАК НачислятьПени,
    NULL КАК ПроцентПениНаименование,
    NULL КАК ПроцентПени
ПОМЕСТИТЬ ДоговорыБезГрупп
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
        ПО (ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка = ДоговорыКонтрагентов.Ссылка)
ГДЕ
    ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
    И ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство.Наименование = "Начислять пени"
    И ДоговорыКонтрагентовДополнительныеРеквизиты.Значение = ИСТИНА

ОБЪЕДИНИТЬ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорыБезГрупп.Контрагент КАК Контрагент,
    ДоговорыБезГрупп.СрокОплатыПокупателя КАК СрокОплатыПокупателя,
    ДоговорыБезГрупп.Договор КАК Договор,
    ДоговорыБезГрупп.НачислятьПениНаименование КАК НачислятьПениНаименование,
    МАКСИМУМ(ДоговорыБезГрупп.НачислятьПени) КАК НачислятьПени,
    ДоговорыБезГрупп.ПроцентПениНаименование КАК ПроцентПениНаименование,
    МАКСИМУМ(ВЫРАЗИТЬ((ВЫРАЗИТЬ(ЕСТЬNULL(ДоговорыБезГрупп.ПроцентПени, 0) КАК ЧИСЛО(10, 3))) / 100 КАК ЧИСЛО(10, 5))) КАК ПроцентПени
ПОМЕСТИТЬ ДоговорНеВсеУсловия
ИЗ
    ДоговорыБезГрупп КАК ДоговорыБезГрупп

СГРУППИРОВАТЬ ПО
    ДоговорыБезГрупп.Договор,
    ДоговорыБезГрупп.Контрагент,
    ДоговорыБезГрупп.НачислятьПениНаименование,
    ДоговорыБезГрупп.ПроцентПениНаименование,
    ДоговорыБезГрупп.СрокОплатыПокупателя
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДоговорНеВсеУсловия.Контрагент КАК Контрагент,
    ДоговорНеВсеУсловия.СрокОплатыПокупателя КАК СрокОплатыПокупателя,
    ДоговорНеВсеУсловия.Договор КАК Договор,
    ДоговорНеВсеУсловия.НачислятьПени КАК НачислятьПени,
    ДоговорНеВсеУсловия.ПроцентПени КАК ПроцентПени
ПОМЕСТИТЬ ДокументВыбор
ИЗ
    ДоговорНеВсеУсловия КАК ДоговорНеВсеУсловия
ГДЕ
    ДоговорНеВсеУсловия.ПроцентПени <> 0
    И ДоговорНеВсеУсловия.НачислятьПени = ИСТИНА
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПоступлениеНаСчет.Проведен КАК Проведен,
    ПоступлениеНаСчетРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа,
    ВЫБОР
        КОГДА ПоступлениеНаСчетРасшифровкаПлатежа.СчетНаОплату = НЕОПРЕДЕЛЕНО
            ТОГДА ПоступлениеНаСчет.ДокументОснование
        ИНАЧЕ ПоступлениеНаСчетРасшифровкаПлатежа.СчетНаОплату
    КОНЕЦ КАК СчетНаОплату,
    ПоступлениеНаСчет.ДокументОснование КАК ДокументОснование,
    ПоступлениеНаСчет.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВРПоступлениеНаСчет
ИЗ
    Документ.ПоступлениеНаСчет КАК ПоступлениеНаСчет
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеНаСчет.РасшифровкаПлатежа КАК ПоступлениеНаСчетРасшифровкаПлатежа
        ПО (ПоступлениеНаСчетРасшифровкаПлатежа.Ссылка = ПоступлениеНаСчет.Ссылка)
ГДЕ
    ПоступлениеНаСчет.Проведен = ИСТИНА
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПоступлениеВКассу.Проведен КАК Проведен,
    ПоступлениеВКассуРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа,
    ВЫБОР
        КОГДА ПоступлениеВКассуРасшифровкаПлатежа.СчетНаОплату = НЕОПРЕДЕЛЕНО
            ТОГДА ПоступлениеВКассу.ДокументОснование
        ИНАЧЕ ПоступлениеВКассуРасшифровкаПлатежа.СчетНаОплату
    КОНЕЦ КАК СчетНаОплату,
    ПоступлениеВКассу.ДокументОснование КАК ДокументОснование,
    ПоступлениеВКассу.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВРПоступлениеВКассу
ИЗ
    Документ.ПоступлениеВКассу КАК ПоступлениеВКассу
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеВКассу.РасшифровкаПлатежа КАК ПоступлениеВКассуРасшифровкаПлатежа
        ПО (ПоступлениеВКассуРасшифровкаПлатежа.Ссылка = ПоступлениеВКассу.Ссылка)
ГДЕ
    ПоступлениеВКассу.Проведен = ИСТИНА
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НужныеСчетНаОплату.Договор КАК Договор,
    НужныеСчетНаОплату.Контрагент КАК Контрагент,
    НужныеСчетНаОплату.СчетНаОплату КАК СчетНаОплату,
    ЕСТЬNULL(ВРПоступлениеНаСчет.СуммаПлатежа, 0) КАК СуммаПоступлениеНаСчет,
    NULL КАК СуммаПоступлениеВКассу,
    НужныеСчетНаОплату.СчетНаОплату.СуммаДокумента КАК СчетНаОплатуСуммаДокумента,
    ВРПоступлениеНаСчет.Ссылка КАК ПоступлениеНаСчет,
    NULL КАК ПоступлениеВКассу
ПОМЕСТИТЬ ОбъедПоступ
ИЗ
    НужныеСчетНаОплату КАК НужныеСчетНаОплату
        ЛЕВОЕ СОЕДИНЕНИЕ ВРПоступлениеНаСчет КАК ВРПоступлениеНаСчет
        ПО НужныеСчетНаОплату.СчетНаОплату = ВРПоступлениеНаСчет.СчетНаОплату

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

ВЫБРАТЬ
    НужныеСчетНаОплату.Договор,
    НужныеСчетНаОплату.Контрагент,
    НужныеСчетНаОплату.СчетНаОплату,
    NULL,
    ЕСТЬNULL(ВРПоступлениеВКассу.СуммаПлатежа, 0),
    НужныеСчетНаОплату.СчетНаОплату.СуммаДокумента,
    NULL,
    ВРПоступлениеВКассу.Ссылка
ИЗ
    НужныеСчетНаОплату КАК НужныеСчетНаОплату
        ЛЕВОЕ СОЕДИНЕНИЕ ВРПоступлениеВКассу КАК ВРПоступлениеВКассу
        ПО НужныеСчетНаОплату.СчетНаОплату = ВРПоступлениеВКассу.СчетНаОплату
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОбъедПоступ.Договор КАК Договор,
    ОбъедПоступ.Контрагент КАК Контрагент,
    ОбъедПоступ.СчетНаОплату КАК СчетНаОплату,
    ЕСТЬNULL(ОбъедПоступ.СуммаПоступлениеНаСчет, 0) + ЕСТЬNULL(ОбъедПоступ.СуммаПоступлениеВКассу, 0) КАК Поступление,
    ОбъедПоступ.СчетНаОплатуСуммаДокумента КАК СчетНаОплатуСуммаДокумента,
    ОбъедПоступ.ПоступлениеНаСчет КАК ПоступлениеНаСчет,
    ОбъедПоступ.ПоступлениеВКассу КАК ПоступлениеВКассу
ИЗ
    ОбъедПоступ КАК ОбъедПоступ

СГРУППИРОВАТЬ ПО
    ОбъедПоступ.Договор,
    ОбъедПоступ.Контрагент,
    ОбъедПоступ.СчетНаОплату,
    ОбъедПоступ.ПоступлениеНаСчет,
    ОбъедПоступ.ПоступлениеВКассу,
    ЕСТЬNULL(ОбъедПоступ.СуммаПоступлениеНаСчет, 0) + ЕСТЬNULL(ОбъедПоступ.СуммаПоступлениеВКассу, 0),
    ОбъедПоступ.СчетНаОплатуСуммаДокумента
3 Ёпрст
 
гуру
08.08.21
01:25
(2) функция Сумма(), там где группировать. И не благодари
4 LAG1cFK1c
 
08.08.21
01:50
Спасибо!
5 LAG1cFK1c
 
08.08.21
01:51
(3) Спасибо!
6 ДенисЧ
 
08.08.21
05:00
(5) Тебя просили не благодарить, а ты (((
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший