|
СКД: меняются итоги при добавлении группировки | ☑ | ||
---|---|---|---|---|
0
fmst
naïve
03.01.25
✎
18:45
|
Отчет в СКД
Если добавить ещё одну группировку, то меняются общие итоги. Из-за чего это может быть? https://imagizer.imageshack.com/img923/9757/C2ysrC.png https://imagizer.imageshack.com/img923/574/XvXFS9.png https://imagizer.imageshack.com/img924/792/iaYjnu.png |
|||
1
Михаил Козлов
03.01.25
✎
20:22
|
Запросом с итогами проверьте по "кривой" номенклатуре.
|
|||
2
fmst
naïve
03.01.25
✎
21:33
|
(1) В запросе Итоги правильно считает
|
|||
3
Ненавижу 1С
гуру
03.01.25
✎
21:46
|
Правильные в итоге какие? С одной группировкой или двумя?
От запроса зависит конечно. Попробуйте установить у поля Номенклатура обязательное, тогда по идеи будет как с двумя группировками |
|||
4
fmst
naïve
03.01.25
✎
22:19
|
(3) с двумя
у всех полей поставил "Обязательное" - не помогло Итоговый запрос ВЫБРАТЬ ВТПродажи.ДокументПродажи КАК ДокументПродажи, ВТПродажи.Номенклатура КАК Номенклатура, ВТПродажи.Артикул КАК Артикул, ВТПродажи.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ЕСТЬNULL(ВТПродажи.Количество, 0) КАК Количество, ВТПродажи.Подразделение КАК Подразделение, ВЫБОР КОГДА НЕ ВТПродажиМаксимумы.Подразделение ЕСТЬ NULL ТОГДА 1 КОГДА НЕ ВТПродажиМинимумы.Подразделение ЕСТЬ NULL ТОГДА -1 ИНАЧЕ 0 КОНЕЦ КАК ЭтоМаксимальныеПродажи {ВЫБРАТЬ ДокументПродажи.*, Номенклатура.*, Артикул, КатегорияНоменклатуры.*, Количество, Подразделение.*, ЭтоМаксимальныеПродажи} ИЗ ВТПродажи КАК ВТПродажи ЛЕВОЕ СОЕДИНЕНИЕ ВТПродажиМаксимумы2 КАК ВТПродажиМаксимумы ПО ВТПродажи.КатегорияНоменклатуры = ВТПродажиМаксимумы.КатегорияНоменклатуры И ВТПродажи.Подразделение = ВТПродажиМаксимумы.Подразделение ЛЕВОЕ СОЕДИНЕНИЕ ВТПродажиМинимумы2 КАК ВТПродажиМинимумы ПО ВТПродажи.КатегорияНоменклатуры = ВТПродажиМинимумы.КатегорияНоменклатуры И ВТПродажи.Подразделение = ВТПродажиМинимумы.Подразделение {ГДЕ ВТПродажи.ДокументПродажи.*, ВТПродажи.Номенклатура.*, ВТПродажи.Артикул, ВТПродажи.КатегорияНоменклатуры.*, (ЕСТЬNULL(ВТПродажи.Количество, 0)) КАК Количество, ВТПродажи.Подразделение.*, (ВЫБОР КОГДА НЕ ВТПродажиМаксимумы.Подразделение ЕСТЬ NULL ТОГДА 1 КОГДА НЕ ВТПродажиМинимумы.Подразделение ЕСТЬ NULL ТОГДА -1 ИНАЧЕ 0 КОНЕЦ) КАК ЭтоМаксимальныеПродажи} |
|||
5
fmst
naïve
03.01.25
✎
22:30
|
И расшифровки по любому из поле тоже другие итоги дают. Причём не во всём отчете, пока не могу выловить зависимость.
|
|||
6
Ненавижу 1С
гуру
03.01.25
✎
22:31
|
Там еще и временные таблицы...
А почему цвет розовый и зеленый? |
|||
7
fmst
naïve
03.01.25
✎
22:34
|
(6) Да. А какая разница - итоговая таблица-то одна.
условное форматирование |
|||
8
Ненавижу 1С
гуру
03.01.25
✎
22:34
|
Нужно смотреть на формирование временных таблиц
|
|||
9
Ненавижу 1С
гуру
03.01.25
✎
22:35
|
(7) разница есть
Что условное форматирование я догадался |
|||
10
fmst
naïve
03.01.25
✎
22:37
|
(9) что тогда сделать с временными таблицами?
|
|||
11
fmst
naïve
03.01.25
✎
22:38
|
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.Номенклатура.Артикул КАК Артикул, ПродажиОбороты.Номенклатура.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ПродажиОбороты.Регистратор КАК ДокументПродажи, ПродажиОбороты.КоличествоОборот КАК Количество, ПродажиОбороты.Подразделение КАК Подразделение ПОМЕСТИТЬ ВТПродажиНоменклатура ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК ПродажиОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.НоменклатураНабора КАК Номенклатура, Продажи.НоменклатураНабора.Артикул КАК Артикул, Продажи.НоменклатураНабора.КатегорияНоменклатуры КАК КатегорияНоменклатуры, Продажи.Регистратор КАК ДокументПродажи, МАКСИМУМ(Продажи.Количество) КАК Количество, Продажи.Подразделение КАК Подразделение ПОМЕСТИТЬ ВТПродажиНаборы ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода И Продажи.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) СГРУППИРОВАТЬ ПО Продажи.НоменклатураНабора, Продажи.НоменклатураНабора.Артикул, Продажи.НоменклатураНабора.КатегорияНоменклатуры, Продажи.Регистратор, Продажи.Подразделение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажиНоменклатура.Номенклатура КАК Номенклатура, ПродажиНоменклатура.Артикул КАК Артикул, ПродажиНоменклатура.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ПродажиНоменклатура.ДокументПродажи КАК ДокументПродажи, ПродажиНоменклатура.Количество КАК Количество, ПродажиНоменклатура.Подразделение КАК Подразделение ПОМЕСТИТЬ ВТПродажи ИЗ ВТПродажиНоменклатура КАК ПродажиНоменклатура ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПродажиНаборы.Номенклатура, ПродажиНаборы.Артикул, ПродажиНаборы.КатегорияНоменклатуры, ПродажиНаборы.ДокументПродажи, ПродажиНаборы.Количество, ПродажиНаборы.Подразделение ИЗ ВТПродажиНаборы КАК ПродажиНаборы ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажи.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ВТПродажи.Подразделение КАК Подразделение, СУММА(ВТПродажи.Количество) КАК Количество ПОМЕСТИТЬ ВТПродажиИтоги ИЗ ВТПродажи КАК ВТПродажи СГРУППИРОВАТЬ ПО ВТПродажи.КатегорияНоменклатуры, ВТПродажи.Подразделение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажиИтоги.КатегорияНоменклатуры КАК КатегорияНоменклатуры, МАКСИМУМ(ВТПродажиИтоги.Количество) КАК Количество ПОМЕСТИТЬ ВТПродажиМаксимумыКатегорий ИЗ ВТПродажиИтоги КАК ВТПродажиИтоги СГРУППИРОВАТЬ ПО ВТПродажиИтоги.КатегорияНоменклатуры ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажиИтоги.КатегорияНоменклатуры КАК КатегорияНоменклатуры, МИНИМУМ(ВТПродажиИтоги.Количество) КАК Количество ПОМЕСТИТЬ ВТПродажиМинимумыКатегорий ИЗ ВТПродажиИтоги КАК ВТПродажиИтоги СГРУППИРОВАТЬ ПО ВТПродажиИтоги.КатегорияНоменклатуры ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажиИтоги.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ВТПродажиИтоги.Подразделение КАК Подразделение, МАКСИМУМ(ВТПродажиИтоги.Количество) КАК Количество ПОМЕСТИТЬ ВТПродажиМаксимумы ИЗ ВТПродажиИтоги КАК ВТПродажиИтоги СГРУППИРОВАТЬ ПО ВТПродажиИтоги.КатегорияНоменклатуры, ВТПродажиИтоги.Подразделение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажиИтоги.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ВТПродажиИтоги.Подразделение КАК Подразделение, МИНИМУМ(ВТПродажиИтоги.Количество) КАК Количество ПОМЕСТИТЬ ВТПродажиМинимумы ИЗ ВТПродажиИтоги КАК ВТПродажиИтоги СГРУППИРОВАТЬ ПО ВТПродажиИтоги.КатегорияНоменклатуры, ВТПродажиИтоги.Подразделение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажиМаксимумыКатегорий.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ВТПродажиМаксимумы.Подразделение КАК Подразделение ПОМЕСТИТЬ ВТПродажиМаксимумы2 ИЗ ВТПродажиМаксимумыКатегорий КАК ВТПродажиМаксимумыКатегорий ЛЕВОЕ СОЕДИНЕНИЕ ВТПродажиМаксимумы КАК ВТПродажиМаксимумы ПО ВТПродажиМаксимумыКатегорий.КатегорияНоменклатуры = ВТПродажиМаксимумы.КатегорияНоменклатуры И ВТПродажиМаксимумыКатегорий.Количество = ВТПродажиМаксимумы.Количество ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажиМинимумыКатегорий.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ВТПродажиМинимумы.Подразделение КАК Подразделение ПОМЕСТИТЬ ВТПродажиМинимумы2 ИЗ ВТПродажиМинимумыКатегорий КАК ВТПродажиМинимумыКатегорий ЛЕВОЕ СОЕДИНЕНИЕ ВТПродажиМинимумы КАК ВТПродажиМинимумы ПО ВТПродажиМинимумыКатегорий.КатегорияНоменклатуры = ВТПродажиМинимумы.КатегорияНоменклатуры И ВТПродажиМинимумыКатегорий.Количество = ВТПродажиМинимумы.Количество ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажи.ДокументПродажи КАК ДокументПродажи, ВТПродажи.Номенклатура КАК Номенклатура, ВТПродажи.Артикул КАК Артикул, ВТПродажи.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ЕСТЬNULL(ВТПродажи.Количество, 0) КАК Количество, ВТПродажи.Подразделение КАК Подразделение, 0 КАК ЭтоМаксимальныеПродажи {ВЫБРАТЬ ДокументПродажи.*, Номенклатура.*, Артикул, КатегорияНоменклатуры.*, Количество, Подразделение.*, ЭтоМаксимальныеПродажи} ИЗ ВТПродажи КАК ВТПродажи {ГДЕ ВТПродажи.ДокументПродажи.*, ВТПродажи.Номенклатура.*, ВТПродажи.Артикул, ВТПродажи.КатегорияНоменклатуры.*, (ЕСТЬNULL(ВТПродажи.Количество, 0)) КАК Количество, ВТПродажи.Подразделение.*} |
|||
12
fmst
naïve
03.01.25
✎
22:44
|
В конце уже оставил одну таблицу ВТПродажи чтобы как-то выловить причину.
|
|||
13
Ненавижу 1С
гуру
03.01.25
✎
22:45
|
МАКСИМУМ(Продажи.Количество) КАК Количество
Это уже интересно. Показывайте ресурсы скд |
|||
14
fmst
naïve
03.01.25
✎
22:50
|
(13) сделал так, потому что в базе все составляющие в наборах по 1 шт, продажа одной из номенклатур набора означает продажу самого набора
https://imagizer.imageshack.com/img922/6254/3sZ0zC.png |
|||
15
Ненавижу 1С
гуру
03.01.25
✎
23:00
|
(14) сделайте сумма
Для наборов почему не используете обороты? |
|||
16
FormatC
03.01.25
✎
23:02
|
Если в отчет не выводится номенклатура, то СКД убирает это поле из всех запросов, поэтому и меняются итоги.
|
|||
17
Ненавижу 1С
гуру
03.01.25
✎
23:04
|
(15) или оставьте просто количество, но обязательно тогда использовать обороты
|
|||
18
Ненавижу 1С
гуру
03.01.25
✎
23:05
|
(16) такой вы внезапный весь )))
мы уже это прошли. Надеюсь автор не соврал и везде поставил "обязательное" |
|||
19
FormatC
03.01.25
✎
23:07
|
не всегда помогает
|
|||
20
FormatC
03.01.25
✎
23:10
|
есть несколько вариантов решения этой проблемы, и поставить галочку "обязательное" - это самое очевидное и простое.
но порой просто приходится выполнять запрос в процедуре "ПриКомпоновке..." и и кормить его как внешний источник данных... а еще есть метод индийских программистов через фиктивные условия в запросе |
|||
21
fmst
naïve
03.01.25
✎
23:14
|
(15) сделал сумма - не помогло
в регистре количество только для составляющих набора брюки 1 рубашка 1 пиджак 1 а нужно получить костюм 1 обороты стразу суммируют в зависимости от выбранных полей чтобы получить нужную сумму нужно выбирать лишнее поле, посчитал, что проще основную таблицу использовать |
|||
22
fmst
naïve
03.01.25
✎
23:16
|
(20) сейчас попробую скормить внешний источник
|
|||
23
FormatC
03.01.25
✎
23:20
|
Можно прописать условие в ГДЕ
ВЫБОР КОГДА Истина = Истина ТОГДА Истина ИНАЧЕ Номенклатура = &Номенклатура Конец СКД подумает ,что номенклатура используется в условии и оставит это поле... Но тут надо смотреть контекст запроса. А еще СКД не убирает поля никогда из вложенных запросов, это тоже можно использовать в некоторых случаях. |
|||
24
Волшебник
03.01.25
✎
23:23
|
(23) хе-хе
|
|||
25
Ненавижу 1С
гуру
03.01.25
✎
23:32
|
Ладно, покажи, что поставил поле номенклатура обязательным.
Нет ресурса в регистре КоличествоНаборов? |
|||
26
fmst
naïve
03.01.25
✎
23:37
|
||||
27
Ненавижу 1С
гуру
03.01.25
✎
23:43
|
(26) и вычисляемых полей нет, надеюсь?
|
|||
28
fmst
naïve
03.01.25
✎
23:49
|
(22) засунул во внешнюю таблицу - не помогло
|
|||
29
fmst
naïve
03.01.25
✎
23:49
|
(27) нет
|
|||
30
fmst
naïve
03.01.25
✎
23:51
|
(23) дело не в номенклатуре
любое поле во вторую группировку добавить или расшифровать итоговое значение по любому полю - и итог не сходится |
|||
31
fmst
naïve
04.01.25
✎
00:11
|
Упростил запрос - такое же поведение
ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.Номенклатура.Артикул КАК Артикул, ПродажиОбороты.Номенклатура.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ПродажиОбороты.Регистратор КАК ДокументПродажи, ПродажиОбороты.КоличествоОборот КАК Количество, ПродажиОбороты.Подразделение КАК Подразделение ПОМЕСТИТЬ ВТПродажиНоменклатура ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК ПродажиОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.НоменклатураНабора КАК Номенклатура, Продажи.НоменклатураНабора.Артикул КАК Артикул, Продажи.НоменклатураНабора.КатегорияНоменклатуры КАК КатегорияНоменклатуры, Продажи.Регистратор КАК ДокументПродажи, МАКСИМУМ(Продажи.Количество) КАК Количество, Продажи.Подразделение КАК Подразделение ПОМЕСТИТЬ ВТПродажиНаборы ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода И Продажи.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) СГРУППИРОВАТЬ ПО Продажи.НоменклатураНабора, Продажи.НоменклатураНабора.Артикул, Продажи.НоменклатураНабора.КатегорияНоменклатуры, Продажи.Регистратор, Продажи.Подразделение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажиНоменклатура.Номенклатура КАК Номенклатура, ПродажиНоменклатура.Артикул КАК Артикул, ПродажиНоменклатура.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ПродажиНоменклатура.ДокументПродажи КАК ДокументПродажи, ПродажиНоменклатура.Количество КАК Количество, ПродажиНоменклатура.Подразделение КАК Подразделение ПОМЕСТИТЬ ВТПродажи ИЗ ВТПродажиНоменклатура КАК ПродажиНоменклатура ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПродажиНаборы.Номенклатура, ПродажиНаборы.Артикул, ПродажиНаборы.КатегорияНоменклатуры, ПродажиНаборы.ДокументПродажи, ПродажиНаборы.Количество, ПродажиНаборы.Подразделение ИЗ ВТПродажиНаборы КАК ПродажиНаборы ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажи.ДокументПродажи КАК ДокументПродажи, ВТПродажи.Номенклатура КАК Номенклатура, ВТПродажи.Артикул КАК Артикул, ВТПродажи.КатегорияНоменклатуры КАК КатегорияНоменклатуры, ЕСТЬNULL(ВТПродажи.Количество, 0) КАК Количество, ВТПродажи.Подразделение КАК Подразделение ИЗ ВТПродажи КАК ВТПродажи |
|||
32
Ненавижу 1С
гуру
04.01.25
✎
00:21
|
(31) попробуйте категорию и артикул вычислять не сразу, а в итоговом запросе
|
|||
33
fmst
naïve
04.01.25
✎
00:28
|
Нашёл. Количество наборов получаю теперь по другому. Не понятно, что ему не понравилось в МАКСИМУМ
ВЫБРАТЬ РАЗЛИЧНЫЕ СоставНаборов.НоменклатураНабора КАК НоменклатураНабора, СоставНаборов.ХарактеристикаНабора КАК ХарактеристикаНабора, СУММА(СоставНаборов.Количество) КАК Количество ПОМЕСТИТЬ ВТСоставНаборов ИЗ РегистрСведений.СоставНаборов КАК СоставНаборов ГДЕ (СоставНаборов.НоменклатураНабора, СоставНаборов.ХарактеристикаНабора) В (ВЫБРАТЬ РАЗЛИЧНЫЕ Продажи.НоменклатураНабора, Продажи.ХарактеристикаНабора ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода И Продажи.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) СГРУППИРОВАТЬ ПО СоставНаборов.НоменклатураНабора, СоставНаборов.ХарактеристикаНабора ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.НоменклатураНабора КАК Номенклатура, Продажи.НоменклатураНабора.Артикул КАК Артикул, Продажи.НоменклатураНабора.КатегорияНоменклатуры КАК КатегорияНоменклатуры, Продажи.Регистратор КАК ДокументПродажи, Продажи.Количество / ВТСоставНаборов.Количество КАК Количество, Продажи.Подразделение КАК Подразделение ИЗ РегистрНакопления.Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ ВТСоставНаборов КАК ВТСоставНаборов ПО Продажи.НоменклатураНабора = ВТСоставНаборов.НоменклатураНабора И Продажи.ХарактеристикаНабора = ВТСоставНаборов.ХарактеристикаНабора ГДЕ Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода И Продажи.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |