AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
NAV
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.05.2006, 14:04   #1  
bird_imported is offline
bird_imported
Участник
 
45 / 10 (1) +
Регистрация: 11.05.2006
Thumbs up
За долгие-долгие годы накопилась на нашем предприятии масса интересных и не очень отчетов и решили мы отделить зерна от плевел, но не тут-то было...
Короче, пытаюсь сделать лог всех запусков отчетов, чтобы определить, какие отчеты часто используются, а какие просто место занимают. Понятно, что вставить во все отчеты некий код, который призапуске будет отмечаться в специальной таблице занятие неблагодарное, отчетов около 2000...
В 1 коудюните есть такая чудесная фукция, называется findPrinter. Она вызывается при каждом старте отчета. и остается только одна проблема: в ней нельзя произвести запись в БД
Пробовал так:
Код:
   Статистика.Дата:=TODAY;
   Статистика.Время:=TIME;
   Статистика."Отчет Но.":=ОтчетID;
   IF Объекты.GET(Объекты.Тип::Report,COMPANYNAME,ОтчетID) THEN
   Статистика."Название Отчета":= Объект.Имя;
   Статистика.INSERT(FALSE);
ругается, что нельзя мол этого делать из этого триггера...

Может кто подскажет дельную мысль, как решить проблему?
Старый 16.05.2006, 14:24   #2  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
А если писать в темповую табличку и скидывать в базу в функции LogInEnd ?
Старый 16.05.2006, 14:59   #3  
bird_imported is offline
bird_imported
Участник
 
45 / 10 (1) +
Регистрация: 11.05.2006
Да, почти помогло, только почему-то на момент вызова logInEnd временная таблица оказывается пустой, хотя при каждом запуске печати все значения хранятся, проверял...
Старый 16.05.2006, 15:12   #4  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Создайте Single Instance кодеюнит, вынесите туда функции по заполнению временной таблички и занесению данных в базу
Старый 16.05.2006, 15:17   #5  
bird_imported is offline
bird_imported
Участник
 
45 / 10 (1) +
Регистрация: 11.05.2006
Цитата:
Сообщение от rmv Посмотреть сообщение
Создайте Single Instance кодеюнит, вынесите туда функции по заполнению временной таблички и занесению данных в базу
Ага, будете смеяться но база под Nav 2.6 там еще не появилось SingleInstance...
Старый 16.05.2006, 15:39   #6  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Ну тогда либо пихать вызов в отчеты, либо всякие извращения вроде записи в файл, с последующей очисткой и занесением в базу.
Старый 16.05.2006, 17:47   #7  
SVG is offline
SVG
Участник
 
201 / 10 (1) +
Регистрация: 15.11.2004
отчеты запускаются откуда?

из трех мест
1. отчеты в грануле (типа товар-отчеты,продажа-отчеты...)
2. отчеты в документе (фактуры,накладные,статистики...)
3. периодические задания (тут вряд ли у вас есть неопознанные самописки)

если что-то упустил - поправьте

в этих местах совсем нетрудно написать протоколирование запуска репортов с последующим комитом.
единственное что плохо - неясно, просмотрели репорт или ошиблись и не стали запускать - но согласитесь этой погрешностью можно пренебречь.
Старый 17.05.2006, 10:55   #8  
Yuriy is offline
Yuriy
Участник
 
150 / 10 (1) +
Регистрация: 25.02.2003
Адрес: Москва
Есть такая вещь, как Code Coverage (Сервис/Debugger/Выполнение Кода). Именно с помощью ее мы писали логи запуска отчетов и различных функций (из таблиц, кодеюнитов и пр.)
При запуске клиента автоматически запускаем Code Coverage (при открытии фирмы) и он пишет инфу в свои таблицы, которые потом без проблем анализируются.

P.S. В версии 2.60 он находится в Сервис/Debugger/Приложение Код
__________________
Вот такие, брат, дела!
Старый 17.05.2006, 11:23   #9  
bird_imported is offline
bird_imported
Участник
 
45 / 10 (1) +
Регистрация: 11.05.2006
Цитата:
Сообщение от SVG Посмотреть сообщение
отчеты запускаются откуда?

из трех мест
1. отчеты в грануле (типа товар-отчеты,продажа-отчеты...)
2. отчеты в документе (фактуры,накладные,статистики...)
3. периодические задания (тут вряд ли у вас есть неопознанные самописки)

если что-то упустил - поправьте

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

Цитата:
Сообщение от Yuriy Посмотреть сообщение
Есть такая вещь, как Code Coverage (Сервис/Debugger/Выполнение Кода). Именно с помощью ее мы писали логи запуска отчетов и различных функций (из таблиц, кодеюнитов и пр.)
При запуске клиента автоматически запускаем Code Coverage (при открытии фирмы) и он пишет инфу в свои таблицы, которые потом без проблем анализируются.

P.S. В версии 2.60 он находится в Сервис/Debugger/Приложение Код
Спасибо, очень интересная мысль

Цитата:
Сообщение от rmv Посмотреть сообщение
Ну тогда либо пихать вызов в отчеты, либо всякие извращения вроде записи в файл, с последующей очисткой и занесением в базу.
Спасибо, сделал с сохранением в файл, пожалуй в данной ситуации самый простой и быстрый способ. Благо все пользователи системы работают на терминальном сервере, так что все очень удачно получилось.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:01.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.