Имя: Пароль:
1C
 
БП3: запрос к бух.регистрам
0 dft2014
 
25.09.19
17:05
Бухгалтерия3

Документ "Реализация товаров и услуг" делает следующие проводки:
1) Дт90.02 - Кт41
2) Дт62.01 - Кт90.01.1 (50000 руб)
3) Дт90.03 - Кт68.02 (8333,33 руб)

Мне надо вытянуть в отчет суммы из проводки2 и проводки3, а также разницу сумм между проводки2 и проводки3. Давно не занималась запросами к бух.регистрам, поэтому пока получилось вытянуть сумму только из проводки2 (код ниже). А вот как в одном запросе вытянуть еще сумму из проводки3 и разницу (проводка2 минус проводка3)?



ВЫБРАТЬ
    ХозрасчетныйОбороты.Счет КАК Счет,
    ХозрасчетныйОбороты.КорСчет КАК КорСчет,
    ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
    ХозрасчетныйОбороты.Субконто3 КАК Документ,
    ХозрасчетныйОбороты.КорСубконто3 КАК Товар,
    ХозрасчетныйОбороты.Субконто3.Дата КАК ДатаДокумента
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&Дата1, &Дата2, Регистратор, Счет = &Счет6201, , , КорСчет В (&КоррСчет90011), ) КАК ХозрасчетныйОбороты
ГДЕ
    ХозрасчетныйОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    И ХозрасчетныйОбороты.КорСубконто1 = &КорСубконто1
1 Ёпрст
 
25.09.19
17:10
объединить все и еще запрос на другую пару счетов
2 Консультант Баранов
 
25.09.19
17:16
Какие разрезы аналитики нужны? Номенклатура, Документ (документ рассчетов или достаточно региатратор)
3 Консультант Баранов
 
25.09.19
17:37
Как то так


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

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

СГРУППИРОВАТЬ ПО
    Хозрасчетный.Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втВыручка.Регистратор КАК Регистратор,
    СУММА(втВыручка.СуммаОборотДт) КАК СуммаОборотДт
ПОМЕСТИТЬ втБазаВыручки
ИЗ
    втВыручка КАК втВыручка

СГРУППИРОВАТЬ ПО
    втВыручка.Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    взСтрМаксСуммой.Регистратор КАК Регистратор,
    взСтрМаксСуммой.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ втСтрМаксСуммой
ИЗ
    (ВЫБРАТЬ
        втВыручка.Регистратор КАК Регистратор,
        МИНИМУМ(втВыручка.НомерСтроки) КАК НомерСтроки
    ИЗ
        (ВЫБРАТЬ
            МАКСИМУМ(втВыручка.СуммаОборотДт) КАК СуммаОборотДт,
            втВыручка.Регистратор КАК Регистратор
        ИЗ
            втВыручка КАК втВыручка
        
        СГРУППИРОВАТЬ ПО
            втВыручка.Регистратор) КАК взСтрМаксСумма
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ втВыручка КАК втВыручка
            ПО взСтрМаксСумма.Регистратор = втВыручка.Регистратор
                И взСтрМаксСумма.СуммаОборотДт = втВыручка.СуммаОборотДт
    
    СГРУППИРОВАТЬ ПО
        втВыручка.Регистратор) КАК взСтрМаксСуммой
;

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    взРезульт.Счет КАК Счет,
    взРезульт.КорСчет КАК КорСчет,
    взРезульт.СуммаОборотДт КАК СуммаОборотДт,
    взРезульт.Документ КАК Документ,
    взРезульт.Товар КАК Товар,
    взРезульт.ДатаДокумента КАК ДатаДокумента,
    взРезульт.СуммаНДС КАК СуммаНДС
ИЗ
    (ВЫБРАТЬ
        ВложенныйЗапрос.Счет КАК Счет,
        ВложенныйЗапрос.КорСчет КАК КорСчет,
        СУММА(ВложенныйЗапрос.СуммаОборотДт) КАК СуммаОборотДт,
        ВложенныйЗапрос.Документ КАК Документ,
        ВложенныйЗапрос.Товар КАК Товар,
        ВложенныйЗапрос.ДатаДокумента КАК ДатаДокумента,
        СУММА(ВложенныйЗапрос.СуммаНДС) КАК СуммаНДС
    ИЗ
        (ВЫБРАТЬ
            втРаспределнНДС.Счет КАК Счет,
            втРаспределнНДС.КорСчет КАК КорСчет,
            втРаспределнНДС.СуммаОборотДт КАК СуммаОборотДт,
            втРаспределнНДС.Документ КАК Документ,
            втРаспределнНДС.Товар КАК Товар,
            втРаспределнНДС.ДатаДокумента КАК ДатаДокумента,
            втРаспределнНДС.СуммаНДС КАК СуммаНДС
        ИЗ
            втРаспределнНДС КАК втРаспределнНДС
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            втВыручка.Счет,
            втВыручка.КорСчет,
            0,
            втВыручка.Документ,
            втВыручка.Товар,
            втВыручка.ДатаДокумента,
            втОтклонениеРаспределенияНДС.ОтклонениеНДС
        ИЗ
            втСтрМаксСуммой КАК втСтрМаксСуммой
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ втВыручка КАК втВыручка
                ПО втСтрМаксСуммой.Регистратор = втВыручка.Регистратор
                    И втСтрМаксСуммой.НомерСтроки = втВыручка.НомерСтроки
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ втОтклонениеРаспределенияНДС КАК втОтклонениеРаспределенияНДС
                ПО втСтрМаксСуммой.Регистратор = втОтклонениеРаспределенияНДС.Регистратор) КАК ВложенныйЗапрос
    
    СГРУППИРОВАТЬ ПО
        ВложенныйЗапрос.Счет,
        ВложенныйЗапрос.КорСчет,
        ВложенныйЗапрос.Документ,
        ВложенныйЗапрос.Товар,
        ВложенныйЗапрос.ДатаДокумента) КАК взРезульт
4 dft2014
 
27.09.19
19:45
Ниже код, посмотрите пож-та, в чем ошибка? Почему он ничего не возвращает (пустой)? Хотя в консоли данные собираются.


ЗапросРасход = Новый Запрос;
    ЗапросРасход.Текст =
    "ВЫБРАТЬ
    |    ХозрасчетныйОбороты.Счет КАК Счет,
    |    ХозрасчетныйОбороты.КорСчет КАК КорСчет,
    |    ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаРасход,
    |    ХозрасчетныйОбороты.Субконто3 КАК ДокументРасход,
    |    ХозрасчетныйОбороты.КорСубконто3 КАК НоменклатураРасход,
    |    ХозрасчетныйОбороты.Субконто3.Дата КАК ДатаРасход,
    |    ХозрасчетныйОбороты.Регистратор КАК Регистратор,
    |    ХозрасчетныйОбороты.НомерСтроки КАК НомерСтроки
    |ПОМЕСТИТЬ втВыручка
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Обороты(&Дата1, &Дата2, Запись, Счет = &Счет6201, , , КорСчет В (&КоррСчет90011), ) КАК ХозрасчетныйОбороты
    |ГДЕ
    |    ХозрасчетныйОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    |    И ХозрасчетныйОбороты.КорСубконто1 = &КорСубконто1
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Хозрасчетный.Регистратор КАК Регистратор,
    |    СУММА(Хозрасчетный.Сумма) КАК СуммаНДС
    |ПОМЕСТИТЬ втНДС
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |    Хозрасчетный.Регистратор В
    |            (ВЫБРАТЬ
    |                втВыручка.Регистратор КАК Регистратор
    |            ИЗ
    |                втВыручка КАК втВыручка)
    |    И Хозрасчетный.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_НДС)
    |
    |СГРУППИРОВАТЬ ПО
    |    Хозрасчетный.Регистратор
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    втВыручка.ДатаРасход КАК ДатаРасход,
    |    втВыручка.НоменклатураРасход КАК НоменклатураРасход,
    |    втВыручка.СуммаРасход КАК СуммаРасход,
    |    втНДС.СуммаНДС КАК СуммаНДС,
    |    втВыручка.СуммаРасход - втНДС.СуммаНДС КАК ВыручкаБезНДС
    |ИЗ
    |    втВыручка КАК втВыручка,
    |    втНДС КАК втНДС";
    
    ЗапросРасход.УстановитьПараметр("Дата1", Новый Граница(НачалоДня(Отчет.НаДату), ВидГраницы.Включая));
    ЗапросРасход.УстановитьПараметр("Дата2", Новый Граница(КонецДня(Отчет.НаДату2), ВидГраницы.Включая));
    ЗапросРасход.УстановитьПараметр("Счет6201", ПланыСчетов.Хозрасчетный.РасчетыСПокупателями);
    ЗапросРасход.УстановитьПараметр("КоррСчет90011", ПланыСчетов.Хозрасчетный.ВыручкаНеЕНВД);
    ЗапросРасход.УстановитьПараметр("КорСубконто1", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы);
5 dft2014
 
27.09.19
19:56
Мне кажется я нашла ошибку в (4): я не передаю конкретную номенклатурную группу, а в консоли запросов указываю конкретную номенклатурную группу! Подскажите, как тогда правильно написать параметр запроса, чтобы передать конкретную номенклатурную группу:

ЗапросРасход.УстановитьПараметр("КорСубконто1", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы);
6 dft2014
 
27.09.19
20:07
+(5) С параметром разобралась, исправила на:
ЗапросРасход.УстановитьПараметр("КорСубконто1", Справочники.НоменклатурныеГруппы.НайтиПоКоду("БУ-000001"));

Но вот данные почему-то выгружаются по нескольку раз! Как это побороть?
7 dft2014
 
27.09.19
20:12
+(6) Т.е. в запросе должно получиться 14 записей, а выводится 196 записей. Т.е. 14раз выводится каждая строчка...
8 hhhh
 
27.09.19
20:19
(7) это что за хрень?

    |ИЗ
    |    втВыручка КАК втВыручка,
    |    втНДС КАК втНДС";

умножение двух таблиц?
9 dft2014
 
27.09.19
20:21
(8) Это я получаю проводку по НДС. В (0) это проводка Дт90.03 - Кт68.02
10 dft2014
 
27.09.19
20:23
+(9) А как иначе получить одним запросом проводки с суммами из документа, если документ делает сразу три проводки, а мне нужно две из них.
11 dft2014
 
27.09.19
20:36
Вобщем добавила связь по регистратору в итоговом запросе, вроде стало выгружаться верно:


ЗапросРасход = Новый Запрос;
    ЗапросРасход.Текст =
    "ВЫБРАТЬ
    |    ХозрасчетныйОбороты.Счет КАК Счет,
    |    ХозрасчетныйОбороты.КорСчет КАК КорСчет,
    |    ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаРасход,
    |    ХозрасчетныйОбороты.Субконто3 КАК ДокументРасход,
    |    ХозрасчетныйОбороты.КорСубконто3 КАК НоменклатураРасход,
    |    ХозрасчетныйОбороты.Субконто3.Дата КАК ДатаРасход,
    |    ХозрасчетныйОбороты.Регистратор КАК Регистратор,
    |    ХозрасчетныйОбороты.НомерСтроки КАК НомерСтроки
    |ПОМЕСТИТЬ втВыручка
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Обороты(&Дата1, &Дата2, Запись, Счет = &Счет6201, , , КорСчет В (&КоррСчет90011), ) КАК ХозрасчетныйОбороты
    |ГДЕ
    |    ХозрасчетныйОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    |    И ХозрасчетныйОбороты.КорСубконто1 = &КорСубконто1
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Хозрасчетный.Регистратор КАК Регистратор,
    |    СУММА(Хозрасчетный.Сумма) КАК СуммаНДС
    |ПОМЕСТИТЬ втНДС
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |    Хозрасчетный.Регистратор В
    |            (ВЫБРАТЬ
    |                втВыручка.Регистратор КАК Регистратор
    |            ИЗ
    |                втВыручка КАК втВыручка)
    |    И Хозрасчетный.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_НДС)
    |
    |СГРУППИРОВАТЬ ПО
    |    Хозрасчетный.Регистратор
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    втВыручка.ДатаРасход КАК ДатаРасход,
    |    втВыручка.НоменклатураРасход КАК НоменклатураРасход,
    |    втВыручка.СуммаРасход КАК СуммаРасход,
    |    втНДС.СуммаНДС КАК СуммаНДС,
    |    втВыручка.СуммаРасход - втНДС.СуммаНДС КАК ВыручкаБезНДС
    |ИЗ
    |    втВыручка КАК втВыручка
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втНДС КАК втНДС
    |        ПО втВыручка.Регистратор = втНДС.Регистратор";
12 ribuh
 
27.09.19
21:15
Вообще когда получили сумму по проводке два, разнице между ней и третьей проводкой можно было увидеть как разность Сумма и СуммаНУКт - В БУ выручка с НДС, в НУ по Кт 90.01 Сумма без НДС, и эта разница как раз и есть НДС по Дт 90.03 - т.е. третья проводка...
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.