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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.10.2006, 10:59   #1  
birdy is offline
birdy
Участник
 
18 / 10 (1) +
Регистрация: 21.12.2005
Добрый день.

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

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

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

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

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

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

Хотя бы потому, что не только люди используют данные, а еще и всякие
программы.
Получается вобще нельзя закладываться на активность пользователя.
По-видимому, действительно нас спасет только обычная периодическая обработка...
Старый 27.10.2006, 18:06   #6  
vodnev is offline
vodnev
Участник
 
10 / 10 (1) +
Регистрация: 01.11.2006
Тогда событие можно повесить на обращение к этой таблице при считывании данных. Первое обращение в день будет несколько замедлено, а остальные - нормально.. Просто я не знаю, как в Аксапте демона можно написать
Старый 27.10.2006, 18:13   #7  
birdy is offline
birdy
Участник
 
18 / 10 (1) +
Регистрация: 21.12.2005
Вроде нужно класс RunBaseBacth отнаследовать и добавить там свою функциональность.
Там все вроде довольно удобно.
Только я не знаю - мне кажется (пусть меня поправят если я ошибаюсь), что это метод для массивной (возможно распределенной) обработки данных, которую напр. нельзя проводить днем.
А отслеживать значение поле - это вроде как из пушки по воробьям..
Старый 30.10.2006, 09:24   #8  
Veps_imported is offline
Veps_imported
Участник
 
11 / 10 (1) +
Регистрация: 17.11.2004
Попробуйте сделать средствами SQL
Старый 06.11.2006, 16:54   #9  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
Thumbs up
Цитата:
Сообщение от Vodnev Посмотреть сообщение
Тогда событие можно повесить на обращение к этой таблице при считывании данных. Первое обращение в день будет несколько замедлено, а остальные - нормально..
Сидел, вчитывался в эту фразу, перечитал раз 10, но так и не понял о чем идет речь?


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


p.s. Вот тут прикольный совет на тему всяческого креатива в коде .
Старый 09.11.2006, 00:33   #10  
yanik84 is offline
yanik84
Участник
 
3 / 10 (1) +
Регистрация: 09.11.2006
да тяжелая задачка
Старый 09.11.2006, 09:28   #11  
Gorynych_imported is offline
Gorynych_imported
Участник
 
16 / 10 (1) +
Регистрация: 24.10.2005
а зачем вообще такое поле, если оно всегда вычисляемое?
Проще сделать display метод.
+ если работать из других программ, то там тоже его вычислять в момент обработки
 

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

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

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

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

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