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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.12.2002, 11:53   #1  
Yuri Safronov is offline
Yuri Safronov
Участник
 
140 / 55 (2) ++++
Регистрация: 21.08.2002
Адрес: Москва
Автоматическое отображение изменений данных
Автоматическое отображение изменений данных, сделанных одним пользователем, в гриде другого, который просматривает или работает с этим же набором данных.
Используется трехзвенная архитектура с тонким клиентом.

Кто-нибудь решал подобную задачу?
__________________
yurisafronov@mail.ru
skype: y.safronov
Старый 19.12.2002, 12:44   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Даже не применительно к Аксапте этот вопрос задается регулярно на всех форумах, касающихся работы с базой данных.
Как правило все варианты ответов сводятся к следующему:

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

1а. Сделать это обновление в тот момент, когда этого захочет пользователь. То есть добавляем на формочку кнопку, при нажатию на которую происходит обновление набора данных. Плюс - небольшая нагрузка на сервер, минус - пользователь не всегда знает, когда лучше жать эту кнопочку. Кроме того это уже не RunTime.

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

1в. Особо талантливые пробуют/предлагают попробовать сочетание двух предыдущих подходов.

2. Некоторые быза данных (например Interbase) поддерживают рассылку событий клиентам. Не знаю как в Oracle, но для MS SQL это не актуально так что пропустим этот вариант.

3. С помощью триггеров(или метода update для Аксапты). Заподим вспомогательную табличку (назовем ее monitoring) например следующей структуры:

table_id
modufyTime

Суть в том, что при изменении какой либо изменяемой таблицы в monitoring заностится информация о том, что такая-то таблица (table_id) изменилась в такой-то момент времени (modifyTime). Этого можно достичь перекрыв один из методов Аксапты.

Все остальные формы и клиенты работающие с этой таблице регулярно(опять же проблема выбора интервала времени) смотрят таблицу monitoring и если с момента их последнего обновления значение modifyTime изменилось для данной таблице, то они запрашивают данные из основной таблицы.

Плюс - вместо регулярного обращения к большой таблице, мы регулярно обращаемся к небольшой таблице.

P.S. Не смотря на предложенное многообразие подходов, не разу не видел удачной реализации этой идеи. Поэтому 10 раз подумай - а нужно ли оно. Не проще открыть и закрыть форму.
Старый 19.12.2002, 13:11   #3  
Lexey is offline
Lexey
Участник
 
59 / 13 (1) ++
Регистрация: 16.05.2002
Цитата:
3. С помощью триггеров(или метода update для Аксапты). Заподим вспомогательную табличку (назовем ее monitoring) например следующей структуры:
***************** далее поскипано ***************

И эта табличка резко становится bottleneck -ом...
Старый 19.12.2002, 13:18   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
И эта табличка резко становится bottleneck -ом...
Согласен. Я же говорю, что удачных решений не видел.

Хотя с учетом:
Цитата:
Используется трехзвенная архитектура с тонким клиентом.
Можно при изменении данных в таблице, получать список активных сессий, посылать им сообщения..... и.. похоже тоже тупик.
Старый 19.12.2002, 13:30   #5  
Lexey is offline
Lexey
Участник
 
59 / 13 (1) ++
Регистрация: 16.05.2002
Можно при обновлении грида использовать 1)расписание +2)отслеживание активности на форме, чтобы не делать лишних запросов.
Старый 19.12.2002, 13:34   #6  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
Прежде всего: Согласен, что удачные решения здесь трудно придумать.
Но, если уж сильно хочется, то можно делать обновления по timeOut. Посмотреть можно в форме sysUserOnline.
__________________
С уважением, Вячеслав.
Старый 19.12.2002, 18:10   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Андре
Суть в том, что при изменении какой либо изменяемой таблицы в monitoring заностится информация о том, что такая-то таблица (table_id) изменилась в такой-то момент времени (modifyTime).
Хорошая идея. В Аксапте 2.5 тогде лучше использовать не modifyTime, а modifyTransactionID.

Также согласен, что это гарантированный гемор для разработчика и потенциально узкое место.


А может кто знает для чего еще можно использовать modifyTransactionID?
Старый 20.12.2002, 10:52   #8  
Yuri Safronov is offline
Yuri Safronov
Участник
 
140 / 55 (2) ++++
Регистрация: 21.08.2002
Адрес: Москва
Кто нибудь знает как автоматическое отображение изменений данных реализованно в 1С?
__________________
yurisafronov@mail.ru
skype: y.safronov
Старый 20.12.2002, 12:08   #9  
Lexey is offline
Lexey
Участник
 
59 / 13 (1) ++
Регистрация: 16.05.2002
Цитата:
Кто нибудь знает как автоматическое отображение изменений данных реализованно в 1С?
Опрос, период настраивается в параметрах
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отображение данных в FormBuildHTMLControl Dronas DAX: Программирование 4 02.10.2008 14:42
Невозможно выполнить команду языка определения данных в () iHomer13 DAX: Программирование 8 18.07.2008 10:56
Стандартный импорт данных. Обновление sparur DAX: Функционал 0 24.03.2008 19:07
Проблема - неправильное отображение данных shestakov DAX: Программирование 2 18.12.2001 07:36

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

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

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