24.03.2006, 14:08 | #1 |
Участник
|
Занимаюсь я тут разработкой генератора отчетов для Navision, который должен позволять создавать любой отчет с любыми таблицами и полями. Выбор информации должен происходить по любому заданному пользователем условию или набору условий. Полученный отчет должен выгружаться в Ecxel. Может кто уже имеет наработки по этой теме. Если да, то подскажите, как это лучше сделать. Заранее благодарен.
|
|
24.03.2006, 14:25 | #2 |
Участник
|
На этом форуме уже эта тема была пару раз. Если поищите, то обязательно найдете.
|
|
24.03.2006, 14:45 | #3 |
Участник
|
Возможно Вас спасет SQL версия базы и Query Analizer .
Создать универсальный генератор отчетов для Навижна имхо утопия. |
|
24.03.2006, 15:48 | #4 |
Moderator
|
Или Crystal Report ;-)
А вообще-то уже есть такой продукт, называется Jet Reports http://www.avfconsulting.com/product....asp?docID=321 |
|
28.03.2006, 09:23 | #5 |
Участник
|
Цитата:
Сообщение от Dzemon
Или Crystal Report ;-)
А вообще-то уже есть такой продукт, называется Jet Reports http://www.avfconsulting.com/product....asp?docID=321 |
|
28.03.2006, 10:44 | #6 |
Moderator
|
Crystal как обычно ;-) Если база SQL, то вообще без вопросов, если родная, то через ODBC.
|
|
28.03.2006, 10:52 | #7 |
Участник
|
|
|
28.03.2006, 12:05 | #8 |
Moderator
|
Конечно!
Вы на этом целую лицензию сэкономите, в случае SQL. |
|
28.03.2006, 12:23 | #9 |
Участник
|
|
|
28.03.2006, 15:20 | #10 |
Участник
|
|
|
28.03.2006, 15:26 | #11 |
Участник
|
Цитата:
это таблица 12401 G/L Correspondence Entry вычисляемое поле 1. Токо не нашел таблицу 27...... |
|
02.05.2006, 15:04 | #12 |
Участник
|
Я, как и автор темы, сейчас думаю над отчетным движком. Navision + SQL.
У нас очень часто слишком хитрые отчеты нужны. Стандартные репорты не подходят. Поэтому пока пишем прям на формах. Размышляю, как бы оптимизировать наши отчеты и из требований выделил такие: - быстрая разработка отчета (не писать каждый раз выгрузку в excel, не тратить много времени на визуальное оформление); - достаточная сложность построения - с различными вычислениями с использованием других таблиц, связанных не самыми примитивными отношениями; - возможность крутить отчет на лету, используя различные контролы (периоды, флаги, списки), выбор параметров (из наборов данных постоянных и сформированных специально для отчета); - разграничение доступа к отчетам на уровне отчета (в идеале хотелось бы не тупо раздавать права по USERID, а что-то более продвинутое исходя из функционального положения сотрудника); - ограничение доступа на изменение параметров построения отчета для конкретного пользователя (к примеру, пользователь видит отчет не по всей таблице, а по тем строкам, по которым ему можно); - простота доступа к отчету и работы с ним, изменения по параметрам на лету; - отчеты консолидированы в одном месте, отсутствие необходимости устанавливать что-то на клиенте. Кристал на клиентов ставить не катит. Пробовал Кристал Сервер. Там портал даже есть, но громоздкий (пользователь хочет за минимум итераций получать доступ к результатам) и гибкости не даёт. Не нашел я там средств, при помощи которых можно было бы крутить отчет на лету по всяким параметрам... Сдаётся мне, что для обозначенных критериев нету готового решения. Остается только писать отчетный веб-портал и юзать хранимые процедуры - уж их мощи хватит точно. |
|
02.05.2006, 16:05 | #13 |
Участник
|
Если отчеты "не тяжелые" (условно - менее 5 - 10 тысяч записей), можно попробовать реализовать через универсальную отчетную табличку (20 полей - текст, 20 код, 20 decimal.. etc + несколько полей для сортировки).
Функции по заполнению полей, вставке, заданию полей для сортировки, подсчету итогов, получению записей (FindRec, NextRec) , caption'ов и получению уведомлений о событиях (assistedit, drilldown, lookup)- вынести в отдельный кодеюнит. Определить одну форму с отчетной табличкой в качестве источника, прописать уведомления кодеюнита о событиях (assistedit, drilldown, lookup) на соответсвующих триггерах полей формы, переопределить ф-ции findrec и nextrec и возможно ф-ции по экспорту в Эксель. Далее создание отчета будет сводится: 1. Созданию новой формы отчета. 2. Определению формы отчетной таблички в качестве сабформы. 3. Написанию кода заполнению отчета через ф-ции кодеюнита. 4. По таймеру - получение событий от кодеюнита с соответсвующей обработкой. Плюсы: не нужно под каждый отчет, выводимый посредством формы создавать свою табличку или мучительно искать какую же стандартную использовать , не нужно заморачиваться над сортировкой и подсчетом итогов и подитогов. Минусы: ограничение в 4000 символов на запись. |
|
02.05.2006, 16:17 | #14 |
Участник
|
Делал несколько отчётов на SQL Analysis Services.
Быстро, эффективно. Разграничение прав доступа к отчётам (кубам) и по измерениям работает. Возможность крутить данные в Excel "на лету". Простота максимальная - базовое знание Excel. Отчёты консолидированы в одном месте. Единственный минус - если Excel файл с данными уже был сохранён на диске, то после его открытия для получения актуальных данных из куба нужно жать refresh. С нетерпением жду перехода на SQL2005 потому как 2000й немного(или не кривя душой - "порядком") глюкавый интерфейс дизайнера кубиков |
|
02.05.2006, 16:55 | #15 |
Участник
|
2 rmv:
Пользуем такую штуку уже. Табличка Universal Report, временная, глобальная в форме. Очень удобно. Неудобен сам навижн со своими сортировками. Иногда приходится буквально одно место себе поднадорвать, чтобы сделать сортировку по какому-то столбцу, когда отчет сложный и берет много данных и самых разных таблиц - много времени уходит, код громоздкий, соваться туда в очередной раз порой страшно бывает . Так что сортировки можно сделать любые, но цена бывает высокой. События в кодюните не пробовал. Интересная мысль, но удобно кодить, когда всё в одном месте, а так же дрилы/асисты бывают самые разные и писать их в кодюнит не всегда оправдано. А чего там по таймеру? Не совсем понял, как/зачем можно в отчетах использовать таймер? А вообще на возню всю эту в форме уходит масса времени. И выгрузка в Excel - аналогично. Это при том, что уже все методы по выбросу в excel перед глазами - тока откорректировать. Кстати, отчеты на формах с итогами делаем - заморачиваться нужно. 2 Scorpie: Интересный вариант, стоит посмотреть. А нет ли информационных источников, примеров по теме (кроме хелпов )? Analysis Services пока в глаза даже не видел. |
|
02.05.2006, 17:24 | #16 |
Участник
|
2 e-statik:
Код по формированию отчета не должен задумываться о сортировке . Его задача - сказать кодюниту - хочу сортировать по таким-то то полям. Наводка - ключ может быть таким: Code Key 1,Decimal Key 1,Date Key 1,Code Key 2,Decimal Key 2,Date Key 2,Code Key 3,Decimal Key 3,Date Key 3,Total. Как видите покрывается любая комбинация из трех полей сортировки. (более как правило и не требуется). Ну и уже совсем просто задать сифты на decimal поля и использовать calcums для автоматической генерации итогов. По поводу событий: Сабформа (она одна для всех отчетов) - передает кодеюниту тип события и номер поля. Верхняя форма по таймеру опрашивает кодеюнит на предмет наличия необработанных событий, получает текущую запись и выполняет (если нужно) код по обработке события. |
|
02.05.2006, 17:39 | #17 |
Участник
|
Цитата:
С 2005м ситуация тоже не однозначная. Хелп там на порядок лучше... но вот литературы пока раздобыть не удалось. По некоторым данным в феврале за бугром должна была появиться бумажная книга по этой проблеме - думаю заказать твёрдую копию когда вопрос перехода станет актуальным... А вариант действительно интересный. Мы так решили вопрос с онлайн доступом к отчётности ряду сотрудников которым из навижна ничего кроме статистики не нужно было. При этом если заранее настроить вид полей в эксель файле и переслать сотруднику по почте - то в самом файле сохраняется не только внешний вид отчёта - как ему удобнее будет смотреть те или иные данные, но и свойства соединения с сервером. Т.е. настраивать на машине пользователя не нужно ровным счётом ничего... - открыл файл и работай. |
|
02.05.2006, 19:33 | #18 |
Участник
|
2 rmv:
По поводу сортировки - разные варианты бывают. У меня в таблице для отчетов первостепенный ключ один - Report Id (int). Во всех отчетах строки пронумерованы - это бывает удобно юзерам при работе с отчетом. А уж для сортировки - да - ключей по полям создано много, без этого никуда. Бывают просто изощренные варианты с группировками. СИФТ так ни разу и не удосужился попробовать в работе. Теперь буду иметь в виду 2 Scorpie: А правильно я понял, в excel'документе настраиваются соединения, источники данных и погнали? Что-то такое? Нужно конекшны настроить у юзера предварительно?... Или я что-то с чем-то путаю? |
|
03.05.2006, 00:36 | #19 |
Участник
|
Цитата:
Файл пересылается пользователю, он его открывает и обновляет уже со своей машины. Авторизация Windows - так что меньше головной боли с security. Файл будет обновляться уже от имени новой учётной записи. |
|
03.05.2006, 12:35 | #20 |
Участник
|
Задумался тут... А можно ли будет с excel'ем сделать, скажем, отчет с детализацией? Открылся отчет, строки... Жмём на значение - открывается форма с подробной информацией. У нас и такие отчеты нужны.
|
|