27.10.2006, 10:59 | #1 |
Участник
|
Добрый день.
Возникла следующая задачка. Есть таблица с двумя полями. Одно поле - это Дата. Другое - Статус. Хочу сделать Статус вычисляемым полем: если Дата < Текущей даты, то Статус = Закрыт (иначе Активный) Как сделать? Цель сделать выч поле именно в таблице (а не на форме) в том, чтобы повесить на него validateField() и отслеживать изменение статуса. Подскажите, пожалуйста. Спасибо. |
|
27.10.2006, 16:52 | #2 |
Участник
|
Может стоит попробовать создать метод в таблице, который будет при определенном условии (например при переходе системной даты) бежать по таблице и менять значение этого поля? Насколько я знаю, такого типа как вычисляемое поле в таблицах Аксапты нет, для вычислений обычно используются display-методы
|
|
27.10.2006, 17:05 | #3 |
Участник
|
Как бы его написать только?
То есть как поставить обработчик на изменение системной даты. Кроме периодической пакетной обработки я пока ничего не придумал... Хотя вылядит слишком тяжеловесно. |
|
27.10.2006, 17:32 | #4 |
Участник
|
Идея смешная, но все таки - сделать табличку с 1 полем и одной записью. Назначение поля - дата последней обработки требуемой таблицы. И на вход юзеров в систему повесить запуск job'a, который проверяет соответствие системной даты и значения этого поля. Если оно меньше системной даты, вызывается обработчик на таблице и модифицируется значение этого поля значением системной даты. Т.о. юзер, который первым на текущую дату зайдет в систему, вызовет модификацию таблицы, а остальные ничего не заметят
|
|
27.10.2006, 17:44 | #5 |
Участник
|
Не - так низя)).
Хотя бы потому, что не только люди используют данные, а еще и всякие программы. Получается вобще нельзя закладываться на активность пользователя. По-видимому, действительно нас спасет только обычная периодическая обработка... |
|
27.10.2006, 18:06 | #6 |
Участник
|
Тогда событие можно повесить на обращение к этой таблице при считывании данных. Первое обращение в день будет несколько замедлено, а остальные - нормально.. Просто я не знаю, как в Аксапте демона можно написать
|
|
27.10.2006, 18:13 | #7 |
Участник
|
Вроде нужно класс RunBaseBacth отнаследовать и добавить там свою функциональность.
Там все вроде довольно удобно. Только я не знаю - мне кажется (пусть меня поправят если я ошибаюсь), что это метод для массивной (возможно распределенной) обработки данных, которую напр. нельзя проводить днем. А отслеживать значение поле - это вроде как из пушки по воробьям.. |
|
30.10.2006, 09:24 | #8 |
Участник
|
Попробуйте сделать средствами SQL
|
|
06.11.2006, 16:54 | #9 |
Участник
|
Цитата:
Цитата:
p.s. Вот тут прикольный совет на тему всяческого креатива в коде . |
|
09.11.2006, 00:33 | #10 |
Участник
|
да тяжелая задачка
|
|
09.11.2006, 09:28 | #11 |
Участник
|
а зачем вообще такое поле, если оно всегда вычисляемое?
Проще сделать display метод. + если работать из других программ, то там тоже его вычислять в момент обработки |
|