gifts2017

OLAP-отчет ActiveX: компонента v2.4.1.241 + ABC-анализ по любым измерениям

Опубликовал Роман Осадченко (cleaner_it) в раздел Программирование - Внешние компоненты

Компонента предназначена для построения OLAP-отчетов и ABC-анализа.

OLAP (англ. online analytical processing, аналитическая обработка в реальном времени) — технология обработки информации, включающая составление и динамическую публикацию отчётов и документов.

Используется аналитиками для быстрой обработки сложных запросов к базе данных, учета и анализа разнородных данных с целью отыскания аномалий и зависимостей (data mining, когда не всегда понятно, что именно нужно анализировать и есть ли хоть какая-то взаимосвязь между анализируемыми данными), подготовки бизнес-отчетов по продажам, маркетингу

Стратегическая цель развития компоненты - реализация наиболее полного спектра алгоритмов и способов отображения информации для анализа и прогнозирования:
1. Карты Кохонена
2. Анализа зависимостей и ассоциаций
3. Дерева решений (для анализа отклика клиентов)
4. ABC-, XYZ-, RFM- алгоритмы анализа (ABC реализован в версии 2.4.1.241)
5. и т.д.

Кстати:
При отсутствии должной аналитики вся собранная информация будет лежать мертвым грузом и не позволит обратить данные о клиентах в знания о них, способные принести дополнительные доходы.

Бизнес в России достоин большего! Развивайтесь вместе с OLAP ActiveX!

Основные возможности OLAP-отчета
1. Удобное отображение данных
2. Высокая скорость получения данных в любом разрезе
3. Любая глубина вложенности группировок по строкам/колонкам
4. Фильтрация данных во время работы с кубом "на лету"
5. Простое интерактивное добавление формул
6. Разные типы агрегирования данных: суммирование, количество, среднее и т.д.
7. Программное управление внешним видом куба

8. Возможность работы с иерархическими измерениями

9. ABC-анализ по любым измерениям и показателям


Преимущества OLAP-технологий

1. Отчет не нужно переделывать для изменения группировок по строкам/колонкам.

2. Скорость и стоимость создания отчета OLAP намного ниже: достаточно построить грамотную выборку данных, все остальные задачи OLAP-технология возьмет на себя.

3. Скорость доработки отчетов OLAP выше до 60 % по сравнению с другими системами отчетности

4. OLAP-отчет можно сохранить - загрузка сохраненного отчета происходит очень быстро!

5. Один OLAP-отчет эквивалентен целому набору простых аналитических отчетов


Недостатки OLAP-технологий

1. OLAP не ориентирован на получение форм отчетности c произвольным дизайном - все OLAP-отчеты имеют одинаковый вид сводных таблиц
2. Некоторые пользователи визуально плохо воспринимают сводные таблицы


Преимущество данной разработки перед подобными:

1. Наличие удобного инсталлятора: он сам зарегистрирует все необходимое - для Вашей комфортной работы.

2. Наличие документции как для разработчиков, так и для пользователей, контроль версионности.

3. Функции управления внешним видом куба (которых в других разработках практически нет) и поддержка вывода иерархических измерений.

4. Встроенный ABC-анализ


Почему не компоновка данных (актуально для 1С 8.x)

OLAP и "Компоновка отчетов 1C 8.x" - похожи, но это не одно и то-же.

1) Скорость изменения "точки зрения" на данные в OLAP намного выше, а следовательно - быстрее работает Ваш бизнес, быстрее можно принять управленческие решения (дополнительные сведения здесь http://www.cfin.ru/itm/olap/1c.shtml).

2) В OLAP-отчете можно в реальном режиме времени на каждый показатель вывести дополнительные данные - % вхождения, рейтинг, и т.д. Очень удобно!

 

Справочные материалы

Подробную информацию о возможностях компоненты вы можете получить из  файлов помощи (формат PDF, для просмотра рекомендую использовать Foxit Reader).

Примеры использования компоненты имеются для 1С 8.1 и для 1С 7.7.


Продукты аналогичной направленности:
quick
- OLAP отчет в 1С7.7 одной строчкой кода! (без MSOffice)

Ukrandruha - OLAP

JohnyDeath - OLAP Анализ счёта

http://sourceforge.net/

Галактика BI


Лидеры российского рынка OLAP-решений для 1С (14.09.2009):

Deductor Academic

BIX BI (Business Intelligence)

«ИНТАЛЕВ: Корпоративная аналитика»

С.М.А.Р.Т.


Благодарность за дельные советы, предложения и активное участие:

and-blag

kittystark

JohnyDeath

 

Установка

Установку компоненты необходимо производить с правами администратора. Если после установки Вам предлагают перезапустить ОС - это означает, что компоненту предыдущей версии во время установки кто-то использовал, и установка будет завершена после перезапуска (либо нужно закрыть программы, использующие компоненту, и заново запустить инсталлятор)



Используй лучшее и проверенное:) 


С использованием компоненты реализованы отчеты:

1. "OLAP-отчет ActiveX: Анализ данных 1С 7.7 ТиС"

2. "OLAP-отчет ActiveX: Сравнительный анализ продаж для 1С 8.1 УТ"

 

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

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

Наименование Файл Версия Размер Кол. Скачив.
PivotCubeAX v2.4.1.241.zip
.zip 7,64Mb
22.02.12
377
.zip 7,64Mb 377 Скачать
PivotCubeAX v2.4.1.52.zip (предыдущая версия компоненты)
.zip 6,79Mb
22.02.12
93
.zip 6,79Mb 93 Скачать
PivotCubeAX_v_2_4_1.zip (предыдущая версия компоненты)
.zip 3,24Mb
22.02.12
33
.zip 3,24Mb 33 Скачать
PivotCubeAX v2.4.zip (предыдущая версия компоненты)
.zip 9,44Mb
22.02.12
34
.zip 9,44Mb 34 Скачать
FULL OLAP v2.3.1.zip (предыдущая версия компоненты)
.zip 6,80Mb
22.02.12
81
.zip 6,80Mb 81 Скачать
Видеопрезентация "Общее представление об OLAP-кубе.zip" (для PivotCubeAX 2.4.0.1)
.zip 2,33Mb
22.02.12
67
.zip 2,33Mb 67 Скачать
Видеопрезентация "Работа с измерениями в OLAP-кубе.zip" (для PivotCubeAX 2.4.0.1)
.zip 2,34Mb
22.02.12
57
.zip 2,34Mb 57 Скачать

См. также

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

Комментарии

0. Роман Осадченко (cleaner_it) 01.01.70 03:00
Компонента предназначена для построения OLAP-отчетов и ABC-анализа.

OLAP (англ. online analytical processing, аналитическая обработка в реальном времени) — технология обработки информации, включающая составление и динамическую публикацию отчётов и документов.

Используется аналитиками для быстрой обработки сложных запросов к базе данных, учета и анализа разнородных данных с целью отыскания аномалий и зависимостей (data mining, когда не всегда понятно, что именно нужно анализировать и есть ли хоть какая-то взаимосвязь между анализируемыми данными), подготовки бизнес-отчетов по продажам, маркетингу

Стратегическая цель развития компоненты - реализация наиболее полного спектра алгоритмов и способов отображения информации для анализа и прогнозирования:
1. Карты Кохонена
2. Анализа зависимостей и ассоциаций
3. Дерева решений (для анализа отклика клиентов)
4. ABC-, XYZ-, RFM- алгоритмы анализа (ABC реализован в версии 2.4.1.241)
5. и т.д.

Кстати:
При отсутствии должной аналитики вся собранная информация будет лежать мертвым грузом и не позволит обратить данные о клиентах в знания о них, способные принести дополнительные доходы.

Бизнес в России достоин большего! Развивайтесь вместе с OLAP ActiveX!


Перейти к публикации

1. Роман Осадченко (cleaner_it) 22.01.10 10:34
Работа компоненты тестировалась на Win2003 и Win7. Для Win7/Win2003 цветовые схемы различаются. На рисунке цветовая схема Win7, для Win2003 она более темная.
2. Евгений Мартыненков (JohnyDeath) 22.01.10 11:01
А зачем вообще зависимость от BDE?
3. Евгений Мартыненков (JohnyDeath) 22.01.10 11:05
Ну и заодно бы написал чем твоя разработка лучше/хуже разработок Ukrandruha и quick.
4. Роман Осадченко (cleaner_it) 22.01.10 11:23
(2) Насчет BDE смотрим руководство OLAP. В дальнейшем конечно планирую отказаться от него:)
(3) Напишу, просто времени не хватает
5. Роман Осадченко (cleaner_it) 22.01.10 11:58
Открыл доступ к файлам для пользователей Инфостарт (изначально был только для разработчиков)
6. Роман Осадченко (cleaner_it) 22.01.10 12:07
Нашел неточность в документации - метод AddDimension, параметр SizeData - это длина значения измерения, а не наименования. В следующей версии в документацию будет внесены соответствующие поправки
7. Александр Окулов (PowerBoy) 22.01.10 12:20
Регистры 1С + СКД = OLAP !!!
Не вижу потребности в данной компоненте, разве что для 7.7
8. Gamm (Gamm) 22.01.10 13:42
PowerBoy 22.01.2010 12:20:31
Регистры 1С + СКД = OLAP !!!
Не вижу потребности в данной компоненте, разве что для 7.7

Всё таки для перестройки изменения порядка аналитик в отчете СКД придется снова ждать получения данных, а плюс OLAP в более быстром получении результата.
9. Роман Осадченко (cleaner_it) 22.01.10 13:44
Выложил отличия от других разработок подобной направленности "Отличия от других разработок.pdf"

(7) Каждому свое, ИМХО СКД и OLAP решают разные задачи. Скорость изменения внешнего вида OLAP выше. Присутствует интерактивное добавление формул в куб, а также вывод НЕ ТОЛЬКО значения, но и при надобности процентов на колонку/строку, ее ранга и прочих вкусностей. А как-же возможность быстрого ABC-анализа (и такие вещи OLAP способен решать за считанные секунды)? А в СКД - возможность создания форматированного макета и вывода графиков наравне с таблицами. В любом случае мой опыт подсказывает, что для аналитиков OLAP намного удобнее
10. Михаил Ражиков (tango) 22.01.10 14:05
а почему перем - экспорт?
Перем Куб Экспорт;
11. Михаил Ражиков (tango) 22.01.10 14:07
а какого-нибудь серверного варианта нет, чтоб на каждой юзерской машине не ставить?
12. Михаил Ражиков (tango) 22.01.10 14:08
13. Михаил Ражиков (tango) 22.01.10 14:13
ну, вот, блин, похвалил...
{Форма.Форма(22)}: Ошибка при вызове метода контекста (AddDimension): Произошла исключительная ситуация (PivotCubeAXLibraryCleaner.OLAP): Table: Cannot perform this operation on an open dataset
Куб.AddDimension("Измерение1","Измерение 1",101);
по причине:
Произошла исключительная ситуация (PivotCubeAXLibraryCleaner.OLAP): Table: Cannot perform this operation on an open dataset
Прикрепленные файлы:
14. Роман Осадченко (cleaner_it) 22.01.10 14:29
(13) это происходит, когда куб построен, и его пытаются создать еще раз. для исправления этой ситуации я сделал метод CubeDeactivation, попробуй применить его перед созданием измерений, я его в тестовой обработке не применяю
15. Роман Осадченко (cleaner_it) 22.01.10 14:33
(11) подумаю, вроде как имеется такая возможность - запуск ActiveX с удаленной машины. В HTML ведь используют ActiveX, и для этого его не требуется устанавливать
16. Михаил Ражиков (tango) 22.01.10 14:50
(15) прокомменть, пожалуйста, чего это я скачал у производителя?
Прикрепленные файлы:
17. Роман Осадченко (cleaner_it) 22.01.10 14:55
(16) ActiveX компоненту, которую предлагает использовать PivotCube (они же ее разработчики). Куб к сожалению заполняется только SQL-запросами, заполнить ее из 1С будет более чем затруднительно.
18. Роман Осадченко (cleaner_it) 22.01.10 14:57
Собственно говоря, моя компонента ActiveX создана на основе PivotCubeVCL, а не PivotCubeX
19. Валерий Гуров (Saint) 22.01.10 14:58
Поправьте меня если я не прав, но разве сводные таблицы в 1С выполняют не аналогичную задачу?
20. Роман Осадченко (cleaner_it) 22.01.10 15:01
(19) Не совсем. Да, внешний вид похож, но возможности совершенно другие, у OLAP их больше на порядок
21. Евгений Мартыненков (JohnyDeath) 22.01.10 15:06
(4)
Насчет BDE смотрим руководство OLAP. В дальнейшем конечно планирую отказаться от него

