Вход | Регистрация


1С:Предприятие ::

Метки:Общие вопросы

Увязать 1С и ОЛАП

Я
   Валентин
 
25.07.04 - 16:33
subj собственно.
Где и что можно почитать по этому поводу?
Может кто уже занимался? Что одскажет о граблях?
 
  Рекламное место пустует
   Валентин
 
3 - 25.07.04 - 17:41
Ну ни как еще не представляю.
Вижу всю эту ерунду только 2 неделю. В голове - хаос.
Единственное что понимаю - неэффективность многих вещей в 1С (типовых конфигурациях торговли). На http://sql.ru/forum/actualtopics.aspx?bid=26 есть много умных мыслей. Но как их привязать к моей ситуации - не понимаю.
Тут пытаюсь изобразить куб для финотчетности (кто, сколько, когда, какого товара, каким из сотрудников) - ни фига не получается. Уперся в MDX для просроченного долга и дальше никуда.
А представляю это себе примерно следующим образом -
1. Выгрузка данных/преобразование к нужным форматам  (думаю неэффективно использовать 36-ричное представление (строки долго обрабатывать))
2. Фильтрация/устаовление значений по умолчанию
3. Собственно загрузка в куб/кубы (отражение финсостояния, склад, затраты)
   Матрейя
 
4 - 25.07.04 - 17:47
3. Может в SQL создать большую многоуровневую таблицу (внешнюю по отношению к 1с), во время проведения доков - производить движения в этой внешней таблице. Потом, используя ее иеархичность, строить по ней всякие многоуровневые отчеты.
   Валентин
 
5 - 25.07.04 - 17:55
То ест использовать INSTEAD OF тригерры. Для 1c на SQL это смерть. Рычаги. И кроме этого надо помнить обовсем при написании проведения/перепроведения документа. А уж если рискнешь поменять структуру регистра - абзац
Да и не в этом проблема если честно. Для меня сейчас более важно вообще понять что есть ОЛАП. Какая польза моему предприятию от использования этой технологии. Насколько мои данные готовы к data mining.
Вот тут есть люди с гордым титулом  "Инженеры знаний". Оказывается есть и другое назначение у них, не только ветки сортировать
   Матрейя
 
6 - 25.07.04 - 18:00
5. Ты не совсем правильно понял мою мысль. OLAP - предполагает получение любой аналитики в любых разрезах. Реализовать это на 1с достаточно сложно. Просто можно использовать внешнюю SQL таблицу, средствами ADO записывать в нее данные и извлекать. Универсальные процедуры и функции для одной единственной таблицы описать не сложно.
   Валентин
 
7 - 25.07.04 - 18:11
Мне кажется более просто делать выгрузку. Не заморачиваться с выяснением внутренних идов на ходу а ночью тихонечко пересчитать все как надо. Другой вопрос что не представляю что пересчитывать. Да и опять же вопрос совметимости выгрузки при изменении конфигурации. Короче куда ни кинь ...
   Матрейя
 
8 - 25.07.04 - 18:16
7. То же самое тогда можно получить и сложными отчетами с каким-нибудь самоформирующимся составным запросом. В случае с SQL таблицей - возможно получение аналитик в реальном времени.
   Валентин
 
9 - 25.07.04 - 18:21
В случае 1С я сильно сомневаюсь вообще в возможностях работы в реальном времени. ROLAP убьет базу. MOLAP  - производительность. Опять же регистры эти убогие. Все же мне кажется что нужно просто как-то умудриться описать бизнес процесс предприятия не в термнах конфигурации 1С, а каким-то более общим образом. Вот по этому вопросу бы что-то найти почитать
   Матрейя
 
10 - 25.07.04 - 18:24
9. Не обращаясь к таблицам 1с, а просто создай внешнюю таблицу (не в составе конфигурации) средствами SQL. Типа XBase, только для SQL.
 
 
   Валентин
 
11 - 25.07.04 - 18:27
Не обращаясь к 1С потеряю справочники/документы
Стоимость запроса к серверу из ADO  все же ощутима, и использовать эту фишку при проведении/перепроведении/создании и т.д. не хочу.
Но коль пошла такая пьянка, то вопрос по существу

В таблице фактов есть поля
1. ДатаОперации (день когда прошла операция)
2. ОплатитьДо (день после котрого оплата считается просроченной)
3. Сумма (сумма денег)
4. ЭтоОплата (1 если оплата, 0 если закуп)
В итоге надо получить
1. сумму просроченного/непросроченного долга на дату
2. Количество дней просрочки на дату

Использую MS AS
В качестве клиента - Excel

Вопрос - как построить вычисляемый мембер, для 1 и 2
На самом деле даже немного проще - как сравнить даты?
Когда пишу datediff("d",[ДатаОперации].currentMember,[Оплатитьдо].currentMember) для выснения сколько дней в прошло просрочке - выдает #ERR
Почему?
   Матрейя
 
12 - 25.07.04 - 18:41
11. Не потеряешь - ведь можешь ввести сквозную кодировку всех нужных объектом метаданных - типа как в MOD, только попроще.
   Матрейя
 
13 - 25.07.04 - 18:45
+12. Поиск 1с объектов попавших в выборку искать средствами 1с.
   Матрейя
 
14 - 25.07.04 - 18:47
Дату лучше изначально записывать в числовом представлении: 20040814(можно добавить и время, тогда так 20040814015247)
   Матрейя
 
16 - 25.07.04 - 18:57
15.
12. - у справочников - единый реквизит IDD, для доков не нужен - достаточно записывать числовое представление вида, номер и дату. То есть имея эти идентификаторы - всегда найдешь нужный 1с объект.
13. Допустим запрос OLAP вернул тебе выборку из ста элементов, где значения элементов - это IDD значения справочников + набор идентификаторов дока. Пройдясь по рекордсету - формируешь ТЗ, где стороковое представление элементов заменяешь на представление элементов 1с (типа Спр.НайтиПоРеквизту("IDD",ЗначениеРекордсета);
   Валентин
 
17 - 25.07.04 - 19:00
Т.е. В качестве клиента для ОЛАП использовать 1С? Есть ли в этом смысл?
   Матрейя
 
18 - 25.07.04 - 19:10
17. Совершенно верно. Смысл наверное есть, поскольку не привязан к сторонним разработкам. ADO- в составе WIn, SQL сервер можно вязть и бесплатный (MySQL), а 1с- просто удобная среда для быстрого программирования.
   Валентин
 
19 - 25.07.04 - 19:13
Может по (11) что подскажешь?
Если честно, то при таких раскладах лучше 2С. Удобная (правда временами глючная) среда. Больше возможностей. Ни к чему не привязан. И бесплатно.
   Матрейя
 
20 - 25.07.04 - 20:02
19. Посмотри ветку (насчет 11) "Посоветуйте структуру регистров".
Что касается 2с - я юзаю в качестве эксперимента, но пока не могу уверенно судить о возможности практического применения.
   Валентин
 
21 - 25.07.04 - 20:08
Вопрос если честно не в реализации на 1С. Не буду менять конфу. Вопрос в MDX запросе. Где хотя бы про это написано?
   Валентин
 
23 - 25.07.04 - 20:17
MDX - язык запросов в ОЛАП. Позволяет формировать выходной рекордсет так, так тебе нужно (накладывать условия, пересечения, объединения, выбирать нужные множества) Не похож на SQL
   Матрейя
 
24 - 25.07.04 - 20:23
23. Я лично вижу реализацию только на SQL, когда иеархичность (система координат куба) достигается за счет сквозного многоуровнего классификатора событий (каждое событие вдобавок имеет состав аналитик). Элемент классификатора - для каждой записи в таблицу данных.
   Валентин
 
25 - 25.07.04 - 20:28
Хочу уйти от SQL. Сильно зависит от конфигурации. А писать свои отчеты под каждого клиента - глупо. Кажется более реальным - нормальная структра кубов + человеческий клиент.
Кстати, сейчас посмотрел подключение через DSO (http://rom1c.narod.ru/adomd.html) катит в 1С, так что твоя идея не лишена смысла. Еще бы бесплатный OLAP сервер где надыбать.
   NS
 
26 - 25.07.04 - 21:45
никто не в курсе, что такое PivotTable?
   Валентин
 
27 - 25.07.04 - 21:47
Компонет такой в офисе. Чаще всего используется для отображения сводных данных. А о MDX ты не в курсе? Скоро уже спать, а (11) все никак победить не могу...
   Матрейя
 
28 - 25.07.04 - 22:08
27. Это тебе NS подсказку решения дает, а не спрашивает.
   Валентин
 
29 - 25.07.04 - 22:18
А вот теперь эту подсказку мне бы еще понять.
Задача ведь конкретна. Проникся твоей идеей, хочу запихать все в 1С. OWB ложить не хочу.
Хочу запросом!!!!!

with member [Measures].[ПросроченныйДолг] as 'что здесь надо написать?'
with member [Measures].[НаСколькоДнейПросроченно] as 'что здесь надо написать?'
Как найти множество от ДатаОперации до ОплатитьДо?
   Матрейя
 
30 - 25.07.04 - 22:23
29. Переведи дату в числовой формат 2004.08.12 = 20040812 - универсальный формат. Where _Dat<=ЧисловоеПредставлениеДатыОперации and _Dat>ЧисловоеЗначениеОплатитьДо. Разница - просроченость - легко вычисляется арифметически и возвращает число дней.
   Валентин
 
31 - 25.07.04 - 22:26
Разница в днях/месяцах/годах считается datediff.
Вопрос в получении множества дат лежащих в пределах от дата1 до дата2.
В вычислении просроченного/непросроченного долга на заданную дату
   Матрейя
 
32 - 25.07.04 - 22:34
31. Будешь смеяться, но структуру регистра я привел в ветке "Посоветуйте струтктуру регистра...", пост №4. Множество дат в том случае - список значений фильтра регистра, который вычисляется в цикле(прибавление 1 на число раз разницы) - поскольку значения даты - число - то очень быстро.
   Валентин
 
33 - 25.07.04 - 22:41
Да не спорю что быстро. Но вот беда - не катит такое объявление регистра. Конфа у клиента - типовая. ТиС 9.2 Объем базы большой вот и хочет быстро получать отчеты. Понимаю что могу хранить даты как заблагорассудиться. Числом, строкой, хоть varchar(4000). Запрос от этого не меняется очень уж сильно. Не будет datediff, будет просто разность. В 31 описано что нужно. И формат хранения даты здесь ни причем...
 
  Рекламное место пустует



Список тем форума
Рекламное место пустует   Рекламное место пустует
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки - вот настоящая работа.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует