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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.04.2012, 12:54   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Метод, вызывающийся на изменение поля
Допустим, есть таблица. Допустим, на этой таблице перекрыт modifiedField(). Допустим код на изменение одного из полей должен отрабатывать только на определенной форме, и не должен работать при программной обработке данных. Как бы вы написали код на modifiedField(), чтобы это все реализовать правильно?

Последний раз редактировалось Eldar9x; 26.04.2012 в 12:58.
Старый 26.04.2012, 12:58   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Используйте modifiedField не на таблице а на филде датасурса

P.S.: К стати и табличный modifiedField автоматически не вызывается при программной обработке, если только его не вызвать явно.
За это сообщение автора поблагодарили: lev (1).
Старый 26.04.2012, 13:06   #3  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Используйте modifiedField не на таблице а на филде датасурса

P.S.: К стати и табличный modifiedField автоматически не вызывается при программной обработке, если только его не вызвать явно.
Надо как-то на методе таблицы. Запретили выносить бизнес-логику на форму. И modifiedField вызывают явно в коде.
Старый 26.04.2012, 13:17   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Надо как-то на методе таблицы. Запретили выносить бизнес-логику на форму. И modifiedField вызывают явно в коде.
Странная политика, странная ...

Можно вот так:
X++:
FormDataSource FormDataSource;
    ;
    
    if (this.isFormDataSource())
    {
        FormDataSource = this.dataSource();
        if (FormDataSource.formRun().name() == formstr(MyForm))
        {
            // TODO: 
            info("test");
        }
    }
За это сообщение автора поблагодарили: Eldar9x (5).
Старый 26.04.2012, 13:18   #5  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
может дело не в "определенных" формах таки, а в формах, отображающих немного разные сущности хранящиеся в одной таблице?
Тогда на таблице должен быть признак (енум) что же это за сущность (ну например как тип заказа на продажу) в зависимости от которого можно создать несколько классов обработчиков (SalesLineType, SalesTableType) и реализовать в них разное поведение в ответ на одно и то же событие.

Если же отличия реально только в дизайне формы, то скорее всего тут и все modified должны срабатывать вне зависимости от того откуда оно вызвано. Иначе либо косяк архитектуры, либо что то совсем простое, чему явно место именно на форме, а не на таблице
Старый 26.04.2012, 13:19   #6  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Вот это

Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Запретили выносить бизнес-логику на форму.
вот с этим

Цитата:
Сообщение от Eldar9x Посмотреть сообщение
...должен отрабатывать только на определенной форме...
не стыкуется
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 26.04.2012, 13:40   #7  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Странная политика, странная ...

Можно вот так:
X++:
FormDataSource FormDataSource;
    ;
    
    if (this.isFormDataSource())
    {
        FormDataSource = this.dataSource();
        if (FormDataSource.formRun().name() == formstr(MyForm))
        {
            // TODO: 
            info("test");
        }
    }
это несомненно решение технической проблемы, но прежде чем так делать автору темы было неплохо таки выяснить у "запрещальщиков" что же они хотят добиться своими запретами и всё ли нормально с постановкой задачи. так как за такой код не в качестве примера, а в нормальной разработке необходимо лишать какой нито части тела
За это сообщение автора поблагодарили: gl00mie (2), someOne (3), pedrozzz (2).
Старый 26.04.2012, 14:01   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от db Посмотреть сообщение
это несомненно решение технической проблемы, но прежде чем так делать автору темы было неплохо таки выяснить у "запрещальщиков" что же они хотят добиться своими запретами и всё ли нормально с постановкой задачи. так как за такой код не в качестве примера, а в нормальной разработке необходимо лишать какой нито части тела
Полностью согласен!
Старый 27.04.2012, 08:09   #9  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
на таблице перекрыт modifiedField(). Допустим код на изменение одного из полей должен отрабатывать только на определенной форме, и не должен работать при программной обработке данных
По-моему, задача не могла быть поставлена таким образом, это ерунда какая-то; надо включить здравый смысл, и тогда все встанет на свои места. И еще: если задача ставится человеком, далеким от программирования в Аксапте, стоит критически воспринимать его "советы" относительно ее реализации в коде.
Старый 27.04.2012, 08:25   #10  
Dark Light is offline
Dark Light
Участник
 
64 / 49 (0) +++
Регистрация: 17.02.2009
Адрес: Омск
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Надо как-то на методе таблицы. Запретили выносить бизнес-логику на форму.
А если на таблице сделать метод modifiedFieldName(), который вызвать в методе modified поля FieldName датасорса формы? Тогда логика будет как будто бы на таблице Метод при необходимости можно будет вызывать и из кода.
За это сообщение автора поблагодарили: S.Kuskov (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
изменение свойства mandatory у поля формы tolstjak DAX: Программирование 2 23.11.2010 13:35
Массовое изменение поля справочника Одуванчик DAX: Программирование 16 25.07.2008 16:08
Изменение Label поля группы neys DAX: Программирование 2 24.03.2006 09:24
метод leave у поля диалога? braathe DAX: Программирование 5 26.01.2006 09:23
Получить значение поля таблицы по номеру (Id) поля Anais DAX: Программирование 2 15.04.2004 13:00

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

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

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