|
16.09.2010, 15:24 | #1 |
Участник
|
В AX2009 не вызываются методы insert/update/delete временной таблицы
На форме в качестве источника данных указана временная таблица. У таблицы перекрыт метод update. При изменении данных на форме вызывается write датасурса, но не происходит вызова перекрытого метода update временной таблицы. Проверил в версии AX4.0 - там всё вызывалось. У всех так? Что это глюк или фича?
|
|
|
За это сообщение автора поблагодарили: IKA (1). |
16.09.2010, 17:00 | #2 |
Участник
|
Вы проверяли, во временной таблице есть данные на тот момент, когда собираетесь вызвать метод update()? Быть может ваш запрос пуст.
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 16.09.2010 в 17:04. |
|
16.09.2010, 17:10 | #3 |
Участник
|
Дело в том, что сама вставка, изменение или удаление данных происходит. Т.е. я визуально наблюдаю, как меняются данные на гриде и в самой временной таблицы. проблема в том, что все изменения проходят в обход перекрытых табличных методов.
P.S.: Прошу прощения. Про АХ4.0 наврал. Там наблюдается абсолютно такоеже поведение - методы не вызываются. Значит это фича? |
|
16.09.2010, 17:10 | #4 |
Участник
|
Аналогичная ситуация.
|
|
16.09.2010, 17:13 | #5 |
Участник
|
не вызываются ли doUpdate(), doInsert() в обход перекрытым методам?
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 16.09.2010 в 17:16. |
|
16.09.2010, 17:20 | #6 |
Участник
|
И как это проверить? ))
|
|
16.09.2010, 17:34 | #7 |
Участник
|
возможно в коде на табличной переменной вызывается метод skipDataMethods, который запрещает вызов табличных методов insert, update, delete.
__________________
С уважением, Александр. Последний раз редактировалось samolalex; 16.09.2010 в 17:40. |
|
16.09.2010, 17:49 | #8 |
Ищущий знания...
|
Цитата:
А для запрещения вызова delete используется метод skipDeleteMethod(). Но думаю к данному делу это не относится, скорее всего это фича
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
16.09.2010, 17:57 | #9 |
Ищущий знания...
|
Ax3.0 SP 3 Поведение такое же. Методы inser, update, write, delete не вызываются.
И я думаю этот как раз связано с тем что dataSource - это временная таблица. Т.к. временная таблица содержит в себе данные только пока форма открыта, а при закрытии формы она очищается, разработчики видимо решили, что использовать эти методы не нужно, все равно таблица в итоге очиститься
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
17.09.2010, 02:15 | #10 |
Роман Долгополов (RDOL)
|
Цитата:
Сообщение от lev
Ax3.0 SP 3 Поведение такое же. Методы inser, update, write, delete не вызываются.
И я думаю этот как раз связано с тем что dataSource - это временная таблица. Т.к. временная таблица содержит в себе данные только пока форма открыта, а при закрытии формы она очищается, разработчики видимо решили, что использовать эти методы не нужно, все равно таблица в итоге очиститься |
|
|
За это сообщение автора поблагодарили: slava (1), lev (2), petr (3), Daiver (1), gl00mie (2), S.Kuskov (2), samolalex (1). |
31.03.2011, 09:36 | #11 |
Участник
|
Цитата:
Т.е. проблема игнорирования методов проявляется только для таблиц временных "от рождения" и только при редактировании их через datasource. При явном вызове insert|update|delete из кода, методы вызываются всегда. |
|
|
За это сообщение автора поблагодарили: Morpheus (2). |
11.05.2011, 09:21 | #12 |
Участник
|
Я дико извиняюсь за то что внёс такую сумятицу и неразбериху, но я не прав.
Цитата:
На лету сделать постоянную таблицу временной - казалось что может быть проще? - один вызов common.SetTmp(). Подвох крылся в том, в каком именно месте на форме сделать этот вызов. И теперь я точно знаю, что этого не стоит делать до тех пор пока не отработает super метода init формы. К слову на теже грабли я наступил вот тут Display метод временной таблицы выполняется в компании DAT |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
24.06.2011, 19:24 | #13 |
Злыдни
|
Возвращаясь к теме...
А Майкрософт починить не обещал? или это все-таки фитча?
Не придумала ничего лучше, чем вместо super() вызывать проверку датасорса validateDelete, дальше табличный delete и датасорсовый executeQuery. Корректнее этого нет вариантов?
__________________
Все может быть и быть все может, все может быть или не быть, но быть того никак не может, чего совсем не может быть. |
|
16.09.2010, 17:25 | #14 |
Участник
|
как вариант validateWrite\validateDelete использовать - они отрабатывают
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |