Имя: Пароль:
1C
 
Результат запроса
0 first_may
 
27.05.22
11:50
Добрый день.

Есть некоторый запрос, который получает данные

СтатьяКалькуляции    КоличествоВыпуск    КоличествоВыручка    СуммаВыручки    ЦенаВыручки    СебестоимостьРеал    СтоимостьЗатратОбщая    СтоимостьЗатрат    СтоимостьНаЕдиницу    КоличествоВыручкаОбщая    СуммаВыручкиОбщая
Амортизация оборудования    42    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    1 332 048,025    3 459,865    385    4 294 865,32
Амортизация оборудования    142    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    393 986,03556235    1 023,34035211    385    4 294 865,32
Амортизация оборудования    108    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    518 018,6763906    1 345,50305556    385    4 294 865,32
Амортизация оборудования    134    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    417 507,58992635    1 084,43529851    385    4 294 865,32
Амортизация оборудования    1    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    55 946 017,05    145 314,33    385    4 294 865,32
Амортизация оборудования    110    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    508 600,1550014    1 321,03936364    385    4 294 865,32
Амортизация оборудования    126    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    444 016,00833205    1 153,28833333    385    4 294 865,32
Амортизация оборудования    10    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    5 594 601,705    14 531,433    385    4 294 865,32
Амортизация оборудования    79    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    708 177,43101105    1 839,42189873    385    4 294 865,32
Амортизация оборудования    62    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    902 355,11371005    2 343,77951613    385    4 294 865,32
Амортизация оборудования    69    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    810 811,84130485    2 106,00478261    385    4 294 865,32
Амортизация оборудования    316    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    177 044,3577518    459,85547468    385    4 294 865,32


а мне для СКД надо, что бы было вот так

СтатьяКалькуляции    КоличествоВыпуск    КоличествоВыручка    СуммаВыручки    ЦенаВыручки    СебестоимостьРеал    СтоимостьЗатратОбщая    СтоимостьЗатрат    СтоимостьНаЕдиницу    КоличествоВыручкаОбщая    СуммаВыручкиОбщая
Амортизация оборудования    42    385    4 294 865,32    11 155,49433766    2 964 020,23    145 314,33    1 332 048,025    3 459,865    385    4 294 865,32
Амортизация оборудования    142                        393 986,03556235    1 023,34035211        
Амортизация оборудования    108                        518 018,6763906    1 345,50305556        
Амортизация оборудования    134                        417 507,58992635    1 084,43529851        
Амортизация оборудования    1                        55 946 017,05    145 314,33        
Амортизация оборудования    110                        508 600,1550014    1 321,03936364        
Амортизация оборудования    126                        444 016,00833205    1 153,28833333        
Амортизация оборудования    10                        5 594 601,705    14 531,433        
Амортизация оборудования    79                        708 177,43101105    1 839,42189873        
Амортизация оборудования    62                        902 355,11371005    2 343,77951613        
Амортизация оборудования    69                        810 811,84130485    2 106,00478261        
Амортизация оборудования    316                        177 044,3577518    459,85547468        



Наглядно вот https://disk.yandex.ru/i/SeWPOqhum_u_9Q

Потому что при построении отчета получается, что итог по колонки например КоличествоВыручка,
равен количество записей * на значение.

Можно наверное обработать через
Процедура ПриКомпоновкеРезультата

но есть ли решение через запрос?

Подскажите пож, как лучше поступить?
1 Ненавижу 1С
 
гуру
27.05.22
12:05
я так понимаю это месяцы, а почему тогда количество выручка из месяца в месяц общая?
2 first_may
 
27.05.22
12:11
не месяца, но смысл похожий..

количество выручка общая и связана левым соединением с запросом где получается количество выпуска..
а потом скажем показатели "это месяцы", строятся в колоyrf[
3 first_may
 
27.05.22
12:12
выводятся в колонках.. а общий итог тоже в начальной колонки
4 vicof
 
27.05.22
12:12
А почему не сгруппировать по статье калькуляции?
5 yopQua
 
27.05.22
12:13
ну да, нужна же группировка какая то
6 first_may
 
27.05.22
12:18
Если группировать по СтатьяКалькуляции,
то с КоличествоВыручка    СуммаВыручки    ЦенаВыручки - понятно, делать МАКСИМУМ например,

но КоличествоВыпуск различные же и они так и останутся
7 VoditelKobyly
 
27.05.22
12:22
Нужно не соединение, а объединение
8 yopQua
 
27.05.22
12:23
где надо сумма, где не надо просто ресурс, без функций сумм и максимумов
ну а так то надо понимать смысл отчета, где что
9 DimVad
 
27.05.22
12:25
Мне в голову пришло несколько решений :

1. По некоторым колонкам использовать итоги, а по некоторым - максимум. Ну, понятно. Откуда идёт "Количество выпуска" - там "максимум".

2. Вместо соединения в запросе делать соединения в наборах данных. Тогда суммирование нормально отработают (в Хрусталёвой по СКД там вроде целая подглавка была про это дело).

3. Ну и наконец - результат запроса выгружаем в ТЗ, там его художественно обрабатываем программным способом и запихиваем обратно. Тут можно творить всё, что угодно.
10 first_may
 
27.05.22
12:27
Может так понятней будет..

Отчет на скд https://disk.yandex.ru/i/zfh3HQXMqE8yUA

А итоговый запрос вот такой


                  |ВЫБРАТЬ
                  |    ВременаяВыручка.Организация КАК Организация,
                  |    ВременаяВыручка.Номенклатура КАК Номенклатура,
                  |    ВременаяВыручка.Серия КАК Серия,
                  |    ВЫБОР
                  |        КОГДА ВременнаяИтог.СтатьяКалькуляции ЕСТЬ NULL
                  |            ТОГДА &СтатьяКалькуляции
                  |        ИНАЧЕ ВременнаяИтог.СтатьяКалькуляции
                  |    КОНЕЦ КАК СтатьяКалькуляции,
                  |    Выпуск.Количество КАК КоличествоВыпуск,
                  |    ВременаяВыручка.КоличествоВыручка КАК КоличествоВыручка,
                  |    ВременаяВыручка.СуммаВыручки КАК СуммаВыручки,
                  |    ВременаяВыручка.ЦенаВыручки КАК ЦенаВыручки,
                  |    ВременаяВыручка.СебестоимостьРеал КАК СебестоимостьРеал,
                  |    ВЫБОР
                  |        КОГДА ВременнаяИтог.СтатьяКалькуляции ЕСТЬ NULL
                  |            ТОГДА ВременаяВыручка.СебестоимостьРеал
                  |        ИНАЧЕ ВременнаяИтог.СтоимостьЗатрат
                  |    КОНЕЦ КАК СтоимостьЗатратОбщая,
                  |    ВЫБОР
                  |        КОГДА Выпуск.Количество = 0
                  |            ТОГДА 0
                  |        ИНАЧЕ ВЫБОР
                  |                КОГДА ВременнаяИтог.СтатьяКалькуляции ЕСТЬ NULL
                  |                    ТОГДА ВременаяВыручка.СебестоимостьРеал
                  |                ИНАЧЕ ВЫБОР
                  |                        КОГДА Выпуск.Количество = 0
                  |                            ТОГДА 0
                  |                        ИНАЧЕ ВременнаяИтог.СтоимостьЗатрат / Выпуск.Количество * ВременаяВыручка.КоличествоВыручка
                  |                    КОНЕЦ
                  |            КОНЕЦ
                  |    КОНЕЦ КАК СтоимостьЗатрат,
                  |    ВЫБОР
                  |        КОГДА Выпуск.Количество = 0
                  |            ТОГДА 0
                  |        ИНАЧЕ ВЫБОР
                  |                КОГДА ВременнаяИтог.СтатьяКалькуляции ЕСТЬ NULL
                  |                    ТОГДА ВЫБОР
                  |                            КОГДА ВременаяВыручка.КоличествоВыручка = 0
                  |                                ТОГДА 0
                  |                            ИНАЧЕ ВременаяВыручка.СебестоимостьРеал / ВременаяВыручка.КоличествоВыручка
                  |                        КОНЕЦ
                  |                ИНАЧЕ ВЫБОР
                  |                        КОГДА Выпуск.Количество = 0
                  |                            ТОГДА 0
                  |                        ИНАЧЕ ВременнаяИтог.СтоимостьЗатрат / Выпуск.Количество
                  |                    КОНЕЦ
                  |            КОНЕЦ
                  |    КОНЕЦ КАК СтоимостьНаЕдиницу,
                  |    ВременаяВыручкаОбщая.КоличествоВыручкаОбщая КАК КоличествоВыручкаОбщая,
                  |    ВременаяВыручкаОбщая.СуммаВыручкиОбщая КАК СуммаВыручкиОбщая
                  |ИЗ
                  |    ВременаяВыручка КАК ВременаяВыручка
                  |        ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяИтог КАК ВременнаяИтог
                  |        ПО ВременаяВыручка.Номенклатура = ВременнаяИтог.Продукция
                  |            И ВременаяВыручка.Серия = ВременнаяИтог.СерияПродукции
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыпускПродукции КАК Выпуск
                  |        ПО ВременаяВыручка.Организация = Выпуск.Организация
                  |            И ВременаяВыручка.Номенклатура = Выпуск.АналитикаУчетаНоменклатуры.Номенклатура
                  |            И ВременаяВыручка.Серия = Выпуск.АналитикаУчетаНоменклатуры.Серия
                  |        ЛЕВОЕ СОЕДИНЕНИЕ ВременаяВыручкаОбщая КАК ВременаяВыручкаОбщая
                  |        ПО ВременаяВыручка.Организация = ВременаяВыручкаОбщая.Организация
                  |            И ВременаяВыручка.Номенклатура = ВременаяВыручкаОбщая.Номенклатура";
11 VoditelKobyly
 
27.05.22
12:28
(9) по условию задачи нужно получить данные из запроса.
Ответ в (7). С одного запроса приходит одна запись , со второго остальные.
12 first_may
 
27.05.22
12:35
(11)

2. Вместо соединения в запросе делать соединения в наборах данных. Тогда суммирование нормально отработают (в Хрусталёвой по СКД там вроде целая подглавка была про это дело).

получается мой запрос разбить на наборы данных
ВременаяВыручка
ВременнаяИтог
РегистрНакопления.ВыпускПродукции
ВременаяВыручкаОбщая

и делать в скж на вкладвке Связи наборов данных

?
13 VoditelKobyly
 
27.05.22
12:38
(12) Если это приемлемо, то Да.
В зависимости от ресурсов, можно отделить часть запроса.
14 DimVad
 
27.05.22
12:42
(11) Я не спорю. Так идти можно. Но только в строчке где выпуск 42 там сумма выручки 4 миллиона. А где 142 - там 0.
Если завтра понадобится добавить вычисляемые поля - всё накроется медным тазом :-)

Я бы посмотрел не устроят ли меня "максимумы" вместо "суммы" по отдельным столбцам, а если нет - делал бы так, как прописано у Хрусталёвой.

А вообще в СКД можно задавать весьма интересные алгоритмы суммирования по столбцам. Там есть функции интересные всякие в стиле "берём максимум по такой группировке и сумма по такой...". Там целая песня.

А разделение на наборы данных с другой стороны позволяют разорвать запрос на части и упрощать его.

Короче, [s]повор[/s] программист сам выбирает рецепт. Много их.
15 first_may
 
27.05.22
12:48
Я пробовал вот так https://disk.yandex.ru/i/6Hi3CT5TVieG_w

но результат иногда правильный, а иногда нет
16 DimVad
 
27.05.22
12:53
(15) Я так с ходу не скажу. Но вот попробуйте сделать копию своего отчета и там запрос разорвите на два источника данных. Вы увидите как чудно просто СКД поймёт где надо суммировать а где - нет :-)
17 first_may
 
30.05.22
11:56
Спасибо всем..

Сделал как советовали

2. Вместо соединения в запросе делать соединения в наборах данных. Тогда суммирование нормально отработают (в Хрусталёвой по СКД там вроде целая подглавка была про это дело).



Даже запросы не трогал, просто сделал два набора с одним запросом,
а связал на второй закладке СКД


СПАСИБО ВСЕМ!