Имя: Пароль:
1C
1С v8
Запрос: Продажи по товарам входящим в группу и остальные (не входящие в группу)
0 lg2marvel
 
30.01.18
12:33
Всем привет, в скд делаю запрос. Пока сделал двумя наборами данных
ВЫБРАТЬ
    Чеки.Ссылка КАК Чек,
    Чеки.Склад КАК Склад,
    Чеки.ДатаОткрытия КАК ДатаОткрытияЧека,
    Чеки.ДатаЗакрытия КАК ДатаЗакрытияЧека,
    Чеки.КассирККМ.Ссылка КАК Кассир,
    Чеки.Товары.(
        Сумма КАК СуммаСтрокиПоЧекуТабак,
        Номенклатура.Родитель КАК ГруппаТабак,
        Номенклатура
    ),
    ТипыЧеков.Ссылка
ИЗ
    Справочник.Чеки КАК Чеки
        ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.ТипыЧеков КАК ТипыЧеков
        ПО Чеки.ТипЧека = ТипыЧеков.Ссылка
ГДЕ
    Чеки.Статус = &Статус
    И Чеки.ТипЧека = &ТипЧека
    И Чеки.Товары.Сторно = &Сторно
    И Чеки.Товары.Номенклатура.Родитель В ИЕРАРХИИ(&ГруппаТабак)

и второй аналогичный

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

Но работакт это все дело крайне долго, а еще в планах прикрутить еще один набор данных. Можно ли как-то в одном запросе получить данные о продаже товара находящегося в группе и не в группе?
1 Джинн
 
30.01.18
12:44
Можно через Выбор. Но это тоже не быстро. Нужно экспериментировать. Я бы ВТ попробовал.
2 vicof
 
30.01.18
13:59
Источник данных заменить на регистр продаж.
В ИЕРАРХИИ заменить на В, и НЕ В.
Вложенные запросы убрать.
3 lg2marvel
 
30.01.18
15:11
(2) спасибо, думаю Вы правы, так будет правильнее.

Еще один вопрос, возможно ли получить итоги по условию товар в "Табак" и товар не в группе "Табак" в одном запросе?
4 FIXXXL
 
30.01.18
16:00
(3) сделай два запроса через ОБЪЕДИНИТЬ
в них служебное поле "ГруппаТАБАК", значения хоть текстом "ТАБАК" в первом, "НЕ ТАБАК" во втором
ну и алга
5 lg2marvel
 
30.01.18
16:12
(4) спасибо, буду пробовать
6 lg2marvel
 
31.01.18
11:04
ВЫБРАТЬ
    Чеки.Ссылка КАК ОКС_Чек,
    Чеки.КассирККМ,
    Чеки.Сумма,
    Чеки.Склад,
    Чеки.ДатаОткрытия
ИЗ
    Справочник.Чеки КАК Чеки
ГДЕ
    Чеки.Товары.Сторно = &Сторно
    И Чеки.ТипЧека = &ТипЧека
    И Чеки.Статус = &Статус
    И Чеки.Товары.Номенклатура В(&НоменклатураТабак)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    Чеки.Ссылка,
    Чеки.КассирККМ,
    Чеки.Сумма,
    Чеки.Склад,
    Чеки.ДатаОткрытия
ИЗ
    Справочник.Чеки КАК Чеки
ГДЕ
    Чеки.Товары.Сторно = &Сторно
    И Чеки.ТипЧека = &ТипЧека
    И Чеки.Статус = &Статус
    И НЕ Чеки.Товары.Номенклатура В (&НоменклатураНеТабак)

Не выходит не использовать данные из справочника "чеки". Информация о кассирах хранится только в них.

Этот запрос выводит одну общую сумму не разбивая ее по группам. Не подскажите как сделать разбивку?
7 lg2marvel
 
31.01.18
11:20
ВЫБРАТЬ
    Чеки.Ссылка КАК ОКС_Чек,
    Чеки.КассирККМ,
    Чеки.Сумма,
    Чеки.Склад,
    Чеки.ДатаОткрытия,
    NULL КАК ГруппаТабак
ИЗ
    Справочник.Чеки КАК Чеки
ГДЕ
    Чеки.Товары.Сторно = &Сторно
    И Чеки.ТипЧека = &ТипЧека
    И Чеки.Статус = &Статус
    И Чеки.Товары.Номенклатура В(&НоменклатураТабак)

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

ВЫБРАТЬ
    Чеки.Ссылка,
    Чеки.КассирККМ,
    Чеки.Сумма,
    Чеки.Склад,
    Чеки.ДатаОткрытия,
    NULL
ИЗ
    Справочник.Чеки КАК Чеки
ГДЕ
    Чеки.Товары.Сторно = &Сторно
    И Чеки.ТипЧека = &ТипЧека
    И Чеки.Статус = &Статус
    И НЕ Чеки.Товары.Номенклатура В (&НоменклатураНеТабак)

Вроде как похоже на правду, но выводит одну и туже сумму, можно ли служебное поле сделать во втором запросе? - Как ни пробую в первом создается, а во втором просто NULL
8 Вафель
 
31.01.18
11:26
в 1 запросе сделай
&НоменклатураТабак КАК ГруппаТабак
9 FIXXXL
 
31.01.18
11:28
(7) вместо NULL напиши же "ТАБАК" "НЕ ТАБАК"
10 lg2marvel
 
31.01.18
11:56
(9)

ВЫБРАТЬ
    Чеки.Ссылка,
    Чеки.КассирККМ,
    Чеки.Сумма,
    Чеки.Склад,
    Чеки.ДатаОткрытия,
    0 КАК ТАБАК,
    0
ИЗ
    Справочник.Чеки КАК Чеки
ГДЕ
    Чеки.Товары.Сторно = &Сторно
    И Чеки.ТипЧека = &ТипЧека
    И Чеки.Статус = &Статус
    И Чеки.Товары.Номенклатура В(&НоменклатураТабак)

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

ВЫБРАТЬ
    Чеки.Ссылка,
    Чеки.КассирККМ,
    Чеки.Сумма,
    Чеки.Склад,
    Чеки.ДатаОткрытия,
    0,
    0 КАК НЕТАБАК
ИЗ
    Справочник.Чеки КАК Чеки
ГДЕ
    Чеки.Товары.Сторно = &Сторно
    И Чеки.ТипЧека = &ТипЧека
    И Чеки.Статус = &Статус
    И НЕ Чеки.Товары.Номенклатура В (&НоменклатураНеТабак)

Ну не дает оно сделать так, переносит  в первый запрос
ВЫБРАТЬ
    Чеки.Ссылка,
    Чеки.КассирККМ,
    Чеки.Сумма,
    Чеки.Склад,
    Чеки.ДатаОткрытия,
    0 КАК ТАБАК,
    0 КАК НЕТАБАК

а во втором

ВЫБРАТЬ
    Чеки.Ссылка,
    Чеки.КассирККМ,
    Чеки.Сумма,
    Чеки.Склад,
    Чеки.ДатаОткрытия,
    0,
    0

и в итоге я получаю следующее
ФИО                              Сумма Табак Итог Сумма НЕТАБАК ИТОГ
Кассир Имя Отчетсво   50р                 50р    50р                        50р
11 lg2marvel
 
31.01.18
12:00
(9) Ошибка и все тут

{(15, 50)}: Ожидается выражение ")"
И Чеки.Товары.Номенклатура В(&НоменклатураТабак <<?>>КАК ТТАбак)
12 lg2marvel
 
31.01.18
12:01
(11) (8)
13 Вафель
 
31.01.18
12:04
сумму в разные колонки делай в разных запросах
14 lg2marvel
 
31.01.18
12:16
(13) Вроде как должно быть все хорошо но нет,

ВЫБРАТЬ
    Чеки.Ссылка,
    Чеки.КассирККМ,
    Чеки.Склад,
    Чеки.ДатаОткрытия,
    Чеки.Товары.(
        NULL КАК СуммаНТ,
        Сумма КАК СуммаТ
    )
ИЗ
    Справочник.Чеки КАК Чеки
ГДЕ
    Чеки.Товары.Сторно = &Сторно
    И Чеки.ТипЧека = &ТипЧека
    И Чеки.Статус = &Статус
    И Чеки.Товары.Номенклатура В(&НоменклатураТабак)

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

ВЫБРАТЬ
    Чеки.Ссылка,
    Чеки.КассирККМ,
    Чеки.Склад,
    Чеки.ДатаОткрытия,
    Чеки.Товары.(
        Сумма,
        NULL
    )
ИЗ
    Справочник.Чеки КАК Чеки
ГДЕ
    Чеки.Товары.Сторно = &Сторно
    И Чеки.ТипЧека = &ТипЧека
    И Чеки.Статус = &Статус
    И НЕ Чеки.Товары.Номенклатура В (&НоменклатураНеТабак)

Выдает две колонки, первая пустая вторая сумма без учета фильтра в параметрах
15 lg2marvel
 
31.01.18
12:18
Кассир ККМ    Итого    
                                                                Товары.Сумма Т             Товары.Сумма НТ
Самарина Светлана Константиновна                                                 50 227,65
16 Вафель
 
31.01.18
12:19
таб.Сумма КАК Сумма1
0 КАК сумма2

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

0 КАК Сумма1
таб.Сумма КАК Сумма2
17 hhhh
 
31.01.18
12:22
(14) ИЗ
    Справочник.Чеки.Товары КАК ЧекиТовары
18 lg2marvel
 
31.01.18
12:34
(16) (17)
    Чеки.Товары.(
        Сумма КАК СуммаТ
    ),
    ПУСТАЯТАБЛИЦА.( КАК СуммаНТ) КАК Поле1
ИЗ
    Справочник.Чеки КАК Чеки
ОБЪЕДИНИТЬ ВСЕ
    ПУСТАЯТАБЛИЦА.(),
    Чеки.Товары.(
        Сумма
    )
ИЗ
    Справочник.Чеки КАК Чеки

и результат такой же как в (15)
19 lg2marvel
 
31.01.18
12:42
(18) пробую чуть другой подхо: 2 набора данных в  скд и объединением их результата.
20 lg2marvel
 
31.01.18
12:43
(19) чтоб отладить отдельно каждый запрос
21 Вафель
 
31.01.18
12:44
ты пишешь какую-то дичь
22 lg2marvel
 
31.01.18
12:54
(21) Почему? Не дает во втором запросе обозвать поле, все поля обзываются только в первом запросе. На сколько я понял Объеденить все объединяет все данные в запросе и выводит их в  общее поле. Почему в последнем случае не вышло так как я хотел - не могу приложить ума.

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

Возможно если бы это было не СКД было бы как-то по другому.  Если я не прав буду рад какой-либо помощи, сейчас варианты кончились, пытаю первоначальный план по созданию 2-х запросов и объединению их средствами объединения наборов данных. Результат есть, он немного не верный, получаю его дольше чем от ОБЪЕДИНИТЬ. Буду исправлять условия чтоб получить верный результат.

Буду рад если есть указания на мои ошибки, если нет - спасибо за помощь.
23 FIXXXL
 
31.01.18
14:17
(22) >Возможно если бы поле сумма не находилось в табличной части было бы проще, так как тут есть ограничения, но так выходит что кассир находится в шапке элемента справочника, а сумма в ТЧ.

делай запрос к самой ТЧ, реквизиты шапки получай через Ссылка.***
24 hhhh
 
31.01.18
14:24
(22) (14) ИЗ
    Справочник.Чеки.Товары КАК ЧекиТовары