Главная Статьи Обмен опытом Практика использования запросов в 1С 8. Универсальный XYZ-анализ данных
Практика использования запросов в 1С 8. Универсальный XYZ-анализ данных
29.11.2010 12:11

XYZ-анализ используется для классификации элементов выборки по регулярности их вхождения в эту выборку (http://ru.wikipedia.org/wiki/XYZ-анализ)

В отличии от ABC-анализа, выборка должна содержать не только данные интересующих нас показателей за определенный период, но еще и данные внутреннего периода, в котором зарегистрирован данный показатель. Примерами применения XYZ-анализа могут быть:

1. Классификация товаров (или брендов, или групп товаров) по регулярности величины их продаж (примерами такой величины могут служить количество событий продаж, количество единиц проданного либо сумма проданного);

2. Классификация клиентов по регулярности величины отношений (примерами величины отношений могут послужить количество контактов с клиентом, количество событий покупок, количество купленных единиц товара, сумма купленного товара);

3. Классификация товаров по регулярности присутствия их на товарных остатках

 

Механизмы XYZ-анализа входят в существующие на сегодня типовые решениях 1С. Более того, они являются одними из самых основных инструментов анализа эффективности торговой деятельности предприятия.

 

В статье обобщен накопленный опыт и описан универсальный подход, позволяющий использовать механиз запросов 1С для эффективного расчета XYZ-классов объектов в любой выборке.

 

Пример исходной таблицы для XYZ-анализа:

Номенклатура / период

06.10.2008

20.10.2008

27.10.2008

BOSCH морозильная камера

BOSCH холодильник

Ассорти (конфеты)

26,23

2,91

Барбарис (конфеты)

32,62

Батон горчичный нарезаный КХЗ №1

9,82

0,39

Батон нарезной КХЗ №1

8,52

Белочка (конфеты)

20,4

Бычок мороженый

141,17

Вентилятор BINATONE ALPINE 160вт, напольный ,

Вентилятор JIPONIC (Тайв.),

Вентилятор ОРБИТА,STERLING,ЯП.

Вобла Астраханская вяленая

145,46

Диван для отдыха

797,11

Метод состоит из двух основных этапов:

1) Организация выборки данных;

2) XYZ-анализ предоставленной выборки.

 

Начиная с версии 1С 8.1, язык запросов позволяет создавать пакетные запросы с использованием временных таблиц. Это существенно упрощает процесс обработки данных в нашем случае. Для примера приведем текст запроса, в котором анализируется выборка продаж за указанный период в разрезе договоров контрагентов (запрос может быть использован в конфигурации "Управление производственным предприятием для Украины", редакция 1.1")

"Управление производственным предприятием для Украины", редакция 1.1
Разработка конфигурации: "ABBYY Ukraine", 2005-2006 (1.1.5.6)

 


 

 

// Первая часть запроса - организация выборки данных

ВЫБРАТЬ

ПродажиОбороты.Номенклатура КАК Группировка,

ВЫРАЗИТЬ(ПродажиОбороты.Период КАК ДАТА) КАК Период,

СУММА(ПродажиОбороты.СтоимостьОборот) КАК ЗначениеПоказателя

ПОМЕСТИТЬ

ТаблицаВыборкиПоГруппировкамИПериодам

ИЗ

РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Неделя, ) КАК ПродажиОбороты

СГРУППИРОВАТЬ ПО

ПродажиОбороты.Номенклатура,

ПродажиОбороты.Период

;

 

// вторая часть запроса - XYZ - анализ выборки данных

ВЫБРАТЬ

ТаблицаВыборкиПоГруппировкам.Группировка КАК Группировка,

ТаблицаВыборкиПоГруппировкам.СуммаПоказателя КАК ЗначениеПоказателя,

 

ВЫБОР КОГДА ТаблицаВыборкиПоГруппировкам.СуммаПоказателя <> 0

ТОГДА СУММА(

(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя)

*(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя))

/ ТаблицаВыборкиПоГруппировкам.СуммаПоказателя / ТаблицаВыборкиПоГруппировкам.СуммаПоказателя

ИНАЧЕ 1

КОНЕЦ КАК Коэффициент,

 

ВЫБОР КОГДА ТаблицаВыборкиПоГруппировкам.СуммаПоказателя <> 0

