Помогите составить (изменить) запрос

1. Shecurok 09.02.21 10:48 Сейчас в теме
Всем добрый день. Необходимо для одного отчета изменить запрос чтоб он выводил еще одно дополнительное поле. Процент продаж от общего кол-во продаж.

Т.е. мне надо поле Сумма разделить на поле СУММА(сумма) из ИТОГОВ.

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

Но как работать с временными таблицами вообще не пойму.

ПостроительОтчетаОтчет.Текст =
    "ВЫБРАТЬ
    |    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))
    |ИТОГИ
    |    СУММА(Количество),
    |    СУММА(Сумма),
    |    СРЕДНЕЕ(Цена),
    |    СУММА(ПрибыльРуб),
    |    СРЕДНЕЕ(ПрибыльПроцц),
    |    СРЕДНЕЕ(ЦенаСебест),
    |    СУММА(СуммаСебест)
    |ПО
    |    ОБЩИЕ,
    |    Номенклатура,
    |    Контрагент,
    |    ДоговорКонтрагента,
    |    Регистратор";
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
16. marshalbratsk 11.02.21 16:00 Сейчас в теме +1 $m
(15)
Попробуй так

ВЫБРАТЬ
	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)) КАК СуммаСебест,
	СУММА(ВЫБОР
			КОГДА AllSales.Сумма = 0
				ТОГДА 0
			ИНАЧЕ ВЫРАЗИТЬ(Sales.Сумма / AllSales.Сумма * 100 КАК ЧИСЛО(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.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК Сумма
		ИЗ
			РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПер, &КонПер, Регистратор, , , СчетКт = &Сч9001, , Организация = &Организация) КАК ХозрасчетныйОборотыДтКт) КАК AllSales
		ПО (ИСТИНА)

СГРУППИРОВАТЬ ПО
	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))
ИТОГИ
	СУММА(Количество),
	СУММА(Сумма),
	СРЕДНЕЕ(Цена),
	СУММА(ПрибыльРуб),
	СРЕДНЕЕ(ПрибыльПроцц),
	СРЕДНЕЕ(ЦенаСебест),
	СУММА(СуммаСебест)
ПО
	ОБЩИЕ,
	Номенклатура,
	Контрагент,
	ДоговорКонтрагента,
	Регистратор
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. SerVer1C 760 09.02.21 11:00 Сейчас в теме
(1) Берете данный запрос без секции ИТОГО, помещаете его во временную таблицу, затем делаете выборку из этой ВТ и левым соединением присоединяете ЕЁ же, но с группировками из вашей секции ИТОГО, со связями по полям из секции ИТОГО, добавляете новое ПОЛЕ = ВТ.Сумма / <ИмяСгруппированнойВТ>.Сумма. Как-то так.
7. Shecurok 09.02.21 11:26 Сейчас в теме
(5) не могли бы прмерно показать что делается после помещения запрса в первую вт. Как там потом идет
Левое СОЕДИНЕНИЕ
"тот же запрос". но как написать группировки из секции ИТОГО? И связи... Или всё это в конструкторе делать?
8. SerVer1C 760 09.02.21 11:27 Сейчас в теме
(7)
 ВЫБРАТЬ
ВТ.*,
ВТ.Сумма / ИмяСгруппированнойВТ.Сумма
ИЗ ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ (
  ВЫБРАТЬ
  ВТ.Номенклатура,
  ВТ.Контрагент,
  ВТ.ДоговорКонтрагента,
  ВТ.Регистратор,
  СУММА(ВТ.Сумма) КАК Сумма
  ИЗ ВТ КАК ВТ
  СГРУППИРОВАТЬ ПО
  Номенклатура,
  Контрагент,
  ДоговорКонтрагента,
  Регистратор
) КАК ИмяСгруппированнойВТ
ПО 
  ВТ.Номенклатура = ИмяСгруппированнойВТ.Номенклатура
  И ВТ.Контрагент = ИмяСгруппированнойВТ.Контрагент
  И ВТ.ДоговорКонтрагента = ИмяСгруппированнойВТ.ДоговорКонтрагента
  И ВТ.Регистратор = ИмяСгруппированнойВТ.Регистратор
Показать

//здесь ваша секция ИТОГИ
9. Shecurok 09.02.21 12:03 Сейчас в теме
(8) Cпасибо большое. Появляется какая-то синтаксическая ошбка на строке ПОМЕСТИТЬ ВТ1
"ВЫБРАТЬ
	|	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)) КАК СуммаСебест
	//|	Sales.Сумма / СУММА(Sales.Сумма) КАК процпродаж
	|ИЗ
	|	(ВЫБРАТЬ
	|		ХозрасчетныйОборотыДтКт.СубконтоКт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;
	|ВЫБРАТЬ
	|	ВТ1.Sales.Номенклатура КАК Номенклатура,
	|	ВТ1.Sales.Контрагент КАК Контрагент,
	|	ВТ1.Sales.ДоговорКонтрагента КАК ДоговорКонтрагента,
	|	ВТ1.СУММА(Sales.Количество) КАК Количество,
	|	ВТ1.СУММА(Sales.Сумма) КАК Сумма,
	|	ВТ1.СРЕДНЕЕ(Sales.Цена) КАК Цена,
	|   ВТ1.Sales.Регистратор КАК Регистратор,
	|	ВТ1.ВЫРАЗИТЬ(Sales.Сумма - Sales.Количество * PrimeCost.ЦенаСебест КАК ЧИСЛО(15, 2)) КАК ПрибыльРуб,
	|	ВЫБОР
	|		КОГДА Sales.Количество * PrimeCost.ЦенаСебест = 0
	|			ТОГДА 0
	|		ИНАЧЕ ВЫРАЗИТЬ(Sales.Сумма * 100 / (Sales.Количество * PrimeCost.ЦенаСебест) - 100 КАК ЧИСЛО(15, 2))
	|	КОНЕЦ КАК ПрибыльПроцц,
	|	ВТ1.PrimeCost.ЦенаСебест КАК ЦенаСебест,
	|	ВТ1.ВЫРАЗИТЬ(Sales.Количество * PrimeCost.ЦенаСебест КАК ЧИСЛО(15, 2)) КАК СуммаСебест,
	|   ВТ.Сумма / ВТ1.Сумма КАК ПроцОтПродаж
	|ИЗ ВТ1 КАК ВТ2
	|   СГРУППИРОВАТЬ ПО
	|   Номенклатура,
	|   Контрагент,
	|   ДоговорКонтрагента,
	|   Регистратор
	|   ) КАК ВТ2
	|   ПО
	|   ВТ.Номенклатура = ВТ2.Номенклатура
	|   И ВТ.Контрагент = ВТ2.Контрагент
	|   И ВТ.ДоговорКонтрагента = ВТ2.ДоговорКонтрагента
	|   И ВТ.Регистратор = ВТ2.Регистратор
	|ИТОГИ
	|	СУММА(Количество),
	|	СУММА(Сумма),
	|	СРЕДНЕЕ(Цена),
	|	СУММА(ПрибыльРуб),
	|	СРЕДНЕЕ(ПрибыльПроцц),
	|	СРЕДНЕЕ(ЦенаСебест),
	|	СУММА(СуммаСебест),
	|	СУММА(процпродаж)
	|ПО
	|	ОБЩИЕ,
	|	Номенклатура,
	|	Контрагент,
	|	ДоговорКонтрагента,
	|	Регистратор";
Показать


Это весь запрос который появился.
10. SerVer1C 760 09.02.21 14:16 Сейчас в теме
(9)
Появляется какая-то синтаксическая ошбка на строке ПОМЕСТИТЬ ВТ1

конструкцию ПОМЕСТИТЬ надо располагать перед оператором ИЗ
2. N0t_F0und 10 09.02.21 10:51 Сейчас в теме
А в СКД всё это поместить?
4. SlavaKron 09.02.21 10:57 Сейчас в теме
Да, в СКД бы решение красивее получилось через пользовательское поле.
6. Shecurok 09.02.21 11:23 Сейчас в теме
(4) в скд почему то данный запрос не выводит ничего
11. ambabas 09.02.21 17:21 Сейчас в теме
(6) А для СКД вроде итоги не нужны, она их по другому считает.
12. user791332 11.02.21 10:01 Сейчас в теме
Добрый день, попробуйте через пользовательское поле в СКД.

https://wampi.ru/image/R4lzLCw
Прикрепленные файлы:
СлучайноеЧисло.erf
13. marshalbratsk 11.02.21 15:24 Сейчас в теме
На сумму из каких итогов делиться должно? Из общих?
14. Shecurok 11.02.21 15:52 Сейчас в теме
(13) на сумму из общих итогов, да. Т.е на СУММА после Итоги
15. Shecurok 11.02.21 15:54 Сейчас в теме
(13) Есть столбнц сумма. В итогах считается общая сумма по этой колонке. И вот на это значение надо разделить.
16. marshalbratsk 11.02.21 16:00 Сейчас в теме +1 $m
(15)
Попробуй так

ВЫБРАТЬ
	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)) КАК СуммаСебест,
	СУММА(ВЫБОР
			КОГДА AllSales.Сумма = 0
				ТОГДА 0
			ИНАЧЕ ВЫРАЗИТЬ(Sales.Сумма / AllSales.Сумма * 100 КАК ЧИСЛО(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.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК Сумма
		ИЗ
			РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачПер, &КонПер, Регистратор, , , СчетКт = &Сч9001, , Организация = &Организация) КАК ХозрасчетныйОборотыДтКт) КАК AllSales
		ПО (ИСТИНА)

СГРУППИРОВАТЬ ПО
	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))
ИТОГИ
	СУММА(Количество),
	СУММА(Сумма),
	СРЕДНЕЕ(Цена),
	СУММА(ПрибыльРуб),
	СРЕДНЕЕ(ПрибыльПроцц),
	СРЕДНЕЕ(ЦенаСебест),
	СУММА(СуммаСебест)
ПО
	ОБЩИЕ,
	Номенклатура,
	Контрагент,
	ДоговорКонтрагента,
	Регистратор
Показать
17. Shecurok 11.02.21 16:34 Сейчас в теме
(16) Слушайте, похоже, что оно. Спасибо огромное, sm заслужили точно.
22. marshalbratsk 11.02.21 16:52 Сейчас в теме
(17) проверьте только корректность, вроде всё ок должно быть, но лучше проверить
18. Shecurok 11.02.21 16:35 Сейчас в теме
(16) я так понимаю поле процент продаж добавили?
19. Shecurok 11.02.21 16:42 Сейчас в теме
(16) нагло конечно наверное, но спрошу здесь чтоб не флудить.
Есть простейший запрос

"ВЫБРАТЬ
	|	Контрагенты.ОсновнойВидДеятельности,
	|	Контрагенты.Код
	|ИЗ
	|	Справочник.Контрагенты КАК Контрагенты";
	|ГДЕ
	|   ОсновнойВидДеятельности.Код = ""УТ0000001"" КАК КодДеят = ""R""
	|   ОсновнойВидДеятельности.Код = ""УТ0000002"" КАК КодДеят = ""BC""";	


Можно ли как то запросе указать значение КодДеят?
Пробовал немного по другому, обрабатывать после

ВДЗ = РезультатЗапроса.Выбрать();
	
	Если ВДЗ.ОсновнойВидДеятельности.НайтиПоКоду ("УТ0000001")
		Тогда КодДеят = "BC"
	Иначе КодДеят = "R"
	КонецЕсли;	


Ноо пишет НайтиПоКоду значение не является значением объектного типа (найти по коду). Как можно разделить тут это?
20. Shecurok 11.02.21 16:48 Сейчас в теме
(19) ну этот запрос ест не работает (после где я удалил уже)
21. Shecurok 11.02.21 16:51 Сейчас в теме
(19)во втором случае (если обработка резульата после запроса) выводит везде R
23. marshalbratsk 11.02.21 16:57 Сейчас в теме
ВЫБРАТЬ
    |    ВЫБОР КОГДА Контрагенты.ОсновнойВидДеятельности.Код = ""УТ0000001"" ТОГДА ""R""
   | КОГДА Контрагенты.ОсновнойВидДеятельности.Код = ""УТ0000002"" ТОГДА ""BC""
  | ИНАЧЕ """" КОНЕЦ,
    |    Контрагенты.Код
    |ИЗ
    |    Справочник.Контрагенты КАК Контрагенты";
    |ГДЕ
    |   Контрагенты.ОсновнойВидДеятельности.Код В (""УТ0000001"", ""УТ0000002"");  

Показать

ВДЗ.ОсновнойВидДеятельности.НайтиПоКоду ("УТ0000001") работать не будет,

условие надо ВДЗ.ОсновнойВидДеятельности = Справочники.(имя справочника с видами деятельности).НайтиПоКоду("УТ0000001")
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот