Имя: Пароль:
1C
1С v8
Помогите построить запрос правильно
,
0 live in sky dreams
 
09.12.14
15:53
Есть некий запрос:

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

Это для примера.
На самом деле такой запрос будет выдавать жиденькую кашицу.

Затык состоит в том, что у каждого счета из &МассивСчетов свой порядок субконто.
И, если у одного счета Субконто1 - это может быть СтатьяДДС, то у другого счета Субконто1 - это может быть НоменклатурнаяГруппа.

В рамках данной задачи у вссех счетов из массива одинаковый набор субконто, но в разном порядке.
То есть у каждого счета гарантированно есть


Субконто ВидСубконто1;
Субконто ВидСубконто2;
Субконто ВидСубконто3;

Но у каждого счета порядок разный, и если у счета хх1 порядок такой:
Субконто1 ВидСубконто1;
Субконто2 ВидСубконто2;
Субконто3 ВидСубконто3;

То у счета хх2 порядок может быть таким:
Субконто1 ВидСубконто3;
Субконто2 ВидСубконто1;
Субконто3 ВидСубконто2;

То есть в том виде, в котором представлен запрос группировать по "Источник.Субконто1" например, не имеет смысла.
Как сгруппировать результат корректно?
Например чтобы сперва гла группировка по НоменклатурнымГруппам, затем по СтатьямЗатрат, а только потом по Номенклатуре, а не так как сейчас - сперва по субконто1, потом по субконто2 а потом по субконто 3
1 mikecool
 
09.12.14
15:58
группировать по ТипЗначения
2 elCust
 
09.12.14
16:00
Добавить Выбор Когда...Тогда
3 live in sky dreams
 
09.12.14
16:01
(1)Не совсем понял, это как?
4 spiller26
 
09.12.14
16:02
(0) как вариант, несколько ВТ по счетам, у которых Субконто одинаковые, затем объединить таблицы
5 live in sky dreams
 
09.12.14
16:04
(2) тоже не понял как.
6 live in sky dreams
 
09.12.14
16:09
Что то вроде этого?

ВЫБРАТЬ
    ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(Источник.Субконто1) = ТИП(ПВХ.ВидыСубконтоХозрасч.СтатьиДДС) ТОГДА Источник.Субконто1
        ИНАЧЕ КОГДА ТИПЗНАЧЕНИЯ(Источник.Субконто2) = ТИП(ПВХ.ВидыСубконтоХозрасч.СтатьиДДС) ТОГДА Источник.Субконто2
        ИНАЧЕ КОГДА ТИПЗНАЧЕНИЯ(Источник.Субконто3) = ТИП(ПВХ.ВидыСубконтоХозрасч.СтатьиДДС) ТОГДА Источник.Субконто3
    КОНЕЦ КАК СтатьяДДС
    ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(Источник.Субконто1) = ТИП(ПВХ.ВидыСубконтоХозрасч.НоменклатурныеГруппы) ТОГДА Источник.Субконто1
        ИНАЧЕ КОГДА ТИПЗНАЧЕНИЯ(Источник.Субконто2) = ТИП(ПВХ.ВидыСубконтоХозрасч.НоменклатурныеГруппы) ТОГДА Источник.Субконто2
        ИНАЧЕ КОГДА ТИПЗНАЧЕНИЯ(Источник.Субконто3) = ТИП(ПВХ.ВидыСубконтоХозрасч.НоменклатурныеГруппы) ТОГДА Источник.Субконто3
    КОНЕЦ КАК НоменклатурныеГруппы
    ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(Источник.Субконто1) = ТИП(ПВХ.ВидыСубконтоХозрасч.Номенклатура) ТОГДА Источник.Субконто1
        ИНАЧЕ КОГДА ТИПЗНАЧЕНИЯ(Источник.Субконто2) = ТИП(ПВХ.ВидыСубконтоХозрасч.Номенклатура) ТОГДА Источник.Субконто2
        ИНАЧЕ КОГДА ТИПЗНАЧЕНИЯ(Источник.Субконто3) = ТИП(ПВХ.ВидыСубконтоХозрасч.Номенклатура) ТОГДА Источник.Субконто3
    КОНЕЦ КАК Номенклатура

ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(ПараметрыВТ,...Счет В (&МассивСчетов)) КАК Источник
СГРУППИРОВАТЬ ПО
    НоменклатурнаяГруппа
    СтатьяДДС
    Номенклатура
7 lobo
 
09.12.14
16:22
у виртуальной таблицы есть параметр Субконто типа массив.Например
РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет = &СчетОНА, &МассивСубконто, Организация = &Организация) КАК ХозрасчетныйОстатки
МассивСубконто = Новый Массив(2); - его заполнить своими субконто
  У всех счетов будут выбираться в том порядке, в котором определены в массиве вне зависимости от того, в каком порядке они в плане счетов
8 piter3
 
09.12.14
16:23
а сборный текст не лучше ли
9 Defender aka LINN
 
09.12.14
16:46
Из 6-х одинэснегов только один знает хоть что-то про систему, в которой работает. Way to go!
10 Garykom
 
гуру
09.12.14
16:50
(9) (( моя бы объединениями решать стала (( совсем нифига не знаю
11 vicof
 
09.12.14
16:51
(7) +1
12 live in sky dreams
 
09.12.14
20:42
(7) здорово, но я не совсем понимаю как тогда будет выглядеть текст запроса... :(
13 live in sky dreams
 
10.12.14
07:03
Прошу помогите с запросом. Не могу понять как сделать.
Вот набросал для примера простенький запросец. Работает для одного счета. Как его изменить чтобы порядок субконто не играл роли?

|ВЫБРАТЬ
        |    ОсновноеПроизводство.Субконто2 КАК СтатьяЗатрат,
        |    ОсновноеПроизводство.Субконто1 КАК НоменклатурнаяГруппа,
        |    ОсновноеПроизводство.Организация КАК Организация,
        |    СУММА(ОсновноеПроизводство.СуммаОборот) КАК Сумма,
        |    СУММА(ОсновноеПроизводство.КоличествоОборот) КАК Количество,
        |    ОсновноеПроизводство.Организация.Наименование КАК ОрганизацияНаименование,
        |    ОсновноеПроизводство.Субконто2.Наименование КАК НоменклатурнаяГруппаНаименование,
        |    ОсновноеПроизводство.Субконто1.Наименование КАК СтатьяЗатратНаименование
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Счет В (&МассивСчетов20), , , , ) КАК ОсновноеПроизводство
        |ГДЕ
        |    И (&ОтборПоОрганизации
        |                И ОсновноеПроизводство.Организация = &Организация
        |            ИЛИ НЕ &ОтборПоОрганизации)
        |   И ОсновноеПроизводство.Субконто1 В ИЕРАРХИИ(&ВыбЛитер)
        |СГРУППИРОВАТЬ ПО
        |    ОсновноеПроизводство.Организация,
        |    ОсновноеПроизводство.Субконто2,
        |    ОсновноеПроизводство.Субконто1,
        |    ОсновноеПроизводство.Регистратор
14 live in sky dreams
 
10.12.14
07:04
Одна строка лишняя была

|ВЫБРАТЬ
        |    ОсновноеПроизводство.Субконто2 КАК СтатьяЗатрат,
        |    ОсновноеПроизводство.Субконто1 КАК НоменклатурнаяГруппа,
        |    ОсновноеПроизводство.Организация КАК Организация,
        |    СУММА(ОсновноеПроизводство.СуммаОборот) КАК Сумма,
        |    СУММА(ОсновноеПроизводство.КоличествоОборот) КАК Количество,
        |    ОсновноеПроизводство.Организация.Наименование КАК ОрганизацияНаименование,
        |    ОсновноеПроизводство.Субконто2.Наименование КАК НоменклатурнаяГруппаНаименование,
        |    ОсновноеПроизводство.Субконто1.Наименование КАК СтатьяЗатратНаименование
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Счет В (&МассивСчетов20), , , , ) КАК ОсновноеПроизводство
        |ГДЕ
        |    И (&ОтборПоОрганизации
        |                И ОсновноеПроизводство.Организация = &Организация
        |            ИЛИ НЕ &ОтборПоОрганизации)
        |СГРУППИРОВАТЬ ПО
        |    ОсновноеПроизводство.Организация,
        |    ОсновноеПроизводство.Субконто2,
        |    ОсновноеПроизводство.Субконто1,
        |    ОсновноеПроизводство.Регистратор
15 live in sky dreams
 
10.12.14
07:22
Если делаю так:

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



то как потом группировать это?
Как заполнить секцию СГРУППИРОВАТЬ ПО?
16 DYS2012
 
10.12.14
07:31
для примера

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

СГРУППИРОВАТЬ ПО
    ВЫБОР
        КОГДА ТиповойОбороты.Субконто1 ССЫЛКА Справочник.ПодразделенияОрганизаций
            ТОГДА ТиповойОбороты.Субконто1
        КОГДА ТиповойОбороты.Субконто2 ССЫЛКА Справочник.ПодразделенияОрганизаций
            ТОГДА ТиповойОбороты.Субконто2
        КОГДА ТиповойОбороты.Субконто3 ССЫЛКА Справочник.ПодразделенияОрганизаций
            ТОГДА ТиповойОбороты.Субконто3
        ИНАЧЕ ""
    КОНЕЦ,
    ВЫБОР
        КОГДА ТиповойОбороты.Субконто1 ССЫЛКА Справочник.СтатьиЗатрат
            ТОГДА ТиповойОбороты.Субконто1
        КОГДА ТиповойОбороты.Субконто2 ССЫЛКА Справочник.СтатьиЗатрат
            ТОГДА ТиповойОбороты.Субконто2
        КОГДА ТиповойОбороты.Субконто3 ССЫЛКА Справочник.СтатьиЗатрат
            ТОГДА ТиповойОбороты.Субконто3
        ИНАЧЕ ""
    КОНЕЦ,
    ТиповойОбороты.Организация,
    ТиповойОбороты.Период,
    ВЫБОР
        КОГДА ТиповойОбороты.Субконто1 ССЫЛКА Справочник.СтатьиЗатрат
            ТОГДА ТиповойОбороты.Субконто1.Родитель
        КОГДА ТиповойОбороты.Субконто2 ССЫЛКА Справочник.СтатьиЗатрат
            ТОГДА ТиповойОбороты.Субконто2.Родитель
        КОГДА ТиповойОбороты.Субконто3 ССЫЛКА Справочник.СтатьиЗатрат
            ТОГДА ТиповойОбороты.Субконто3.Родитель
        ИНАЧЕ ""
    КОНЕЦ

УПОРЯДОЧИТЬ ПО
    Период
ИТОГИ
    СУММА(СуммаОборот)
ПО
    Организация,
    ПодразделениеОрганизации,
    ГруппаСтатейЗатрат,
    СтатьиЗатрат,
    Период ПЕРИОДАМИ(МЕСЯЦ, &ДатаНач, &ДатаКон)
17 live in sky dreams
 
10.12.14
07:40
Я сделал по аналогии:

Пишет ошибку "ОсновноеПроизводство.Субконто1" не входит вгруппу.
18 live in sky dreams
 
10.12.14
07:40
|ВЫБРАТЬ
        |    ВЫБОР КОГДА ТипЗначения(ОсновноеПроизводство.Субконто1) = ТипЗначения(&ТипЛитер) ТОГДА
        |        ОсновноеПроизводство.Субконто1
        |    КОГДА ТипЗначения(ОсновноеПроизводство.Субконто2) = ТипЗначения(&ТипЛитер) ТОГДА
        |        ОсновноеПроизводство.Субконто2
        |    КОНЕЦ КАК Литер,
        |    ВЫБОР КОГДА ТипЗначения(ОсновноеПроизводство.Субконто1) = ТипЗначения(&ТипЛитер) ТОГДА
        |        ОсновноеПроизводство.Субконто1.Наименование
        |    КОГДА ТипЗначения(ОсновноеПроизводство.Субконто2) = ТипЗначения(&ТипЛитер) ТОГДА
        |        ОсновноеПроизводство.Субконто2.Наименование
        |    КОНЕЦ КАК ЛитерНаименование,
        |    ВЫБОР КОГДА ТипЗначения(ОсновноеПроизводство.Субконто1) = ТипЗначения(&ТипСтатьяЗатрат) ТОГДА
        |        ОсновноеПроизводство.Субконто1
        |    КОГДА ТипЗначения(ОсновноеПроизводство.Субконто2) = ТипЗначения(&ТипСтатьяЗатрат) ТОГДА
        |        ОсновноеПроизводство.Субконто2
        |    КОНЕЦ КАК СтатьяЗатрат,
        |    ВЫБОР КОГДА ТипЗначения(ОсновноеПроизводство.Субконто1) = ТипЗначения(&ТипСтатьяЗатрат) ТОГДА
        |        ОсновноеПроизводство.Субконто1.Наименование
        |    КОГДА ТипЗначения(ОсновноеПроизводство.Субконто2) = ТипЗначения(&ТипСтатьяЗатрат) ТОГДА
        |        ОсновноеПроизводство.Субконто2.Наименование
        |    КОНЕЦ КАК СтатьяЗатратНаименование,
        |    ОсновноеПроизводство.Организация КАК Организация,
        |    СУММА(ОсновноеПроизводство.СуммаОборот) КАК Сумма,
        |    СУММА(ОсновноеПроизводство.КоличествоОборот) КАК Количество,
        |    ОсновноеПроизводство.Организация.Наименование КАК ОрганизацияНаименование
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Счет В (&МассивСчетов20), , , , ) КАК ОсновноеПроизводство
        |ГДЕ
        |    НЕ ОсновноеПроизводство.СуммаОборотДт=0
        |    И (&ОтборПоОрганизации
        |                И ОсновноеПроизводство.Организация = &Организация
        |            ИЛИ НЕ &ОтборПоОрганизации)
        |   "+?(ЗначениеЗаполнено(ОтборЛитер),"И ОсновноеПроизводство.Субконто1 В ИЕРАРХИИ(&ВыбЛитер)","")+"
        |СГРУППИРОВАТЬ ПО
        |    ОсновноеПроизводство.Организация,
        |    ВЫБОР КОГДА ТипЗначения(ОсновноеПроизводство.Субконто1) = ТипЗначения(&ТипЛитер) ТОГДА
        |        ОсновноеПроизводство.Субконто1
        |    КОГДА ТипЗначения(ОсновноеПроизводство.Субконто2) = ТипЗначения(&ТипЛитер) ТОГДА
        |        ОсновноеПроизводство.Субконто2
        |    КОНЕЦ,
        |    ВЫБОР КОГДА ТипЗначения(ОсновноеПроизводство.Субконто1) = ТипЗначения(&ТипСтатьяЗатрат) ТОГДА
        |        ОсновноеПроизводство.Субконто1
        |    КОГДА ТипЗначения(ОсновноеПроизводство.Субконто2) = ТипЗначения(&ТипСтатьяЗатрат) ТОГДА
        |        ОсновноеПроизводство.Субконто2
        |    КОНЕЦ,
        |    ОсновноеПроизводство.Регистратор
        |
        |УПОРЯДОЧИТЬ ПО
        |    ОрганизацияНаименование,
        |    ЛитерНаименование,
        |    СтатьяЗатратНаименование
        |ИТОГИ
        |    СУММА(Сумма),
        |    СУММА(Количество)
        |ПО
        |    Организация,
        |    Литер ИЕРАРХИЯ,
        |    СтатьяЗатрат ИЕРАРХИЯ";
19 live in sky dreams
 
10.12.14
07:51
Тоже в поиске смотрю люди делают группировку по полям ВЫБОР КОГДА ТОГДА
И у них запрос отрабатывает. В отличии от моего. Не могу понять в чем же такая принципиальная разница между запросами то?
20 denk
 
10.12.14
08:06
А если указать параметр "субконто" в виртуальной таблице оборотов регистра бухгалтерии?
21 Defender aka LINN
 
10.12.14
09:08
(19) Открой для себя конструктор запросов
22 Defender aka LINN
 
10.12.14
09:08
(20) неспортивно
23 DrHiHi
 
10.12.14
09:11
заепись))))) а про видысубоконто в запросе не слышали??
24 hhhh
 
10.12.14
09:19
(19) дарю

Субконто
Субконто (необязательный)

Тип параметра: ПланВидовХарактеристикСсылка.; Массив; ФиксированныйМассив; СписокЗначений.
Ссылка, или массив ссылок, или фиксированный массив ссылок, или список значений, содержащий ссылки, на виды субконто.
Задает набор и порядок субконто, которыми можно оперировать в запросе. Накладывает фильтр на записи по видам субконто (если массив то по И).
Если параметр <Субконто> не задан, то субконто определяются позиционно. То есть берется вид субконто соответствующего счета из соответствующей позиции. Так, если <Субконто> не определен, и делается запрос по счету, у которого определены виды субконто первое "Материалы", второе "Склад", то поле "Субконто1" будет содержать материалы, а поле "Субконто2" - склады.
Если делается запрос по двум счетам, при этом у первого настройка субконто "Материалы, Склад", а у второго "Склад, Материал" и не задан параметр <Субконто>, то поле "Субконто1" будет содержать и материалы для первого счета и склады для второго счета. Поле "Субконто2" будет содержать склады для первого счета и материалы для второго.
Если параметр <Субконто> задан, то выбираются данные только по тем счетам, у которых определены все указанные виды субконто. При этом поля "Субконто<N>", будут содержать значения, соответствующие переданным видам субконто.
Например, если один счет имеет настройку субконто "Материалы, Склад", а второй "Склад, Материалы", и параметр виды субконто задан как массив "Материалы, Склад", то поле "Субконто1" будет содержать материалы, а поле "Субконто2" - склады, не зависимо от счета.
Параметр не существует, если при конфигурировании для плана счетов не указаны субконто.
Значение по умолчанию: Неопределено


пятый параметр в РегистрБухгалтерии.Хозрасчетный.Обороты() установи и будет тебе счастье.