Что-то не увидел. Не туда смотрю?
Авансом +. Но для полного счастья еще нужно сделать очень много. Отказ от BDE - это первое и самое важное (ИМХО)
22. Роман Осадченко (cleaner_it) 22.01.10 15:12
(21):

Метод CreateFactTable
Значение параметра ttParadox

Для работы с данным типом таблицы требуется установленный BDE
23. Евгений Мартыненков (JohnyDeath) 22.01.10 16:15
(22) Спасибо, приблизительно понял.

А в сторону sqlite не хочешь посмотреть? Проект открытый. Очень шустрая встраеваемая БД, которая может хранится в памяти, что должно дать прирост в скорости чтения данных по сравнению с сохранением и чтением данных на локальный диск в базу ttParadox

Страничка враперов. На чём, кстати, писал свой проект?
24. Роман Осадченко (cleaner_it) 22.01.10 16:28
(23) Можно попробовать sqlite. Проект писал на Delphi 6
25. Евгений Мартыненков (JohnyDeath) 22.01.10 16:32
(24) тогда попробуй это http://www.yunqa.de/delphi/doku.php/products/sqlite3/index (вроде как больше всего советуют)
26. Роман Осадченко (cleaner_it) 27.01.10 15:36
Перед выходными выложу новую версию (возможно, переведенную на SQLite). Надеюсь, будут закончены практически все заявленные в предыдущей версии функции: загрузка/выгрузка/сортировка/группировка "parent-child"
27. Антон Рощин (wolfsoft) 13.02.10 11:43
Я правильно понимаю, что компонента PivotCubeVCL - платный компонент?
28. Роман Осадченко (cleaner_it) 14.02.10 06:05
Да, он платный. Но никаких ограничений, кроме всплывающего окошка о необходимости регистрации (один раз, сразу после построения куба) нет, функционал полный
29. Роман Осадченко (cleaner_it) 14.02.10 07:42
(26) Никак не могу собраться дописать руководство:) Уже много чего сделал, а выложить без руководства не могу:(

В частности, реализована прозрачная работа с иерархическими измерениями (чего нет ни в одной из подобных разработок, где используются только линейные списки), добавлены и протестированы примеры работы с HTML (в том числе с автоматической установкой ActiveX на ПК клиента), 7.7 (с привязкой к краям формы), 8.2 (управляемые формы + web-сервер).

P.S.: На SQLite перевод будет не скоро, сначала надо в нем хорошенько разобраться (он однонаправленный, и не могу пока найти компонент для визуального просмотра таблиц БД SQLite на форме компоненты)
30. Роман Осадченко (cleaner_it) 03.04.10 04:19
Выпускаю в свет новую версию компоненты - 2.3.1 (предыдущая была - 2.2.0.2).
Обновлены: документация, компонента.
Изменен список файлов для скачивания.

PS: Большая часть хотелок, которые я хотел реализовать - реализованы, удобство использования увеличено в разы:)
31. Роман Осадченко (cleaner_it) 21.04.10 11:18
Инфостартовцы! Вы хоть напишите, в каких программах пригодился вам OLAP. Интересно:)
32. Роман Осадченко (cleaner_it) 13.05.10 06:53
Накладочка вышла. В файле "FULL OLAP v2.3.1.zip" файл с руководством был выложен неправильный. Сегодня исправлю
33. Brr (brr) 13.05.10 17:44
А с печатью у нас как обстоят дела?
34. Роман Осадченко (cleaner_it) 14.05.10 10:56
(33) Хотите - из Excel печатайте, хотите - используйте стандартную печать (в руководстве написано только про стандартную печать).

PS: "FULL OLAP v2.3.1.zip" я перевыложил
35. kittystark kittystark (kittystark) 14.05.10 18:31
класс !!!
но есть пожелания/замечания
1. под 7.7 ничего не происходит при вызове Куб.CollapseAll(1,1) или Куб.ExpandAll(1,1)
(была создана иерархия по справочнику номенклатуры)

2. хотелось бы чтобы были реализованы "оригинальные zCube.dll" методы, типа TopPanelVisible(...), MapSave(...), MapLoad(...), MapSwap() и др. - подсмотрены в оригинальном HTML примере, а лучше сразу "сделать мост" ко всем оригинальным методам/свойствам

3. при использовании "оригинальной" компоненты ("PivotCubeX") в HTА, также как и при использовании этой разработки под 7.7, при нажатии маленькой кнопочки "стрелки вверх-вниз" в области "Измерения"и в области "Колонки" - "мелькают" и затем пропадают все отображаемые данные (как будто бы куб пустой; в области строк при щелчке на такой же копке - все нормально), перерисовка производится при клике мышью в области данных/при прокрутке мышинного колеса/при щелчке на соседней кнопке (как квадратик, аля кнопка "развернуть"), можно как-то вылечить ?

4. чего-то не пойму как должен график выводиться

5. можно ли как-то программно из 4-х вкладок оставлять только 1-ю, имхо, пользователям последние 3 могут быть не нужны, да простит меня автор за "наезд" на вкладку "о программе", а то как-то не прикалывает формировать куб и сохранять его с помощью этой компоненты, а потом работать с ним через "оригинальную" компоненту

6. новую версию архива еще не смотрел, но в руководстве.pdf методы AppendRecordHierarchical(), SetValueHierarchical(), PostRecordHierarchical() было бы не плохо подробно описать
36. Роман Осадченко (cleaner_it) 17.05.10 06:41
(35) спасибо:) а где плюсик?

1. Эти методы работают только для линейных списков, для иерархических списков этот метод не работает (и пока не знаю, как он будет работать при смешанном режиме отображения "линейные+иерархические списки").

2.
а) Собственно, компонента и является тем самым "мостом", а просто говоря - оберткой.
б) У оригинальной компоненты некоторые методы дублируются - для куба и для карты клеток (я всегда реализовываю метод куба), при этом наименования куба и карты клеток могут отличаться
в) "оригинальный HTML пример" может быть только у PivotCubeX, я использую PivotCube VCL, наименования методов у них немного различаются. Если найду аналоги методов, указанных вами, то добавлю их

3) Эта кнопочка называется "Отображение/скрытие фильтра". Воспроизвести ситуацию, подобную вашей, у меня не получилось. Какую версию компоненты вы используете? Если не трудно - пришлите выгрузку куба. И описание системы тоже - терминал или нет, сколько памяти, и т.д.

4) На текущий момент нужно заново выбрать значения "Serie type", "pvcRows", "pvcMeasures", потом нажать кнопку "Обновить график". В следующем релизе работа с графиком будет упрощена и более прозрачна

5) А как-же "О программе":( Я так старался... Впрочем, подумаю

6) Тогда стоит посмотреть новую версию: методы AppendRecordHierarchical(), SetValueHierarchical(), PostRecordHierarchical() не нужны
37. kittystark kittystark (kittystark) 17.05.10 12:14
а, ну да... , плюсанул :D

1. сорри, оказывается методы CollapseAll() и ExpandAll() работают!, и действительно независимо от иерархичности измерений, а работают они если в области строк или колонок находится 2 измерения и больше (даже для иерархических измерений)
видимо для раскрытия иерархий что-то другое нужно вызывать (через Object Browser насчитал у zCube.IMap по 6 методов Expand/Collapse, но вряд ли они помогут)

2. пункт 2.б) пока для меня большей ясности не внес, поясню чего хотелось бы:
- ночью пересчитали и заполнили куб данными, сохранили на диск
- пользователи днем подгружают рассчитанный куб с диска (методы SaveToCube() и LoadFromCube() c этими задачами прекрасно справляются, хотя и "сбрасывают параметры просмотра")
- но вместо жестко предопределенного в коде порядка вызова методов PutToColumn()/PutToRow(), при загрузке воспользоваться выбором одной из ранее сохраненных карт (файлики *.zcd), будь то дефолтная "настройка" или один из "более других" вариантов срезов куба, сохраненных пользователем (со своими любимыми измерениями/фильтрами/перегруппировками иерархий и т.п. - типа "отчет" такой-то)

у PivotCubeX есть методы MapSave(), MapLoad() как это сделать в твоей компоненте - поясни плиз...

3. vista home ed sp1, локально не в терминале, 2Гб оперативки, oleview.exe выдал:
PivotCubeX control: version = 3.37; TypeLib: 3.25 = PivotCubeXLib library
OLAP Active X 2.2.0.2 [cleaner]: version 2.2; TypeLib: 2.2
приаттаченная выгрузка для PivotCubeX - сформирована HTML-кой из C:\Program Files\PivotCubeX\Data\cubedemo.mdb, по кнопкам Activate/Save cube

...

6. только что качнул последний полный архив, в "примере программного кода.pdf" в процедуре ЗаполнитьИерархическуюСтруктуру эти методы присутствуют...
Прикрепленные файлы:
export_sample.cub
38. Роман Осадченко (cleaner_it) 18.05.10 10:07
39. kittystark kittystark (kittystark) 18.05.10 18:29
допустим есть "предопределенные" измерения Месяц, Квартал, Сезон с устоявшимся общепринятым принципом очередности элементов этих измерений (Янв .. Дек, Iкв .. IVкв и т.п.)

можно ли как-то до/после/во время заполнения куба данными задать ID элемента для таких измерений? а то получающаяся очередность при сортировке измерения по алфавиту не подходит, а сортировка по ключу - в итоге совпадает с сортировкой по алфавиту...

вроде бы OnCustomWrapData в access-примере для PivotCubeX решает эту проблему, но как добраться до этого события в 7.7 - пока для меня темный лес

или для этого нужно вводить иерархические измерения, без подчинений как таковых ?
и как это скажется на производительности?
40. Роман Осадченко (cleaner_it) 19.05.10 06:45
(39) ид-шник назначать можно, но я обошелся тем, что перед наименованием ставлю номера, например:
01 - Январь
...
12 - Декабрь
41. kittystark kittystark (kittystark) 19.05.10 07:14
(40) пример кода с назначением ID, пожалуйста, в студию

42. Роман Осадченко (cleaner_it) 19.05.10 07:55
выложу в следующем релизе :)
43. kittystark kittystark (kittystark) 19.05.10 09:49
обнаружилась фича: после создания формы, но ДО загрузки куба, панели измерений и колонок можно таскать мышью и они способны перескакивать на правый край

после добавления измерений, даже без заполнения, такого не происходит
44. Роман Осадченко (cleaner_it) 19.05.10 10:36
Я знаю. Единственный способ обойти - блокировать доступ к элементам формы
45. kittystark kittystark (kittystark) 20.05.10 16:30
а как прогнозами пользоваться?
46. kittystark kittystark (kittystark) 21.05.10 18:04
(44)
PCX.RowToolbar.Options.Floating = 0
PCX.ColToolbar.Options.Floating = 0
PCX.DimToolBar.Options.Floating = 0
???
47. Роман Осадченко (cleaner_it) 24.05.10 03:19
48. Роман Осадченко (cleaner_it) 19.06.10 17:02
Выкладываю версию 2.4

Изменения по сравнению с версией 2.3.1

[*] - изменение
[+] - добавление
[–] - отказ/удаление

РЕАЛИЗОВАНЫ МЕТОДЫ:
[+] - Реализован метод SetIDByName (просьба kittystark)
[+] - Реализован метод SaveToHTML

ДОБАВЛЕНЫ СВОЙСТВА:
[+] - Добавлено свойство ShowRowTotals ['pvgtFixed', 'pvgtAtEnd', 'pvgtAtStart', 'pvgtDisabled']
[+] - Добавлено свойство ShowColumnTotals ['pvgtFixed', 'pvgtAtEnd', 'pvgtAtStart', 'pvgtDisabled']

ДОПОЛНЕНА ДОКУМЕНТАЦИЯ:
[+] - Описан метод AppendRecordHierarchical (Баг-репорт kittystark)
[+] - Описан метод SetValueHierarchical (Баг-репорт kittystark)
[+] - Описан метод PostRecordHierarchical (Баг-репорт kittystark)

НАСТРОЙКИ КОМПОНЕНТЫ ПО УМОЛЧАНИЮ:
[*] - Баг-репорт kittystark «После создания формы, но ДО загрузки куба, панели измерений и колонок можно таскать мышью влево-вправо». На текущий момент эта возможность убрана.

ДРУГОЕ:
[*] - Исправлено сворачивание раскрытых измерений при помещении любого измерения в строки и/или колонки (работает на линейных списках, при наличии иерархических измерений на верхнем уровне сворачивание происходит всегда)
[*] - изменено имя файла компоненты на PivotCubeAX.ocx (ранее ActiveFormProj1.ocx)
[+] - Добавлены типы итогов колонок и строк: pvgtFixed, pvgtAtEnd, pvgtAtStart, pvgtDisabled, см. «Атрибуты интерфейса»

А также:
1. Подправлена документация
2. Дополнен всеми новыми возможностями пример использования компоненты для 1С v8.1
49. Роман Осадченко (cleaner_it) 19.06.10 17:03
(45) что именно интересно про прогнозирование? Собственно, ничего особенного там нет, все зависит от вашей корпоративной политики и целей
50. Роман Осадченко (cleaner_it) 19.06.10 17:24
Готовится к реализации в следующих версиях

[*] - изменение
[+] - добавление
[–] - отказ/удаление

Методы

Наименование метода
Описание
[+] SetWidthMeasure
Установка ширины колонок показателей
[+] SetWidthDimension
Установка ширины колонок измерений
[+] SetFilter
Программная установка фильтра
[+] ClearFilter
Программная отмена фильтра
[+] SortDimension
Сортировка измерений
[+] SaveToOpenOffice
Экспорт в Open Office
[+] LoadFromWEB
Загрузка куба, хранящегося на WEB-сайте
[+] LoadFromStream
Загрузка куба из потока данных
[+] SetWidth
Установка ширины формы компоненты
[+] SetHeight
Установка высоты формы компоненты

Другое
[+] - реализовать прогресс-бар для отображения процесса загрузки куба
[+] - доработать руководство пользователя OLAP (будет произведено деление документации на другие логические блоки, а так же выделение в отдельный блок используемых в компоненте типов — сейчас они описаны в одном блоке со свойствами компоненты)
[+] - доработать работу с графиком
[+] - добавить возможность работы компоненты на переносимой СУБД SQLite
[+] - добавить возможность сохранения/загрузки настроек положения/видимости колонок/строк/формул/показателей
[+] - реализовать возможность переформировывать куб в рамках одной и той-же обработки (исправить ошибку «Cannot perform this operation on an open dataset»)
52. Роман Осадченко (cleaner_it) 20.06.10 07:49
Поправка описания типов отображения итогов:

pvgtFixed
Значение типа отображения итогов зафиксировано - справа для колонок, снизу — для строк. При перемещении горизонтального/вертикального ползунков итоги сохраняют свое положение (аналог «Закрепить область» табличного документа или электронной таблицы OpenOffice (Excel))

pvgtAtEnd
Значение типа отображения итогов: в конце

pvgtAtStart
Значение типа отображения итогов: в начале

pvgtDisabled
Значение типа отображения итогов — не показывать
53. Роман Осадченко (cleaner_it) 20.06.10 09:28
Выложил файл "Видеопрезентация "Общее представление об OLAP-кубе.zip" (для PivotCubeAX 2.4.0.1)"
54. Роман Осадченко (cleaner_it) 20.06.10 13:21
Выложил файл "Видеопрезентация "Работа с измерениями в OLAP-кубе.zip" (для PivotCubeAX 2.4.0.1)"
55. Роман Осадченко (cleaner_it) 20.06.10 14:20
Компонента заменена на версию 2.4.0.1 (наименование файла не изменилось, изменения по сравнению с версией 2.4 - чисто косметические)
56. kittystark kittystark (kittystark) 23.06.10 20:07
(50)
из "Другое":
...
[+] - реализовать возможность переформировывать куб в рамках одной и той-же обработки (исправить ошибку «Cannot perform this operation on an open dataset»)

этого хотелось бы получить в первую очередь
57. kittystark kittystark (kittystark) 23.06.10 20:15
(49) не понятно вообще, как эти "прогнозы" заюзать (если я правильно понял про группу элементов forecasting на форме редактора измерения)
58. Роман Осадченко (cleaner_it) 25.06.10 06:51
(57) Насчет прогнозирования смотреть здесь:
PivotCube VCL Users Guide
(Пункт 2.1.3.4 Forecasting ability)
В планах использование этих возможностей пока не скоро. Народ и 30% существующего использовать не может. А вообще, там можно и ABC-анализ проводить очень быстро средствами OLAP

(56) Я помещаю обработку в макет, в нужном месте сохраняю на диск, открываю и использую. По мне, так реализация этого пункта вообще не нужна, но сильно уж просят:)
59. Роман Осадченко (cleaner_it) 25.06.10 06:53
В первую очередь будет SQLLite, уж не обессудьте:) Скорость работы и удобство использования для меня прежде всего. Ну, плюс планируется качество преобразования типов улучшить
60. kittystark kittystark (kittystark) 25.06.10 10:12
(58) Пункт 2.1.3.4 прочел, хотелось бы менять ConsequentName PrecedingName, т.к.
PivotCube.lng не дает таких возможностей

существует ли возможность реализовать свой алгоритм расчета для построения прогноза, например среднюю взвешенную, но со СВОИМИ весовыми коэффициентами

по поводу АВС-анализа пожалуйста подробней

мы под 7.7 конечно без макетов, а при ночном пересчете кубов просто несколько раз подряд вызывается ОткрытьФормуМодально с нужными параметрами, но вот если юзер банально хочет поменять период, то либо форму закрывай-открывай, либо надо фиксить «Cannot perform this operation on an open dataset»

кстати, у меня было замечено следующее: если несколько раз подряд открывать форму, формировать куб, закрывать форму, то процесс 1с-ки постепенно отжирает оперативную память не освобождая ее, т.е. со штатных 90-100 Мб только одними кубами можно постепенно доползти до 700Мб (дальше проверять не стал)
вопрос: а как нужно грамотно высвобождать ресурсы при закрытии формы ?
61. Роман Осадченко (cleaner_it) 25.06.10 10:23
(60) По поводу ABC - это как сам закончу разбираться. То же самое с прогнозированием:)

Под 7.7, конечно, надо фиксить «Cannot perform this operation on an open dataset». Тут без вариантов.

При закрытии формы память я освобождаю, но подобного теста на 7.7 я не проводил (на 8.1 замечено не было) - очень интересно, буду проверять (возможно, закрытие окна 1С 7.7 вовсе не означает закрытия формы Delphi, как я считал)

PS: Есть желание показать сообществу "Пример использования OLAP ActiveX для 1С 7.7"?
62. Brr (brr) 01.07.10 12:08
вашу разработку можно использовать для работы с сервером олап?
63. Роман Осадченко (cleaner_it) 01.07.10 12:44
(62) Думаю реализовать нечто подобное. Какой сервер используете?
64. Brr (brr) 01.07.10 17:40
65. Роман Осадченко (cleaner_it) 02.07.10 04:59
(64) Такого добра у меня нет:) Сейчас ищу PALO, он GPL - на нем только если пробовать
66. Роман Осадченко (cleaner_it) 03.07.10 16:31
Завтра буду выкладывать новую версию. Из принципиальных доработок - отказ от использования BDE
67. Роман Осадченко (cleaner_it) 04.07.10 08:15
Выложена версия компоненты 2.4.1. Обновляться рекомендовано всем:)

Немного подробнее:

Методы
[*] CreateFactTable - Убран параметр typedb
[*] CreateFactTableHierarchical - Убран параметр typedb

Другое
Описание изменения
[–] Отказ (возможно временный) реализации перевода компоненты на СУБД SQLite в связи с использованием kbmMemTable
[*] Убрано ограничение «20 символов» на длину наименования измерения/показателя. Максимальная протестированная длина наименования на текущий момент составляет 35 символов
[*] Компонента теперь использует для построения отчетности БД kbmMemTable.
Преимущества
1. Отсутствие необходимости использования BDE.
2. БД хранится в памяти — нет необходимости создавать временные файлы.
3. Обеспечивает возможность использования компоненты на *nix-системах (на 04.07.2010 данная возможность не протестирована).
4. Согласно опросам, использование данной БД повышает производительность обращений к данным на 150-200% (статистика об увеличении производительности на 04.07.2010 отсутствует)
5. Исправлена досадная ошибка (баг-репорт and-blag): для чисел с плавающей запятой при использовании БД Paradox происходило некорректное преобразование типа float в тип double, что на больших объемах данных давало относительную погрешность расчета итогов около 0.02% (несколько сотен на несколько миллионов условных единиц). (Примечание: БД FoxPro свободна от такой ошибки)
[*] Коренным образом переделано внутреннее содержание компоненты, ограничивающее ее масштабируемость и интеграцию с различными СУБД
[*] Частично дополнена и переработана документация
[*] Начиная с версии 2.4.1 компонента проходит обязательное сжатие UPX, благодаря чему размер поставки снизился в 2 раза (не считая 4 Мб, сэкономленных выводом из состава разработки bdeinst.dll)
and-blag; +1 Ответить
68. Роман Осадченко (cleaner_it) 04.07.10 16:46
Порадовался:)

Я на 1 строчке Google по запросу "OLAP отчет ActiveX"
Я на 5 строчке Google по запросу "OLAP ActiveX"

PS: Аналогично в Яндексе:)
69. kittystark kittystark (kittystark) 07.07.10 09:07
на релизе 2.4.1 метод SetValue теперь требует 3-й параметр: SetValue(NameField As String, Value, ID As Long)... Можно пояснить настоящий смысл этого ID, а то руководство разработчика как-то не поспевает за изменениями ;) У себя в обработке перед закрывающей скобкой просто поставил запятую, т.е. 3-й параметр пустой - работает однако... но хочется разобраться

строим куб, кидаем по измерению в строки/столбцы, оставляем видимой только одну меру, переходим к графику, нажимаем на кнопку "Печать графика" или "Обновить график" и уходим в себя до ручного снятия процесса
70. Роман Осадченко (cleaner_it) 07.07.10 09:47
(69) Позавчера исправил (только еще не выложил). Он его только в 7.7 требовал, я это узнал когда пример для 7.7 делал:) А изначально этот ИД появился, когда я хотел ID назначать при заполнении куба (Не вышло, нет такой штатной возможности. Только после построения куба можно)

Насчет графика там конечно разобраться надо, вполне возможно, что я откажусь от штатного построителя графиков PivotCube, попробую свое накидать

А пока можешь пользоваться графиком, который вызывается из самого куба - там на каждом показателе и на каждом измерении в столбцах есть кнопочка "График" красно-зелено-синего цвета. Там все нормально работает, только неудобно открывать/закрывать, и параметры не сохраняются
71. Роман Осадченко (cleaner_it) 07.07.10 09:52
(69) Кстати, по поводу твоего давнего замечания, что при использовании объекта 1cpp АктивИкс объекты куба дергаются - я пожалуй сделаю создание нового окна Windows внутри 1С и буду туда помещать PivotCubeAX, тогда по идее мерцание должно пропасть.
72. kittystark kittystark (kittystark) 07.07.10 10:15
из созревших идей:
1. запрещать некоторым пользователям открывать окно "редактор измерения" для конкретного измерения, смысл - сначала программно накладываем фильтрацию (переводом часть item'ов в репозиторий), а потом запрещаем менять фильтр, отсюда можем получить частичный доступ пользователя к информации

у себя реализовал через WShell.appActivate и SendKey, это решение хоть и действенно, но ч/з одно место, вот если бы "кнопке с треугольником вниз" измерения можно было прикрутить нечто вроде enabled-свойства - было бы классно

2. не плохо было бы организовать через Обработку Внешнего События реакцию на клик мышью в ячейке измерения/меры

кстати по поводу русификации ConsequentName, PrecedingName в (60) - вопрос решил
73. Роман Осадченко (cleaner_it) 07.07.10 10:39
(72)
"1. ... " - вполне резонно, но здесь лучше учитывать права при заполнении куба - чтобы не нужные ему данные просто не попадали в отчет. Может, есть и другие причины реализации такого функционала?
"2. ... " - сам давно об этом думаю, хочу расшифровку сделать, но там события, как ты говоришь, "через одно место". Со временем, думаю, появится:)

74. kittystark kittystark (kittystark) 07.07.10 13:45
(73) думал я об этом...
сейчас у меня схема такая: вечером, когда никого в базе нет, через виндовый шедулер в определенное время запускается vbs-скрипт, создающий V77.Application и запускающий обработку с использованием твоей компоненты (несколько раз с разными периодами), на выходе имеем несколько обновленных *.cub файлов, за разные периоды и с разными наборам измерений, но измерение "проект" (читай "менеджер") везде заполняется одинаково

на следующий день пользователи запускают другую обработку и ... юзают эти файлики через отдельно запускаемый HTML Application (*.hta ) со встроенной в него "оригинальной" компонентой, не тратя по 2 часа на расчет данных (база за 2,5 года), после выбора и загрузки файла куба производится принудительная фильтрация по измерению "проект" в зависимости от "прав на кубы" (почему юзается оригнальная компонента - отдельная песня)

ПРИЧИНЫ: честно говоря, меня не прикалывает на каждого юзера формировать по несколько "фамильных" кубов, юзеров-то много, сколько это будет по времени - даже испытывать не стал, но по прикидкам тоже много

плюс еще «Cannot perform this operation on an open dataset» с диалогом «PivotCube demo» портят всю картину (борьба с последним через wshell.AppActivate и SendKey происходит с переменным успехом :) )

для тех кто будет запускать OLAP.hta из прилагаемого архива: подразумевается расположение *.cub файлов в том же каталоге где и сам OLAP.hta, после загрузки куба при подведении курсора мыши на самый правый край - должно появиться меню, хелпик в разработке - можно прилепить свой, демо ролики - твои
Прикрепленные файлы:
OLAP_hta.zip
75. kittystark kittystark (kittystark) 07.07.10 14:49
это как AddGroup(NameDimension As String, NameGroup As String, ItemID As <Unsupported variant type> :?: )
76. Роман Осадченко (cleaner_it) 07.07.10 14:58
(72) или имелось в виду убрать доступ к элементу, чтобы пользователь вообще не мог наложить СВОЕЙ фильтрации? Тогда пойму - чтобы подтасовки фактов не было (например, убрали из отчета "неблагополучных" клиентов)
77. Роман Осадченко (cleaner_it) 07.07.10 15:00
(75) это недокументированная функция, на которой я провожу тесты:) Вообще, раньше с ее помощью можно было в пользовательском режиме после построения куба добавлять группы, и помещать в них элементы
78. Роман Осадченко (cleaner_it) 07.07.10 15:03
(74) за hta'шник спасибо:) Я делал по другому - помещал выборку в индексированную таблицу 1cpp, которую затем можно сохранить в файл, а затем при необходимости восстанавливал ту версию куба, которая мне нужна. Но твой способ тоже ничего:)

PS: проблему твою понял, в твоем случае конечно принудительная фильтрация нужна. Куб - один, пользователей куба - несколько, у каждого пользователя - свой фильтр. Нормальная ситуация
79. kittystark kittystark (kittystark) 07.07.10 15:13
(76) да, именно запретить пользователю менять фильтрацию и оставлять ее только в "разрешенном" виде

с этой целью пытался я воспользоваться PCX.CubeIntf.Dimension(i).DeleteKey(j), чтоб скрыть "не нужные"элементы, элемент измерения удаляется, но вот значения мер после этого становятся очень уж кривыми и всякие попытки пересчитать куб пока не возымели положительного результата, может подскажешь метод ?
80. Роман Осадченко (cleaner_it) 09.07.10 16:53
(79) вроде сделал блокировку кнопки с треугольником вниз:) Как протестирую нормально, буду выкладывать новую версию компоненты
81. kittystark kittystark (kittystark) 09.07.10 17:10
(80) дас ист комас - дас ист гуд, спасибо, ждемс
82. Роман Осадченко (cleaner_it) 09.07.10 17:32
Придумал новую возможность: реализовать возможность устанавливать кнопкам измерений цвет (будет удобно выделять разным цветом разные категории измерений, например - даты одним цветом, все что связано с клиентами - другим).
83. kittystark kittystark (kittystark) 09.07.10 17:55
(82) ну че, прикольно, только имхо нужно это сделать так, чтоб на палитре неактивных измерений цветовая раскраска по категориям была, а на тулбарах строк/столбцов чтоб можно было отключать категорийную раскраску

плюс еще группировку/сортировку (автоматическое перемещение) кнопок по цветам, чтоб не было "шахматного порядка" и всяких цветовых разбродо-шатаний (этот пункт точно только для неактивных измерений)
84. Роман Осадченко (cleaner_it) 09.07.10 18:12
Есть контакт! Реализована возможность переформировывать куб в рамках одной и той-же обработки (исправление ошибки «Cannot perform this operation on an open dataset»)
85. Роман Осадченко (cleaner_it) 09.07.10 18:14
(83) Даже не знаю, что и сказать:) Будем тестировать, смотреть - как удобнее пользователю
86. Роман Осадченко (cleaner_it) 09.07.10 18:16
(84) с небольшим уточнением - если в кубе не было иерархических измерений. Для этих товарищей нужно будет еще немного подумать, что и как сделать
87. Роман Осадченко (cleaner_it) 09.07.10 19:53
Выложил новую версию компоненты: 2.4.1.52.

Главная доработка: реализована возможность переформировывать куб в рамках одной обработки при условии отсутствия в отчете иерархических измерений.

Дополнительно: реализован пример работы с компонентой для 1С 7.7, немного подправлена документация.

Рекомендовано скачивать и обновляться счастливым обладателям 1С 7.7
88. kittystark kittystark (kittystark) 12.07.10 09:26
(86),(87) ну теперь ждем "перформа" еще и по иерархичным измерениям, ведь номенклатура и контрагенты с группировками - это классика жанра

кстати, нужно еще для измерения продумать возможность "отключить/включить группы" в процессе пользования кубом, могу привести пример для чего это может понадобиться
89. Ярослав Тарарака (slaviksoft) 12.07.10 09:58
велосипед блин
зачем что-то инсталировать и изучать когда оно уже есть в кампановке?
ради пары секунд быстроты?
90. Роман Осадченко (cleaner_it) 12.07.10 11:08
(88) Согласен, тоже подумываю что иногда группы не нужны. но ты все-таки напиши случаи, где по твоему мнению это не нужно
(89) Покажи все возможности OLAP на кОмпОновке, и я готов признать свою ошибку. А пока разговаривать не о чем, уж извини. Разные технологии совершенно
91. kittystark kittystark (kittystark) 12.07.10 12:58
(90) из опыта эксплуатации, хотим проанализировать такие показатели как:
1. АКБ (Активная Клиентская База = количество контрагентов, купивших чего-либо из конкретной группы товаров)
2. SKU (вроде бы Stock Keeping Unit, но мы его для себя определяем как количество НАИМЕНОВАНИЙ товаров (не количество! в единицах измерения) купленных контрагентом, тоже из какой-то товарной группы)

для начала заводим новую вычисляемую меру "встречено раз" = "Количество" / "Количество" (получаемые значения: 1 - если продажи были, 0 - не было)
в свойствах этой меры проставляем галки "running total by rows" и "running total by colunms", все остальные меры лучше отключить

перетаскиваем измерение контрагентов в область строк, фильтрацией отбираем интересующие нас товары, и получаем в итогах внизу - значение АКБ (у нас все покупатели - на первом уровне, без группировки(! здесь это важно), поставщики и др. контрагенты в гр. "прочие", но это только в кубах, а не в исходном справочнике контрагентов)

но вот этот нарастающий итог ведет себя как-то странно, без фильтрации по товарам, действительно видно как он от строки к строке прирастает по единице, а с фильтрацией больше тройки значений не нашел, хотя итог получается верный

дальше берем измерение номенклатуры и перетаскиваем в область колонок, вуаля - в итогах справа видим значения SKU, но это справедливо только в случае отсутствия групп, т.к. если будет группа, то для нее "встречено раз" будет равно 1, как кол-во / кол-во, а не как сумма вложенных значений

представь, что анализируемые товары сидят в разных группах, но принадлежат одному бренду/производителю и стоит задача проанализировать SKU по контрагентам по товарам данного бренда...

на мой взгляд отключили группы - вытянули товары на первый уровень, и решены проблемы

хотелось бы узнать твои мысли по этому поводу
92. kittystark kittystark (kittystark) 12.07.10 13:05
93. Роман Осадченко (cleaner_it) 12.07.10 14:55
(91) Серьезный вопрос. Я попробую воспроизвести на своей базе, чтобы лучше понять, о чем идет речь
94. kittystark kittystark (kittystark) 12.07.10 16:31
возникла мысль: сейчас у нас запрос 1с пробегается по регистру партий и в лоб постятся записи в куб, соответственно, функция COUNT, после ребилда куба, возвращает количество встреченных записей, удовлетворяющих текущим фильтрам и значениям отображаемых измерений

вот ЕСЛИ БЫ придумать "нормализованную COUNT", для элементов всегда 1, а для групп - сумма по вложенным count-значениям...
95. Роман Осадченко (cleaner_it) 12.07.10 16:47
(94) так это есть, используй ctCount для показателей вместо ctSumma
96. kittystark kittystark (kittystark) 12.07.10 16:59
(95) э нет, знаю я про ctCount, для АКБ и SKU как они были "определены", она в чистом виде не подходит, это было первое что я попытался использовать

просто продаж товара контрагенту за период может быть 10 записей, и count вернет 10, а мне нужно посчитать их (товаров с контрагентами) как встреченных 1 раз

думаю, когда на своей базе воспроизведешь, перечитаешь 91, 94 - прочувствуешь разницу
97. Евгений Мартыненков (JohnyDeath) 13.07.10 10:32
(64) А зачем эта разработка, если есть Microsoft Analysis Services 2000
Сервисы OLAP от Microsoft на порядок лучше компоненты, на базе которой сделан этот ActiveX и выглядит куда более приятней
98. Роман Осадченко (cleaner_it) 13.07.10 15:27
(97) Вполне объективно - делают красиво, да и по быстродействию наверняка лучше за счет использования сервера. Но не у всех есть возможность купить себе Microsoft Analysis Services 2000:) Я, например, не могу.
99. Роман Осадченко (cleaner_it) 13.07.10 15:29
Я считаю, что красота при анализе отступает на второй план - любоваться стоит на красивые цифры, на рост (продаж, качества сбора дебиторки), на вовремя замеченные проблемы, и т.д.:)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа