[ОТВЕТИТЬ]
28.07.2014 12:26
Aligator
 
Просьба подсказать с построением отчета по кассирам в виде:
"кассир" "класификатор" "кол-во строк в чеках" "кол-во" "сумма продажных цен"
кассир 1 товарная группа 1
кассир 2 товарная группа 2
кассир 1 товарная группа 1
кассир 2 товарная группа 2

в бизнес анализе все что могу - на основе модели "кассовые чеки со спецификацией" создать отчет, где есть к примеру:

Проблемы у меня две:
как показать именно тот классификатор, который мне нужно, к примеру 1-я строчка классификатор ХХХ второго уровня вложенности в СМ+, 2-я строчка все остальные классификаторы , думаю над ассортиментами...но как показать созданные ассортименты в бизнес-анализе?
вторая проблема-это вывести в этот отчет кассиров, которые пробивали чек (кассиры заведены в супермаге тоже).

Есть кто мог бы помочь?
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1181.png
Просмотров: 870
Размер:	16.8 Кб
ID:	3807  
28.07.2014 13:36
svtl
 
по уровню вложенности. Можно использовать стандартные функции Супермаг.

supermag.Classifier.GETTREEPREFIX({Группа классификатора карточки. Путь}, 1) || supermag.Classifier.GETTITLEBYPATH(supermag.Classifier.GETTREEPREFIX({Группа классификатора карточки. Путь}, 1), 'sacardclass')
Т.е. собираем путь+группа как
путь = префикс пути с нужным кол-вом частей,
имя группы = имены группы полученного пути

1 здесь - для второго уровня вложенности (типа 1.1.), 2 - для третьего (типа 1.1.1.) и т.п.
Можно из формы запуска уровень как параметр передавать и его использовать в задаче - в результатах.
28.07.2014 13:57
svtl
 
а кассиры - таблица smcashdesksstaff. Или сразу в задаче выбирайте из параметров. Как-то так - см. приложение. (если я правильно условие задачи поняла)
Вложения
Тип файла: rar 123.rar (832 байт, 98 просмотров)
28.07.2014 14:02
Starter
 
А с кассирами в чем проблема ? в модели "кассовые чеки со спецификацией" кассиры есть (в отличии от модели "кассовые чеки со спецификацией за период").
28.07.2014 14:08
svtl
 
все верно. там вопрос походу был - как сгруппировать
28.07.2014 14:38
Starter
 
И еще вопрос к автору - как вести подсчет кол-ва строк в чеках ?
кол-во строк = реальное количество строк в чеках, либо это кол-во различных товаров в чеках ? Просто это немного разные вещи.
другими словами, в чеках может быть 1 строка для бутылки пива с количеством 20, либо 20 строк с количеством 1.
количество и сумма совпадет, а вот количество строк в чеках разное. Поэтому и вопрос - что более важно - количество артикулов, встречающихся в чеках, либо реальное число позиций.
28.07.2014 14:41
svtl
 
можно так - можно так. в модели есть функция кол-во строк спецификации. а можно суммировать по артикулу - и кол-во артикулов в чеке... Из моего опыта - если речь идет о кассирах, то анализируется кол-во строк, т.е. трудозатраты кассира.
28.07.2014 15:41
Aligator
 
Подсчет необходимо вести кол-ва товаров в чеках и итоговое кол-во этих товаров в еденицах измерениях (в сумме, пока что пофиг что там будут и весовые и штучные товары).
Что-то такое накидал:



но как мне сгруппировать по товарным группам и по кассирам?
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1182.png
Просмотров: 417
Размер:	14.6 Кб
ID:	3809   Нажмите на изображение для увеличения
Название: Image 1183.png
Просмотров: 646
Размер:	15.1 Кб
ID:	3810  
28.07.2014 15:42
Aligator
 
Цитата:
svtl а кассиры - таблица smcashdesksstaff. Или сразу в задаче выбирайте из параметров. Как-то так - см. приложение. (если я правильно условие задачи поняла)
сейчас вашу просмотрю отпишусь...


upd. чет мне ваш отчет ничего не отбирает, итог пустой ((
28.07.2014 16:08
Aligator
 
основной вопрос короче по группировкам (схлопыванию) кассиров и товарных групп...
28.07.2014 16:11
Starter
 
для группировки (схлопывания) кассиров и товарных групп нужно использовать функции. т.е. не просто добавлять поля из модели, а добавлять путем использования кнопки функция, а там в зависимости от потребности. сумма, количество значений и прочее.
28.07.2014 16:21
Aligator
 
Цитата:
Starter для группировки (схлопывания) кассиров и товарных групп нужно использовать функции. т.е. не просто добавлять поля из модели, а добавлять путем использования кнопки функция, а там в зависимости от потребности. сумма, количество значений и прочее.
Ка-бы да, но фамилии кассира и на группе классификатора сумму невозможно указать...кол-во значений выведет всего лишь цифру.
28.07.2014 16:24
svtl
 
Дата чека стоит явно моя - 2012 год, и предопределенный фильтр не включен. Поставьте галочку "показывать предопределенный фильтр", справа по кнопке Задача - Изменить ... фильтр - установите свой период.
Если период оч. большой - могут быть проблемы, Надо расчитать статистику. Для проверки либо 1-2 дня, либо группу товаров выбрать
28.07.2014 16:27
svtl
 
Цитата:
Aligator Ка-бы да, но фамилии кассира и на группе классификатора сумму невозможно указать...кол-во значений выведет всего лишь цифру.
т.е.?
28.07.2014 16:45
Aligator
 
Цитата:
svtl Дата чека стоит явно моя - 2012 год, и предопределенный фильтр не включен. Поставьте галочку "показывать предопределенный фильтр", справа по кнопке Задача - Изменить ... фильтр - установите свой период.
Если период оч. большой - могут быть проблемы, Надо расчитать статистику. Для проверки либо 1-2 дня, либо группу товаров выбрать
Слушайте, а ваш отчет-то хороший, спасибо:


А усложнить по типу, к примеру:

кассир1 товары группы "Бакалея"
кассир1 товары остальных групп
кассир2 товары группы "Бакалея"
кассир2 товары остальных групп

невозможно?
28.07.2014 16:54
svtl
 
а как вы хотите определить группу Бакалея? Если выбрать в основном фильтре - то выберет только реализацию по этой группе.
Т.е. нужен доп. фильтр на группы...
мне не очень нравится. Может, лучше поменять местами группировки - сначала кассиры, потом остальное, и добавить подитог по кассиру. вот так примерно, как во вложении (снова период поменяйте)
Вложения
Тип файла: rar 123.rar (844 байт, 102 просмотров)
28.07.2014 17:01
Aligator
 
Цитата:
svtl а как вы хотите определить группу Бакалея? Если выбрать в основном фильтре - то выберет только реализацию по этой группе.
Т.е. нужен доп. фильтр на группы...
мне не очень нравится. Может, лучше поменять местами группировки - сначала кассиры, потом остальное, и добавить подитог по кассиру. вот так примерно, как во вложении (снова период поменяйте)
Да, я вижу что по кассирам группировка тоже весьма неплохо в результате выглядит. Спасибо большое, пошел тестировать...
29.07.2014 09:05
Starter
 
Цитата:
Aligator Слушайте, а ваш отчет-то хороший, спасибо:

А усложнить по типу, к примеру:

кассир1 товары группы "Бакалея"
кассир1 товары остальных групп
кассир2 товары группы "Бакалея"
кассир2 товары остальных групп

невозможно?
А что подразумевается под "остальными группами" ?
хочется сделать так, чтобы выделялись товары одной группы, а все остальные проходили как "прочее" ?
т.е. под "товары остальных групп" подразумевается всего одна строка ?
Так сделать тоже можно, только уже в виде функции decode.
29.07.2014 09:56
Starter
 
Можно, кстати, слегка усложнить задачу - в виде кросс таблицы и выводить еще и в разбивке по датам (месяцам, неделям, и пр.).

типа:



сама задача:

https://storage.olegon.ru/supermag/u...234.smadefs.7z

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

decode (supermag.Classifier.GETTITLEBYPATH(supermag.Classifier.GETTREEPREFIX({Группа классификатора карточки. Путь}, 1), 'sacardclass'),'07. БАКАЛЕЯ','Бакалея','Прочее')

Здесь расчет идет на группу 2 уровня. если нужна первого, формула должна быть типа:

decode (supermag.Classifier.GETTITLEBYPATH(supermag.Classifier.GETTREEPREFIX({Группа классификатора карточки. Путь}, 0), 'sacardclass'),'07. БАКАЛЕЯ','Бакалея','Прочее')

Ну и название группы, которую хочется выделить нужно поправить. у нас это: '07. БАКАЛЕЯ' у вас, видимо, будет по-другому.
логику полей тоже поменял.
сумма = сумма продаж-сумма возвратов
кол-во = кол-во продаж - кол-во возвратов
Поз. в чеках = количество уникальных артикулов внутри чеков, т.е. кол-во различных значений связки код чека и артикул.
SKU - число уникальных артикулов.
29.07.2014 10:26
svtl
 
Цитата:
Starter А что подразумевается под "остальными группами" ?
хочется сделать так, чтобы выделялись товары одной группы, а все остальные проходили как "прочее" ?
т.е. под "товары остальных групп" подразумевается всего одна строка ?
Так сделать тоже можно, только уже в виде функции decode.
Да, но вопрос остается - я писала
а как вы хотите определить группу Бакалея? Если выбрать в основном фильтре - то выберет только реализацию по этой группе.
Т.е. нужен доп. фильтр на группы...
Прописывать код конкретной группы в поля задачи - не есть хорошо.
29.07.2014 10:39
Starter
 
Цитата:
svtl Прописывать код конкретной группы в поля задачи - не есть хорошо.
Почему же нехорошо ? Бизнес анализ для того и создан, чтобы решать нестандартные хотелки пользователей.
29.07.2014 11:03
svtl
 
Цитата:
Starter Почему же нехорошо ? Бизнес анализ для того и создан, чтобы решать нестандартные хотелки пользователей.
по-моему, мы друг друга не поняли. Сегодня - бакалея, завтра - молоко и т.п. Конкретная группа будет меняться, это очевидно. И каждый раз править код - нерационально. а если одному нужно посмотреть от Бакалеи, второму - от Молока, третьему - от Рыбы - создавать 3 разных задачи?
Внести выбор основной группы классификатора в фильтр можно, но поменять саму форму фильтра не получится, т.е. доп. поле фильтра - это будет поле, куда в формате строки будет вносится путь группы. Тогда внутри по decode можно сделать обработку и группировку. Вопрос - насколько это надо и удобство ввода.

По-поводу кросс-таблицы. Исходя из постановки конкретной задачи (реализация за период) мне показалось более логичным сделать крос-таблицу, в которой первый столбец - список кассиров, а раскладка вправо - по группам. И последний столбец - итог по группам. Тогда в реультате можно столбец с нужной группой классификатора подвинуть влево, сделав его первым. И после выгрузки в Excel добавить столбец суммы по прочим группам.
29.07.2014 11:06
Aligator
 
Цитата:
Starter Можно, кстати, слегка усложнить задачу - в виде кросс таблицы и выводить еще и в разбивке по датам (месяцам, неделям, и пр.).
Вообще шикарно!
А вот подскажите пожалуйста как указать другую группу в задаче?
К примеру хочу основной сделать куриную продукцию:


ставлю вот так:
decode (supermag.Classifier.GETTITLEBYPATH(supermag.Classifier.GETTREEPREFIX({Группа классификатора карточки. Путь}, 1), 'sacardclass'),'3.6. Куриная Продукция,' Куриная Продукция','Прочее')

Тогда показывается в отчете только строка "Прочее"
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1185.png
Просмотров: 533
Размер:	10.9 Кб
ID:	3825  
29.07.2014 11:50
svtl
 
decode (supermag.Classifier.GETTITLEBYPATH(supermag.Classifier.GETTREEPREFIX({Группа классификатора карточки. Путь}, 1), 'sacardclass'),'Куриная Продукция',' Куриная Продукция','Прочее')

попробуйте так.
т.е. у вас
supermag.Classifier.GETTITLEBYPATH(supermag.Classifier.GETTREEPREFIX({Группа классификатора карточки. Путь}, 1), 'sacardclass')
выдает не 3.6.Куриная продукция, а просто название группы.
29.07.2014 12:35
Starter
 
Цитата:
svtl по-моему, мы друг друга не поняли. Сегодня - бакалея, завтра - молоко и т.п. Конкретная группа будет меняться, это очевидно. И каждый раз править код - нерационально. а если одному нужно посмотреть от Бакалеи, второму - от Молока, третьему - от Рыбы - создавать 3 разных задачи?
Внести выбор основной группы классификатора в фильтр можно, но поменять саму форму фильтра не получится, т.е. доп. поле фильтра - это будет поле, куда в формате строки будет вносится путь группы. Тогда внутри по decode можно сделать обработку и группировку. Вопрос - насколько это надо и удобство ввода.

По-поводу кросс-таблицы. Исходя из постановки конкретной задачи (реализация за период) мне показалось более логичным сделать крос-таблицу, в которой первый столбец - список кассиров, а раскладка вправо - по группам. И последний столбец - итог по группам. Тогда в реультате можно столбец с нужной группой классификатора подвинуть влево, сделав его первым. И после выгрузки в Excel добавить столбец суммы по прочим группам.
Если исходить из того, что сегодня бакалея, завтра молоко, тогда разумеется, неразумно. Тогда нужно просто группы, дальнейшая обработка - в экселе, суммированием прочих полей.
И можно поподробнее - про:
"Внести выбор основной группы классификатора в фильтр можно, но поменять саму форму фильтра не получится, т.е. доп. поле фильтра - это будет поле, куда в формате строки будет вносится путь группы. Тогда внутри по decode можно сделать обработку и группировку. Вопрос - насколько это надо и удобство ввода."
Как сделать доп. поле фильтра (пусть даже и в формате строки), которое затем как то можно будет обработать. Т.е. как еще можно получить в задаче всего две строки - одна - группа (из фильтра), вторая - все остальное. Не прописывая жестко в коде название группы.

Ну и вообще интересно - а зачем нужна такая задача ? Т.е. какова была изначально постановка задачи от конечного пользователя ? Реализация по группам в разрезе кассиров - как то непонятно, зачем может пригодиться.
29.07.2014 21:33
svtl
 
Цитата:
Starter И можно поподробнее - про:
"Внести выбор основной группы классификатора в фильтр можно, но поменять саму форму фильтра не получится, т.е. доп. поле фильтра - это будет поле, куда в формате строки будет вносится путь группы. Тогда внутри по decode можно сделать обработку и группировку. Вопрос - насколько это надо и удобство ввода."
Как сделать доп. поле фильтра (пусть даже и в формате строки), которое затем как то можно будет обработать. Т.е. как еще можно получить в задаче всего две строки - одна - группа (из фильтра), вторая - все остальное. Не прописывая жестко в коде название группы.
ну, например, создать поле "Путь выбранной группы", в котором значения будут типа такого
select tree from supermag.sacardclass where length(supermag.Classifier.NormalizeClassif(tree) = 8
т.е. это пути групп второго уровня, так?
Затем в фильтр добавляем поле задачи "Путь выбранной группы",
тип строка, вносить надо будет, например, равно 6.2.
В decode пишем обработку - если путь второго уровня (тот, где функция - префикс) равен значению "Путь выбранной группы", то название группы будет нужное (Бакалея там, птица и пр.), иначе - прочие.
Это навскидку, по памяти. Я не проверяла. Но, по идее, должно получится.
А дальше уже дело фантазии - как лучше доп. фильтр сделать.
30.07.2014 10:23
Starter
 
А можно все же на примере задачи продемонстрировать ?
Просто есть некоторые сомнения, что взлетит. Хотя очень бы хотелось, по сути дела, такая манипуляция - передача параметров в задачу бизнес анализа.
Но, к сожалению, есть несколько моментов:
1. поле "Путь выбранной группы" сделать мы можем. В фильтр добавить поле задачи также можно. но при внесении условия фильтра равно 6.2 у нас будут отбираться только те товары, у которых этот путь 6.2. а нужно отбирать все. Это обойти можно, добавить какое нибудь поле, тип строка, с фиксированным содержанием, условие фильтра - НЕ СОДЕРЖИТ. и вписывать то, что нужно. тогда отберутся все карточки. Но встает основная проблема:
2. как в формулах использовать фильтр по произвольным полям. В СМ+ есть кнопка "добавить условие фильтра", но количество доступных полей там крайне ограничено.

Хотелось бы чтобы я ошибался, поэтому просьба - попробовать сделать задачу, т.е. проверить теоретические выкладки.
30.07.2014 11:10
svtl
 
Да, вы правы. Это я погорячилась. при любом раскладе только внутри нужно вносить нужный путь группы.
И если не в decode, то решения средствами БА нет. Красивого, по крайней мере.
Можно поизвращаться, где-то в доп.свойствах чего-либо - типа МХ - сделать параметр, его запрашивать из задачи через функцию и в decode с ним сравнивать путь группы... Но это очень криво, и опять же - один параметр для всех пользователей...
30.07.2014 11:22
Starter
 
Жалко. Остается только ждать, пока Сервис+ добавит в БА возможность указания входных параметров и их дальнейшего использования в задаче.
08.10.2015 14:01
hells
 
[QUOTE=Starter;181309]Можно, кстати, слегка усложнить задачу - в виде кросс таблицы и выводить еще и в разбивке по датам (месяцам, неделям, и пр.).

типа:



Может кто то знает, как это реализовать в БА, чтобы суммировались даты и отображался месяц???
Опции темы


Часовой пояс GMT +3, время: 10:32.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.