gifts2017

Скорость продаж и оборачиваемость за период для УТ 11

Опубликовал Андрей Зидорофф (yc_2011) в раздел Отчеты - Управленческие

Отчет для типовой конфигурации "Управление торговлей" 11.х. Выводит дни наличия и отсутствия, остатки на начало, конец периода и средние, продажи, приход, расход, скорость продаж, оборачиваемость товаров за период и оборачиваемость на конец периода.

Алгоритм расчета.

1. Количество дней на остатке - сумма наличия товара. По каждому дню проверяем наличие товара на остатке. Если позиция была на начало дня и на конец дня (остаток >0), то наличие = 1. Если позиция на начало дня > 0, но на конец дня = 0 или на начало дня = 0 и на конец дня > 0, то наличие в этот день равно 1/2. Если позиция отсутствовала на начало дня и на конец дня, то наличие = 0.

2. Средний остаток в периоде. Суммируется остатки товара на начало дня и конец дня по каждому дню из выбранного периода. Получившаяся сумма делится на (2*количество дней в периоде);

3. Скорость продаж = Продажи за период / Количество дней на остатке.

4. Средняя оборачиваемость = Средний остаток в периоде / (продажи за период / количество дней в периоде).

5. Оборачиваемость на конец периода = остаток на конец периода / (продажи за период / количество дней в периоде). 

6.  Если продаж за период нет, то оборачиваемость бесконечна, но подстановка числа типа 9999 засоряет отчет и дает большие значения для групп, поэтому в этом случае устанавливается в 0.

Решения для повышения производительности.

1. Количество дней на остатке и Средний остаток в периоде рассчитываются не за каждый день, а периодами с одинаковыми остатками.

2.  Применяются временные таблицы. Конструкция ВЫБРАТЬ РАЗРЕШЕННЫЕ используется только в одном запросе к регистрам продаж и остатков. Временные таблицы удаляются по мере их использования.

Сравнение с другими решениями.

Из похожих решений был найден отчет "АнализОборачиваемости_УТ11.erf". Выражаю благодарность автору этого отчета за метод получения периодов с одинаковыми остатками и условное оформление (сортировка идет по убыванию скрости продаж, причем, если остаток на конец периода = 0, то строка выделяется красным). Настроенный в отчете вариант "Горизонтальная группировка" оформлен именно так. Однако этот отчет дает неверные значения по средним остаткам и совсем неправильные в случае отсутствия остатков на начало и / или конец периода.

Отличия:

1. Учитываются случаи отсутствия товара на границах периода.

2. Можно выводить все позиции и только проданные за период (параметр "Вывести позиции").

3. Существенно повышена скорость выполнения.

Прочее.

1. Отчет тестировался на УТ 11.1.5 и 11.1.9.

2. Для установки отборов/группировок по сериям, характеристикам и т.д. следует подключить регистры сведений АналитикаУчетаНоменклатуры, "НоменклатураСегмента" (см. любой товарный отчет УТ 11).

3. Имея средний остаток, можно вычислить коэффициент уходимости, время "жизни на полке" и прочие маркетингово-логистические показатели. 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Оборачиваемость товаров
.erf 9,72Kb
18.10.14
111
.erf 9,72Kb 111 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Константин Юрин (kostyaomsk) 19.10.14 09:26
Довольно интересная идея для снабженцев. Вопросы сразу:
1. Что означает блеклость строк отчета?
2. Алгоритм расчета колонок "1" и "2" пишите
если позиция на начало дня > 0, но на конец дня = 0 или на начало дня = 0 и на конец дня > 0, то наличие в этот день равно 1/2.

И что делать если в течение дня происходит периодическое пополнение товара по стратегии "с нуля до максимума, до нуля и опять до максимума"?
Прикрепленные файлы:
2. Андрей Зидорофф (yc_2011) 19.10.14 10:12
1. Блеклость строк - условное оформление. Если товары продавались, то строки зеленые, Если продавались и остаток на конец периода = 0, то строки красные.
2. Периодичность расчета средних остатков день, т.е. остатки среднедневные. В Вашем случае средний остаток будет 0.5 максимума. При такой интенсивности продаж надо внутри дня детализировать до регистратора. Никто пока такой задачи не ставил..
3. Андрей Зидорофф (yc_2011) 19.10.14 10:17
(1) kostyaomsk, Или, глядя в отчет, увеличить количество энного товара в товарной матрице. Отчет как раз и сделан для корректировки товарной матрицы.
4. Артем Нарожний (empafe) 02.03.15 17:28
Ошибка загрузки документа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data-composition-system/settings}useInHierarchicalGroup Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
5. Андрей Зидорофф (yc_2011) 23.03.15 14:05
Наверное, платформа не понимает тип "ЗначениеПараметраНастроекКомпоновкиДанных". Или обновитесь до 8.3.5, или закомментируйте все в модуле отчета - там "защита от дурака".
6. Владимир Насыров (Spacer) 14.04.16 17:46
Как то оно неправильно количество дней на остатке считает...
У меня период с 1-го по 14-е число.
С 1-го по 5-е остатки на начало и конец - 2.
6-го числа на начало 2, на конец - 1.
с 7-го по 10-е на начало 1, на конец - 1,
11-го числа на начало 1, на конец - 0.
По идее количество дней остатка должно быть 10,5.
А в отчете дает 11,5.
7. Андрей Зидорофф (yc_2011) 15.04.16 12:40
(6) Spacer, Да, получается 10.5. Отлаживал на тестовой базе. Там есть запрос по вычислению периода, в зависимости от выбранного регистра (1 или 2) дает разные цифры.
Вообще, это надо было сделать на вычисляемых полях... Попробуйте в консоли запросов выполнить
ВЫБРАТЬ
	ТоварыНаСкладахОстаткиИОбороты1.Склад КАК Склад,
	ТоварыНаСкладахОстаткиИОбороты1.Номенклатура КАК Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты1.ВНаличииНачальныйОстаток КАК КоличествоНачальныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты1.ВНаличииКонечныйОстаток КАК КоличествоКонечныйОстаток,
	НАЧАЛОПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты1.Период, ДЕНЬ) КАК День,
	МАКСИМУМ(НАЧАЛОПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты2.Период, ДЕНЬ)) КАК ПредыдущийДень

ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК ТоварыНаСкладахОстаткиИОбороты1
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК ТоварыНаСкладахОстаткиИОбороты2
		ПО (ТоварыНаСкладахОстаткиИОбороты1.Период > ТоварыНаСкладахОстаткиИОбороты2.Период)
			И (ТоварыНаСкладахОстаткиИОбороты1.Номенклатура = ТоварыНаСкладахОстаткиИОбороты2.Номенклатура)
			И (ТоварыНаСкладахОстаткиИОбороты1.Склад = ТоварыНаСкладахОстаткиИОбороты2.Склад)
ГДЕ
	ТоварыНаСкладахОстаткиИОбороты1.Склад = &Склад
	И ТоварыНаСкладахОстаткиИОбороты2.Склад = &Склад
	И ТоварыНаСкладахОстаткиИОбороты1.Номенклатура = &Номенклатура
	И ТоварыНаСкладахОстаткиИОбороты2.Номенклатура = &Номенклатура

СГРУППИРОВАТЬ ПО
	ТоварыНаСкладахОстаткиИОбороты1.Склад,
	ТоварыНаСкладахОстаткиИОбороты1.Номенклатура,
	НАЧАЛОПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты1.Период, ДЕНЬ),
	ТоварыНаСкладахОстаткиИОбороты1.ВНаличииНачальныйОстаток,
	ТоварыНаСкладахОстаткиИОбороты1.ВНаличииКонечныйОстаток

УПОРЯДОЧИТЬ ПО
	День
...Показать Скрыть
8. Irina Shuina (iren2405) 16.05.16 16:03
Данная обработка очень помогла, спасибо большое.
9. Андрей Зидорофф (yc_2011) 17.05.16 07:20
Не нашел комментарий "Здравствуйте, а данная обработка не может вычислять остатки отдельно для конкретной группы номенклатуры?"
Если отбор по группе номенклатуры, то на втором скане показаны настройки. Если но номенклатурной группе, то надо изменить запрос (у заказчика не было номенклатурных групп).
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа