Среднее и сумма в одной колонке СКД

Клиенту нужно было, чтобы в одной колонке для одной статьи (количество) считалась сумма, а для другой (средний чек) — среднее:

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

ВЫБОР КОГДА ПоказательТип = "Среднее" Тогда Среднее(Значение) ИНАЧЕ Сумма(Значение) КОНЕЦ

В структуре отчета это выглядит так:

Среднее считается правильно не только на уровне Показатель, но и ниже.

Код по заполнению таблицы выглядит примерно так:

	Для Каждого Период ИЗ глПериоды Цикл
		
		Дата1 = Период;	
		Дата2 = КонецМесяца(Период);
		
		ТЗ = КоличествоЧеков(Дата1, Дата2);
		Для Каждого Строка ИЗ ТЗ Цикл
			НСтр = ТЗРез.Добавить();
			НСтр.Показатель = "Количество чеков по разным группам клиентов (розница, опт, сайт)";
			НСтр.Период = Период;
			НСтр.Статья = Строка.ВидДокументаПродажи;
			НСтр.Значение = Строка.КоличествоДокументов;    
		КонецЦикла;
		Для Каждого Строка ИЗ ТЗ Цикл
			НСтр = ТЗРез.Добавить();
			НСтр.Показатель = "Средний чек по разным группам клиентов (розница, опт, сайт)";
			НСтр.ПоказательТип = "Среднее";
			НСтр.Период = Период;
			НСтр.Статья = Строка.ВидДокументаПродажи;
			НСтр.Значение = Строка.СредняяСумма;    
		КонецЦикла;
		
	КонецЦикла;

UPD: Мне заметили, что я неправильно считаю средний чек. Поправил:

		Для Каждого Строка ИЗ ТЗ Цикл
			НСтр = ТЗРез.Добавить();
			НСтр.Показатель = "Средний чек по разным группам клиентов (розница, опт, сайт)";
			НСтр.ПоказательТип = "СреднийЧек";
			Нстр.ЦветоваяГруппа= "Метрика";
			НСтр.Период = Период;
			НСтр.Статья = Строка.ВидДокументаПродажи;
			НСтр.Значение = Строка.СуммаДокументов;    
			НСтр.Значение2 = Строка.КоличествоДокументов;    
		КонецЦикла;

Заполняю два показателя и для вычисления ресурса использую другую формулу:

ВЫБОР КОГДА ПоказательТип = "СреднийЧек" Тогда 
	ВЫБОР КОГДА Сумма(Значение2) = 0 ТОГДА 0 ИНАЧЕ  Сумма(Значение) / Сумма(Значение2) КОНЕЦ
ИНАЧЕ Сумма(Значение) КОНЕЦ

Платформа: 8.3.17.2171 Среда: УТ 11.4.13.46. Объем 0.5 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 2

  1. rzd:

    Брать СРЕДНЕЕ для вычисления средней суммы/суммы/чека это зашквар конечно.
    Средний чек по трем этим группам чуть менее 7200, а у тебя 11156. Учи арифметику и статистику

    • Спасибо за замечание. проверю.
      Но суть статьи не об этом, она о разных функциях в СКД. Это важно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *