Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как в запросе добавить поле с делением на поле итогов?

Как в запросе добавить поле с делением на поле итогов?
Я
   Shecurok
 
31.01.21 - 23:02
Всем доброй ночи уже.

Есть запрос который выводит отчет и в отчет поля попадают соотстветсенно из него, вот он:

ПостроительОтчетаОтчет.Текст =
    "ВЫБРАТЬ
    |    Sales.Номенклатура КАК Номенклатура,
    |    Sales.Контрагент КАК Контрагент,
    |    Sales.ДоговорКонтрагента КАК ДоговорКонтрагента,
    |    СУММА(Sales.Количество) КАК Количество,
    |    СУММА(Sales.Сумма) КАК Сумма,
    |    СРЕДНЕЕ(Sales.Цена) КАК Цена,
    |    Sales.Регистратор КАК Регистратор,
    |    ВЫРАЗИТЬ(Sales.Сумма - Sales.Количество * PrimeCost.ЦенаСебест КАК ЧИСЛО(15, 2)) КАК ПрибыльРуб,
    |    ВЫБОР
    |        КОГДА Sales.Количество * PrimeCost.ЦенаСебест = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВЫРАЗИТЬ(Sales.Сумма * 100 / (Sales.Количество * PrimeCost.ЦенаСебест) - 100 КАК ЧИСЛО(15, 2))
    |    КОНЕЦ КАК ПрибыльПроцц,
    |    PrimeCost.ЦенаСебест КАК ЦенаСебест,
    |    ВЫРАЗИТЬ(Sales.Количество * PrimeCost.ЦенаСебест КАК ЧИСЛО(15, 2)) КАК СуммаСебест
    |ИЗ
    |    (ВЫБРАТЬ
    |        ХозрасчетныйОборотыДтКт.СубконтоКт3 КАК Номенклатура,
    |        ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК Контрагент,
    |        ХозрасчетныйОборотыДтКт.СубконтоДт2 КАК ДоговорКонтрагента,
    |        ХозрасчетныйОборотыДтКт.КоличествоОборотКт КАК Количество,
    |        ХозрасчетныйОборотыДтКт.СуммаОборот КАК Сумма,
    |        ВЫБОР
    |            КОГДА ХозрасчетныйОборотыДтКт.КоличествоОборотКт = 0
    |                ТОГДА 0
    |            ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0) / ХозрасчетныйОборотыДтКт.КоличествоОборотКт КАК ЧИСЛО(15, 2))
    |        КОНЕЦ КАК Цена,
    |        ХозрасчетныйОборотыДтКт.Регистратор КАК Регистратор
    |    ИЗ
    |        РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПер, &КонПер, Регистратор, , , СчетКт = &Сч9001, , Организация = &Организация) КАК ХозрасчетныйОборотыДтКт) КАК Sales
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            ХозрасчетныйОборотыДтКт.КоличествоОборотКт КАК Количество,
    |            ХозрасчетныйОборотыДтКт.СуммаОборот КАК Сумма,
    |            ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Номенклатура,
    |            ВЫБОР
    |                КОГДА ХозрасчетныйОборотыДтКт.КоличествоОборотКт = 0
    |                    ТОГДА 0
    |                ИНАЧЕ ХозрасчетныйОборотыДтКт.СуммаОборот / ХозрасчетныйОборотыДтКт.КоличествоОборотКт
    |            КОНЕЦ КАК ЦенаСебест
    |        ИЗ
    |            РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
    |                    &НачПер,
    |                    &КонПер,
    |                    Период,
    |                    СчетДт = &Сч9002
    |                        ИЛИ СчетДт = &Сч9102,
    |                    ,
    |                    СчетКт = &Сч43
    |                        ИЛИ СчетКт = &Сч4101
    |                        ИЛИ СчетКт = &Сч4104
    |                        ИЛИ СчетКт = &Сч10,
    |                    ,
    |                    Организация = &Организация) КАК ХозрасчетныйОборотыДтКт) КАК PrimeCost
    |        ПО Sales.Номенклатура = PrimeCost.Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    |    Sales.Номенклатура,
    |    Sales.Контрагент,
    |    Sales.ДоговорКонтрагента,
    |    Sales.Регистратор,
    |    PrimeCost.ЦенаСебест,
    |    ВЫРАЗИТЬ(Sales.Сумма - Sales.Количество * PrimeCost.ЦенаСебест КАК ЧИСЛО(15, 2)),
    |    ВЫБОР
    |        КОГДА Sales.Количество * PrimeCost.ЦенаСебест = 0
    |            ТОГДА 0
    |        ИНАЧЕ ВЫРАЗИТЬ(Sales.Сумма * 100 / (Sales.Количество * PrimeCost.ЦенаСебест) - 100 КАК ЧИСЛО(15, 2))
    |    КОНЕЦ,
    |    ВЫРАЗИТЬ(Sales.Количество * PrimeCost.ЦенаСебест КАК ЧИСЛО(15, 2))
    |ИТОГИ
    |    СУММА(Количество),
    |    СУММА(Сумма),
    |    СРЕДНЕЕ(Цена),
    |    СУММА(ПрибыльРуб),
    |    СРЕДНЕЕ(ПрибыльПроцц),
    |    СРЕДНЕЕ(ЦенаСебест),
    |    СУММА(СуммаСебест)
    |ПО
    |    ОБЩИЕ,
    |    Номенклатура,
    |    Контрагент,
    |    ДоговорКонтрагента,
    |    Регистратор";

Мне необходимо в него добавить поле ПроцентОтОбщихПродаж.

Т.е. мне надо поле Сумма (СУММА(Sales.Сумма) КАК Сумма) разделить на поле из Итогов (СУММА(Сумма)).
Это вообще возможно сделать в запросе?
   Ёпрст
 
1 - 31.01.21 - 23:09
И не лень расскладку переключать ? Пишите или всё по-русски, или всё по-английски..Суржик, как--то не очень
   Ёпрст
 
2 - 31.01.21 - 23:12
группировки забавные, в части числовых показателей.. еще и итоги потом
   Shecurok
 
3 - 31.01.21 - 23:13
(2) да не я писал запрос) я думаю если бы я смог написать что-то подобное и вопрос бы смог сам рещить)
   Ёпрст
 
4 - 31.01.21 - 23:24
(3) Ну так пиши сам с нуля, делов то..
А то группировать по ВЫРАЗИТЬ(Sales.Количество * PrimeCost.ЦенаСебест КАК ЧИСЛО(15, 2)) и потом еще ИТОГИ.. ну такое.
   Cthulhu
 
5 - 01.02.21 - 00:17
а если ты сохранишь тот запрос в вт, в которой это будут не итоги, а обычные поля - ты сможешь в дополнение к выборке их этой вт всего что нужно - еще этим "уже по "полям вычислить что тебе нужно?..
   Shecurok
 
6 - 01.02.21 - 10:23
(5) т.е. вывести итоги в вт?
   ASU_Diamond
 
7 - 01.02.21 - 10:34
(0) в запросе через дополнительную ВТ, в которой хранить итоги. Можно в СКД прописать формулу.
   SiAl-chel
 
8 - 01.02.21 - 11:50
(6)
1. Собираешь запросом плоскую таблицу, пихаешь ее во временную таблицу №1
2. Из ВТ № 1 через нужные группировки, аналогочные итогам, собираешься временную таблицу № 2
3. Делаешь левое соединение 1-й и 2-й временных таблиц.
4. Делаешь поля, где выявляешь пропорции полей ВТ 1 к полям ВТ 2.
5. Итоги накладываешь на ВТ 1.
   Shecurok
 
9 - 01.02.21 - 12:25
(8) ммм, не, такое мне точно не осилить
   DrShad
 
10 - 01.02.21 - 12:37
(9) так по-другому в запросе не сделать
   SiAl-chel
 
11 - 01.02.21 - 12:44
(9) Осилишь. Не сразу, но осилишь. "Не боги горшки обжигают".

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.