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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.12.2007, 10:03   #1  
Antonuch is offline
Antonuch
Участник
 
41 / 15 (1) ++
Регистрация: 21.06.2007
Кто работает с формой
Доброго всем времени суток, подскажите новичку, как правильнее будет отследить, кто на данный момент использует форму. Я предполагаю, что это метод activate но вот как правильно организовать сей мониторинг?
Старый 11.12.2007, 10:22   #2  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Поставьте точки останова в методе new класса SysSetupFormRun и методе close (его санчала нужно перекрыть) того же класса и откройте, а потом закройте любую форму. Вам это нужно?
Старый 11.12.2007, 10:25   #3  
Antonuch is offline
Antonuch
Участник
 
41 / 15 (1) ++
Регистрация: 21.06.2007
Не совсем понял, у меня было предположение, что нужно просто создать таблицу, при методе activate вставлять в нее запись с именем пользователя и врееменем входа, потом методом close delete ить эту запись
Старый 11.12.2007, 10:34   #4  
Antonuch is offline
Antonuch
Участник
 
41 / 15 (1) ++
Регистрация: 21.06.2007
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Поставьте точки останова в методе new класса SysSetupFormRun и методе close (его санчала нужно перекрыть) того же класса и откройте, а потом закройте любую форму. Вам это нужно?
Можно поподробнее, где ставить точки? Заранее благодарен
Старый 11.12.2007, 10:44   #5  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Смотря что Вам нужно, если отследить кто работает с конкретной формой, то пишите в свою таблицу в методе init этой формы, а удаляйте в методе close. Если нужно чтобы это работало для всех форм, то в SysSetupFormRun.new - пишем, а SysSetupFormRun.close - удаляем.
Старый 11.12.2007, 10:48   #6  
Antonuch is offline
Antonuch
Участник
 
41 / 15 (1) ++
Регистрация: 21.06.2007
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Смотря что Вам нужно, если отследить кто работает с конкретной формой, то пишите в свою таблицу в методе init этой формы, а удаляйте в методе close. Если нужно чтобы это работало для всех форм, то в SysSetupFormRun.new - пишем, а SysSetupFormRun.close - удаляем.
Да, именно с конкретной формой, можно еще вопрос, каким классом я могу получить полное имя пользователя (чтобы его потом вставить в таблицу) и время входа на форму?
Старый 11.12.2007, 10:58   #7  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Класса не знаю. Можно получить Id текущего пользователя ф-цией curuserid(), а потом запросом выбрать имя из UserInfo либо EmplTable. Хотя я бы не стал хранить в таблице имя, лучше хранить Id, а при выводе на форму если нужно, по Id находить имя.
Старый 11.12.2007, 10:59   #8  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
- Пользователь может открыть одну и ту же форму два раза.
- Пользователь может просто перезагрузить компьютер и тогда никакой ваш метод close не отработает.

Так что таким образом вы не получите список пользователей, у которых в данный момент открыта ваша форма.
Старый 11.12.2007, 11:04   #9  
Antonuch is offline
Antonuch
Участник
 
41 / 15 (1) ++
Регистрация: 21.06.2007
Цитата:
Сообщение от oip Посмотреть сообщение
- Пользователь может открыть одну и ту же форму два раза.
- Пользователь может просто перезагрузить компьютер и тогда никакой ваш метод close не отработает.

Так что таким образом вы не получите список пользователей, у которых в данный момент открыта ваша форма.
Согласен полностью, но тогда как правильнее будет сделать?
Старый 11.12.2007, 13:16   #10  
leva is offline
leva
Участник
 
52 / 36 (2) +++
Регистрация: 03.08.2005
Как вариант сохранять в этой таблице SessionID и в определенный момент проверять его актуальность. Т.е. также как в журналах происходит блокировка.
Старый 11.12.2007, 17:54   #11  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Antonuch Посмотреть сообщение
Доброго всем времени суток, подскажите новичку, как правильнее будет отследить, кто на данный момент использует форму.
Озвучьте исходную задачу, а не метод, которым вы пытаетесь ее решить.
Старый 12.12.2007, 09:18   #12  
Antonuch is offline
Antonuch
Участник
 
41 / 15 (1) ++
Регистрация: 21.06.2007
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Озвучьте исходную задачу, а не метод, которым вы пытаетесь ее решить.
Суть проблемы в том, что в проекте есть форма, которая используется для подачи отчетов. Нужно выяснить, как часто она используется, соответственно, кем. Ну и кто на данный момент ее просматривает, а главное (там есть кнопка выгрузки данных) кто выгружает на данный момент данные.
Старый 12.12.2007, 12:32   #13  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Antonuch Посмотреть сообщение
в проекте есть форма, которая используется для подачи отчетов. Нужно выяснить, как часто она используется, соответственно, кем. Ну и кто на данный момент ее просматривает
что значит "просматривает"? может, пользователь открыл форму и забыл про нее, потому что другая форма ее заслонила, - и так она висит в фоне весь рабочий день... и еще: расскажите, в чем глубокий смысл сбора данных по частоте использования какой-то формы? К слову, эти данные можно собрать, если на форме сохраняются/восстанавливаются какие-то настройки, при условии включения логов изменения SysLastValue
Цитата:
Сообщение от Antonuch Посмотреть сообщение
а главное (там есть кнопка выгрузки данных) кто выгружает на данный момент данные.
У вас код выгрузки данных реализован на форме или же в отдельном классе? Почему из класса выгрузки не выводить в таблицу какой-нить лог работы:
Код:
дата, время, код сессии, код пользователя, выгрузка начата
...
дата, время, код сессии, код пользователя, выгрузка завершена
Вы не думаете о том, что затем понадобится запускать выгрузку, к примеру, через COM-коннектор, и никаких форм у вас не будет?
Старый 12.12.2007, 15:42   #14  
Antonuch is offline
Antonuch
Участник
 
41 / 15 (1) ++
Регистрация: 21.06.2007
Всем спасибо, написал класс, который инсертит записи в таблицу логирования, прикрутил его к определенным событиям формы, с обработчиком ошибок. Тема закрыта.
Старый 12.12.2007, 16:00   #15  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Просто задам вопрос, для истории. Вы, Antonuch, являетесь IT-администратором в компании, использующей Аксапту? Предположил просто исходя из постановки задачи: решать организационные задачи техническими средствами.
Старый 12.12.2007, 16:11   #16  
Antonuch is offline
Antonuch
Участник
 
41 / 15 (1) ++
Регистрация: 21.06.2007
Цитата:
Сообщение от EVGL Посмотреть сообщение
Просто задам вопрос, для истории. Вы, Antonuch, являетесь IT-администратором в компании, использующей Аксапту? Предположил просто исходя из постановки задачи: решать организационные задачи техническими средствами.
Не совсем, нами написан проект, который выгружает данные для последующей подачи отчетов. При выгрузке этих данных, блокируется таблица InventTrans поэтому в качестве рекомендаций, были даны указания проводить загрузку либо утром, либо вечером (работающих в системе более 400 человек) Нужно было отмониторить, кто доброссовестно выполняет указания, кто нет))).Поэтому я решил посоветоваться, может кто и сталкивался с подобной проблемой.Простые административные функции не совсем подошли.
Старый 12.12.2007, 16:29   #17  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от Antonuch Посмотреть сообщение
Не совсем, нами написан проект, который выгружает данные для последующей подачи отчетов. При выгрузке этих данных, блокируется таблица InventTrans поэтому в качестве рекомендаций, были даны указания проводить загрузку либо утром, либо вечером (работающих в системе более 400 человек) Нужно было отмониторить, кто доброссовестно выполняет указания, кто нет))).Поэтому я решил посоветоваться, может кто и сталкивался с подобной проблемой.Простые административные функции не совсем подошли.
ИМХО, проще было настроить автоматический выход из системы и пакетное задание с нужной выгрузкой.
Старый 12.12.2007, 16:31   #18  
leva is offline
leva
Участник
 
52 / 36 (2) +++
Регистрация: 03.08.2005
а что если с выгружаемыми данными сохранять дату/время выгрузки и даже печатать их на тех самых отчетах?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не пойму что с диалогом-формой... lev DAX: Программирование 7 04.02.2009 15:19
почему на работает common.(fieldId)[idx] maze DAX: Программирование 3 31.08.2007 06:48
JOIN программно на форме не работает rohlenko DAX: Программирование 2 31.03.2005 15:41
CRM ABC, SWOT анализ Как это работает и работает ли вообще. ShadowFromXZone DAX: Функционал 16 02.03.2004 18:09
Не работает selectForUpdate() Andronov DAX: Программирование 6 18.08.2003 17:24

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:46.