ТОГДА ВЫБОР КОГДА СУММА(

(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя)

*(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя))

/ ТаблицаВыборкиПоГруппировкам.СуммаПоказателя / ТаблицаВыборкиПоГруппировкам.СуммаПоказателя < &ГраницаКлассаX * &ГраницаКлассаX / 10000

ТОГДА "XКласс"

КОГДА СУММА(

(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя)

*(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя))

/ ТаблицаВыборкиПоГруппировкам.СуммаПоказателя / ТаблицаВыборкиПоГруппировкам.СуммаПоказателя < &ГраницаКлассаY * &ГраницаКлассаY / 10000

ТОГДА "YКласс"

ИНАЧЕ "ZКласс"

КОНЕЦ

ИНАЧЕ "ZКласс"

КОНЕЦ КАК XYZ_класс

ИЗ

(ВЫБРАТЬ

ТаблицаВыборкиПоГруппировкамИПериодам.Группировка,

СУММА(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя) КАК СуммаПоказателя,

СУММА(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя) / ТаблицаКоличестваПериодов.КоличествоПериодов КАК СреднееЗначениеПоказателя

ИЗ

ТаблицаВыборкиПоГруппировкамИПериодам,

(ВЫБРАТЬ

КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Период) КАК КоличествоПериодов

ИЗ

ТаблицаВыборкиПоГруппировкамИПериодам

) КАК ТаблицаКоличестваПериодов

СГРУППИРОВАТЬ ПО

Группировка,

ТаблицаКоличестваПериодов.КоличествоПериодов

) КАК ТаблицаВыборкиПоГруппировкам

ЛЕВОЕ СОЕДИНЕНИЕ

ТаблицаВыборкиПоГруппировкамИПериодам

ПО

ТаблицаВыборкиПоГруппировкам.Группировка = ТаблицаВыборкиПоГруппировкамИПериодам.Группировка

СГРУППИРОВАТЬ ПО

ТаблицаВыборкиПоГруппировкам.Группировка,

ТаблицаВыборкиПоГруппировкам.СуммаПоказателя,

ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя

УПОРЯДОЧИТЬ ПО

Коэффициент ВОЗР

;

УНИЧТОЖИТЬ

ТаблицаВыборкиПоГруппировкамИПериодам

 


 

Параметры запроса:

1. Дата1 - дата начала анализа

2. Дата2 - дата окончания анализа

3. ГраницаКлассаX  -  часть (в процентах, как правило, 15%) наиболее регулярного класса X

4. ГраницаКлассаY  -  часть (в процентах, как правило, 50%) среднего класса Y

 

Пример результата запроса по продажам товаров:

 

Группировка ЗначениеПоказателя Коэффициент XYZ_класс
Диван для отдыха 2 797,11 0,191008 XКласс
BOSCH холодильник 3 019,98 0,231542 XКласс
Ремонт дивана 51,46 0,34846 YКласс
Тарелки одноразовые 87,08 0,348729 YКласс
Дизайнерские работы 98,38 0,350885 YКласс
Рюмки одноразовые 50мл 178,51 0,358499 YКласс
Средство Bingo Super для посуды 1000г 39,11 0,392969 YКласс
Белочка (конфеты) 25,7 0,519829 YКласс
Фруктовые (вафли) 26,27 0,646672 ZКласс
Ассорти (конфеты) 29,14 0,667442 ZКласс
Кресло-качалка 909,24 0,764794 ZКласс
Батон горчичный нарезаный КХЗ №1 10,21 0,773745 ZКласс
Средство для мытья посуды Dax 500 г 193,74 0,781464 ZКласс
Батон нарезной КХЗ №1 8,63 0,822055 ZКласс
Средство для посуды Dosia 500мл 8,97 0,840278 ZКласс
Стол компьютерный СК-14 173,64 0,840278 ZКласс
Спальный гарнитур "Елена" 480,85 0,840278 ZКласс
Сигареты Karelia Slims 46,14 0,840278 ZКласс
Сигареты Gauloises Blondes Filter 50,16 0,840278 ZКласс
Сигареты Davidoff Lights 31,73 0,840278 ZКласс
Телевизор SAMSUNG CS-21 K 2 108,77 0,840278 ZКласс
Сигареты Chesterfield 18,26 0,840278 ZКласс
Сигареты Camel 12,1 0,840278 ZКласс
Сердечко (печенье) 15,59 0,840278 ZКласс
Толстолобик мороженый 137,75 0,840278 ZКласс
Компьютер 276,29 0,840278 ZКласс
Пылесос "Энергия-SANYO" 59,38 0,840278 ZКласс
Доставка до границы 70,02 0,840278 ZКласс
BOSCH морозильная камера 1 492,83 0,840278 ZКласс
Средство для мытья посуды Dosia + тарелки 2,97 0,840278 ZКласс
Средство для мытья посуды (Dosia + Dax) + тарелки 1,11 0,840278 ZКласс
Барбарис (конфеты) 32,62 0,840278 ZКласс
Бычок мороженый 141,17 0,840278 ZКласс
Вентилятор BINATONE ALPINE 160вт, напольный , 50,55 0,840278 ZКласс
Вентилятор JIPONIC (Тайв.), 108,88 0,840278 ZКласс
Вентилятор ОРБИТА,STERLING,ЯП. 1 292,28 0,840278 ZКласс
Вобла Астраханская вяленая 145,46 0,840278 ZКласс
Кондиционер ELEKTA 807,68 0,840278 ZКласс
Кондиционер FIRMSTAR 12М 715,04 0,840278 ZКласс
Кондиционер БК-2300 157,09 0,840278 ZКласс
Кухонный гарнитур "Тинга-2" 213,71 0,840278 ZКласс
Кухонный гарнитур "Тинга-У" 240,43 0,840278 ZКласс
Кухонный гарнитур "Тинга" 3 701,92 0,840278 ZКласс
Прихожая "Престиж-5У" 200,35 0,840278 ZКласс
Пылесос "Омега" 1250вт 135,98 0,840278 ZКласс
Пылесос "Электросила" 89,07 0,840278 ZКласс

 

Основным достоинством данного метода является его универсальность, ведь он работает с любой выборкой данных. Кроме того, благодаря использованию механизма запросов, существенно повышена производительность работы с большими объемами данных (более чем в 10 раз по сравнению с традиционными алгоритмами обработки, использующими таблицы значений). Для анализа различных показателей остается лишь правильно организовать входящую выборку.


Примеры организации выборок:

1. Выборка продаж в разрезе товарной номенклатуры по неделям:

 

ВЫБРАТЬ

ПродажиОбороты.Номенклатура КАК Группировка,

ВЫРАЗИТЬ(ПродажиОбороты.Период КАК ДАТА) КАК Период,

СУММА(ПродажиОбороты.СтоимостьОборот) КАК ЗначениеПоказателя

ПОМЕСТИТЬ

ТаблицаВыборкиПоГруппировкамИПериодам

ИЗ

РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Неделя, ) КАК ПродажиОбороты

СГРУППИРОВАТЬ ПО

ПродажиОбороты.Номенклатура,

ПродажиОбороты.Период

 

 

2. Выборка продаж по неделям в разрезе клиентов:

 

ВЫБРАТЬ

ПродажиОбороты.ДоговорКонтрагента.Владелец КАК Группировка,

ПродажиОбороты.Период КАК Период,

СУММА(ПродажиОбороты.СтоимостьОборот) КАК ЗначениеПоказателя

ПОМЕСТИТЬ

ТаблицаВыборкиПоГруппировкамИПериодам

ИЗ

РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Неделя, ) КАК ПродажиОбороты

ГДЕ

НЕ ПродажиОбороты.ДоговорКонтрагента.Владелец ЕСТЬ NULL

СГРУППИРОВАТЬ ПО

ПродажиОбороты.ДоговорКонтрагента,

ПродажиОбороты.Период

 

 


Прокопенко Константин Игоревич

 

Направление бизнес-приложений
Руководитель сектора управленческого учета
ЗАТ "Спец-інвест"

 

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


Защитный код
Обновить

 

     

   
тел. : (044) 200-02-74 © «ООО "Спец-инвест"» 2009
Все права защищены. При полном или частичном использовании материалов сайта активная ссылка на spec-i.com.ua обязательна!
e-mail: 1С@spec-i.com.ua