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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.09.2010, 15:24   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
В AX2009 не вызываются методы insert/update/delete временной таблицы
На форме в качестве источника данных указана временная таблица. У таблицы перекрыт метод update. При изменении данных на форме вызывается write датасурса, но не происходит вызова перекрытого метода update временной таблицы. Проверил в версии AX4.0 - там всё вызывалось. У всех так? Что это глюк или фича?
За это сообщение автора поблагодарили: IKA (1).
Старый 16.09.2010, 17:00   #2  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Вы проверяли, во временной таблице есть данные на тот момент, когда собираетесь вызвать метод update()? Быть может ваш запрос пуст.
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 16.09.2010 в 17:04.
Старый 16.09.2010, 17:10   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Дело в том, что сама вставка, изменение или удаление данных происходит. Т.е. я визуально наблюдаю, как меняются данные на гриде и в самой временной таблицы. проблема в том, что все изменения проходят в обход перекрытых табличных методов.

P.S.: Прошу прощения. Про АХ4.0 наврал. Там наблюдается абсолютно такоеже поведение - методы не вызываются. Значит это фича?
Старый 16.09.2010, 17:10   #4  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Аналогичная ситуация.
Старый 16.09.2010, 17:13   #5  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
не вызываются ли doUpdate(), doInsert() в обход перекрытым методам?
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 16.09.2010 в 17:16.
Старый 16.09.2010, 17:20   #6  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
И как это проверить? ))
Старый 16.09.2010, 17:34   #7  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от tricky Посмотреть сообщение
И как это проверить? ))
возможно в коде на табличной переменной вызывается метод skipDataMethods, который запрещает вызов табличных методов insert, update, delete.
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 16.09.2010 в 17:40.
Старый 16.09.2010, 17:49   #8  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от samolalex Посмотреть сообщение
возможно в коде на табличной переменной вызывается метод skipDataMethods, который запрещает вызов табличных методов insert, update, delete.
внесу маленькую поправочку skipDataMethods запрещает вызов методов insert и update.
А для запрещения вызова delete используется метод skipDeleteMethod().

Но думаю к данному делу это не относится, скорее всего это фича
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 16.09.2010, 17:57   #9  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Ax3.0 SP 3 Поведение такое же. Методы inser, update, write, delete не вызываются.
И я думаю этот как раз связано с тем что dataSource - это временная таблица. Т.к. временная таблица содержит в себе данные только пока форма открыта, а при закрытии формы она очищается, разработчики видимо решили, что использовать эти методы не нужно, все равно таблица в итоге очиститься
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 17.09.2010, 02:15   #10  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
Ax3.0 SP 3 Поведение такое же. Методы inser, update, write, delete не вызываются.
И я думаю этот как раз связано с тем что dataSource - это временная таблица. Т.к. временная таблица содержит в себе данные только пока форма открыта, а при закрытии формы она очищается, разработчики видимо решили, что использовать эти методы не нужно, все равно таблица в итоге очиститься
возможно разработчиками двигало еще и то, что таблица может быть временной не только "от рождения" а еще и с помощью вызова common.setTmp(). если позволить insert|update|delete отрабатывать на таких таблицах то целостность бд будет разрушена моментально
За это сообщение автора поблагодарили: slava (1), lev (2), petr (3), Daiver (1), gl00mie (2), S.Kuskov (2), samolalex (1).
Старый 31.03.2011, 09:36   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от db Посмотреть сообщение
возможно разработчиками двигало еще и то, что таблица может быть временной не только "от рождения" а еще и с помощью вызова common.setTmp(). если позволить insert|update|delete отрабатывать на таких таблицах то целостность бд будет разрушена моментально
Данное объяснение прозвучало так логично, что никто не стал его проверять . Сегодня обноружил что это не так. Для на самом деле постоянных таблиц с включённой опцией setTmp() вызов бизнес-логики в методах insert|update|delete происходит!

Т.е. проблема игнорирования методов проявляется только для таблиц временных "от рождения" и только при редактировании их через datasource. При явном вызове insert|update|delete из кода, методы вызываются всегда.
За это сообщение автора поблагодарили: Morpheus (2).
Старый 11.05.2011, 09:21   #12  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Я дико извиняюсь за то что внёс такую сумятицу и неразбериху, но я не прав.
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Для на самом деле постоянных таблиц с включённой опцией setTmp() вызов бизнес-логики в методах insert|update|delete происходит!
Я ошибся, ничего подобного НЕ происходит. Эфект вызова указанных методов, как оказалось, я наблюдал на всё ещё постоянной таблице (которую как я думал я сделал временной )
На лету сделать постоянную таблицу временной - казалось что может быть проще? - один вызов common.SetTmp().
Подвох крылся в том, в каком именно месте на форме сделать этот вызов. И теперь я точно знаю, что этого не стоит делать до тех пор пока не отработает super метода init формы.

К слову на теже грабли я наступил вот тут Display метод временной таблицы выполняется в компании DAT
За это сообщение автора поблагодарили: mazzy (5).
Старый 24.06.2011, 19:24   #13  
npokypatop is offline
npokypatop
Злыдни
Сотрудники компании It Box
Злыдни
 
60 / 14 (1) ++
Регистрация: 28.09.2005
Адрес: Нюрнберг
Возвращаясь к теме...
А Майкрософт починить не обещал? или это все-таки фитча?
Не придумала ничего лучше, чем вместо super() вызывать проверку датасорса validateDelete, дальше табличный delete и датасорсовый executeQuery.
Корректнее этого нет вариантов?
__________________
Все может быть и быть все может, все может быть или не быть,
но быть того никак не может, чего совсем не может быть.
Старый 16.09.2010, 17:25   #14  
anykey is offline
anykey
Участник
 
35 / 26 (1) +++
Регистрация: 04.12.2006
как вариант validateWrite\validateDelete использовать - они отрабатывают
За это сообщение автора поблагодарили: S.Kuskov (2).
Теги
временная таблица

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Помещение временной таблицы в Map Lemming DAX: Программирование 20 19.10.2017 14:16
Методы таблицы в DataSources (DAX4) Qaz Qwerty DAX: Программирование 2 16.06.2008 10:11
gatesasbait: Table caching and record delete()/update()/next Blog bot DAX Blogs 3 24.04.2008 22:55
Проблема с очисткой временной таблицы v.fedorov DAX: Программирование 13 26.10.2006 23:02
данные из временной таблицы - в Grid Vadik DAX: Программирование 31 12.08.2005 07:43
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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