26.04.2012, 12:54 | #1 |
MCTS
|
Метод, вызывающийся на изменение поля
Допустим, есть таблица. Допустим, на этой таблице перекрыт modifiedField(). Допустим код на изменение одного из полей должен отрабатывать только на определенной форме, и не должен работать при программной обработке данных. Как бы вы написали код на modifiedField(), чтобы это все реализовать правильно?
Последний раз редактировалось Eldar9x; 26.04.2012 в 12:58. |
|
26.04.2012, 12:58 | #2 |
Участник
|
Используйте modifiedField не на таблице а на филде датасурса
P.S.: К стати и табличный modifiedField автоматически не вызывается при программной обработке, если только его не вызвать явно. |
|
|
За это сообщение автора поблагодарили: lev (1). |
26.04.2012, 13:06 | #3 |
MCTS
|
Надо как-то на методе таблицы. Запретили выносить бизнес-логику на форму. И modifiedField вызывают явно в коде.
|
|
26.04.2012, 13:17 | #4 |
Участник
|
Цитата:
Можно вот так: 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 |
Роман Долгополов (RDOL)
|
может дело не в "определенных" формах таки, а в формах, отображающих немного разные сущности хранящиеся в одной таблице?
Тогда на таблице должен быть признак (енум) что же это за сущность (ну например как тип заказа на продажу) в зависимости от которого можно создать несколько классов обработчиков (SalesLineType, SalesTableType) и реализовать в них разное поведение в ответ на одно и то же событие. Если же отличия реально только в дизайне формы, то скорее всего тут и все modified должны срабатывать вне зависимости от того откуда оно вызвано. Иначе либо косяк архитектуры, либо что то совсем простое, чему явно место именно на форме, а не на таблице |
|
26.04.2012, 13:19 | #6 |
Ищущий знания...
|
Вот это
вот с этим не стыкуется
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
26.04.2012, 13:40 | #7 |
Роман Долгополов (RDOL)
|
это несомненно решение технической проблемы, но прежде чем так делать автору темы было неплохо таки выяснить у "запрещальщиков" что же они хотят добиться своими запретами и всё ли нормально с постановкой задачи. так как за такой код не в качестве примера, а в нормальной разработке необходимо лишать какой нито части тела
|
|
|
За это сообщение автора поблагодарили: gl00mie (2), someOne (3), pedrozzz (2). |
26.04.2012, 14:01 | #8 |
Участник
|
Цитата:
Сообщение от db
это несомненно решение технической проблемы, но прежде чем так делать автору темы было неплохо таки выяснить у "запрещальщиков" что же они хотят добиться своими запретами и всё ли нормально с постановкой задачи. так как за такой код не в качестве примера, а в нормальной разработке необходимо лишать какой нито части тела
|
|
27.04.2012, 08:09 | #9 |
Участник
|
По-моему, задача не могла быть поставлена таким образом, это ерунда какая-то; надо включить здравый смысл, и тогда все встанет на свои места. И еще: если задача ставится человеком, далеким от программирования в Аксапте, стоит критически воспринимать его "советы" относительно ее реализации в коде.
|
|
27.04.2012, 08:25 | #10 |
Участник
|
А если на таблице сделать метод modifiedFieldName(), который вызвать в методе modified поля FieldName датасорса формы? Тогда логика будет как будто бы на таблице Метод при необходимости можно будет вызывать и из кода.
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |