AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 27.10.2006, 10:59   #1  
birdy is offline
birdy
Участник
 
18 / 10 (1) +
Join Date: 21.12.2005
Добрый день.

Возникла следующая задачка.

Есть таблица с двумя полями. Одно поле - это Дата. Другое - Статус.
Хочу сделать Статус вычисляемым полем:

если Дата < Текущей даты, то Статус = Закрыт (иначе Активный)

Как сделать? Цель сделать выч поле именно в таблице (а не на форме) в том,
чтобы повесить на него validateField() и отслеживать изменение статуса.

Подскажите, пожалуйста.
Спасибо.
Old 27.10.2006, 16:52   #2  
vodnev is offline
vodnev
Участник
 
10 / 10 (1) +
Join Date: 01.11.2006
Может стоит попробовать создать метод в таблице, который будет при определенном условии (например при переходе системной даты) бежать по таблице и менять значение этого поля? Насколько я знаю, такого типа как вычисляемое поле в таблицах Аксапты нет, для вычислений обычно используются display-методы
Old 27.10.2006, 17:05   #3  
birdy is offline
birdy
Участник
 
18 / 10 (1) +
Join Date: 21.12.2005
Как бы его написать только?
То есть как поставить обработчик на изменение системной даты.

Кроме периодической пакетной обработки я пока ничего не придумал...
Хотя вылядит слишком тяжеловесно.
Old 27.10.2006, 17:32   #4  
vodnev is offline
vodnev
Участник
 
10 / 10 (1) +
Join Date: 01.11.2006
Идея смешная, но все таки - сделать табличку с 1 полем и одной записью. Назначение поля - дата последней обработки требуемой таблицы. И на вход юзеров в систему повесить запуск job'a, который проверяет соответствие системной даты и значения этого поля. Если оно меньше системной даты, вызывается обработчик на таблице и модифицируется значение этого поля значением системной даты. Т.о. юзер, который первым на текущую дату зайдет в систему, вызовет модификацию таблицы, а остальные ничего не заметят
Old 27.10.2006, 17:44   #5  
birdy is offline
birdy
Участник
 
18 / 10 (1) +
Join Date: 21.12.2005
Не - так низя)).

Хотя бы потому, что не только люди используют данные, а еще и всякие
программы.
Получается вобще нельзя закладываться на активность пользователя.
По-видимому, действительно нас спасет только обычная периодическая обработка...
Old 27.10.2006, 18:06   #6  
vodnev is offline
vodnev
Участник
 
10 / 10 (1) +
Join Date: 01.11.2006
Тогда событие можно повесить на обращение к этой таблице при считывании данных. Первое обращение в день будет несколько замедлено, а остальные - нормально.. Просто я не знаю, как в Аксапте демона можно написать
Old 06.11.2006, 16:54   #7  
Lemming is offline
Lemming
Участник
Lemming's Avatar
 
1,144 / 343 (14) ++++++
Join Date: 20.04.2004
Location: Москва, Чайнатаун в Люблино
Blog Entries: 10
Thumbs up
Quote:
Originally Posted by Vodnev View Post
Тогда событие можно повесить на обращение к этой таблице при считывании данных. Первое обращение в день будет несколько замедлено, а остальные - нормально..
Сидел, вчитывался в эту фразу, перечитал раз 10, но так и не понял о чем идет речь?


Quote:
Originally Posted by birdy View Post
Кроме периодической пакетной обработки я пока ничего не придумал...
Хотя вылядит слишком тяжеловесно.
Зато в соответствии с принятой концепцией разработки в системе Пускай пакетник каждую ночь обновляет табличку, а утром все уже работают с актуальными данными. Правда afaik он отожрет пользовательскую лицензию(поправте меня, если я ошибаюсь).


p.s. Вот тут прикольный совет на тему всяческого креатива в коде .
Old 27.10.2006, 18:13   #8  
birdy is offline
birdy
Участник
 
18 / 10 (1) +
Join Date: 21.12.2005
Вроде нужно класс RunBaseBacth отнаследовать и добавить там свою функциональность.
Там все вроде довольно удобно.
Только я не знаю - мне кажется (пусть меня поправят если я ошибаюсь), что это метод для массивной (возможно распределенной) обработки данных, которую напр. нельзя проводить днем.
А отслеживать значение поле - это вроде как из пушки по воробьям..
Old 30.10.2006, 09:24   #9  
Veps_imported is offline
Veps_imported
Участник
 
11 / 10 (1) +
Join Date: 17.11.2004
Попробуйте сделать средствами SQL
Old 09.11.2006, 00:33   #10  
yanik84 is offline
yanik84
Участник
 
3 / 10 (1) +
Join Date: 09.11.2006
да тяжелая задачка
Old 09.11.2006, 09:28   #11  
Gorynych_imported is offline
Gorynych_imported
Участник
 
16 / 10 (1) +
Join Date: 24.10.2005
а зачем вообще такое поле, если оно всегда вычисляемое?
Проще сделать display метод.
+ если работать из других программ, то там тоже его вычислять в момент обработки
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 02:04.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.