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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2013, 00:14   #1  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Есть неплохой разбор в статье
https://community.dynamics.com/ax/b/...c-locking.aspx

Но автор не все рассмотрел.

Вот мои комментарии к статье своим собратьям на мерседесах.
Цитата:
What normally I use in the most cases from version AX 4.0 and the author did not mention about that way.

while select myTable
{
ttsBegin;
myTable.selectForUpdate(true);
myTable.MyField = 'something';
myTable.update();
ttsCommit;
}

In versions 2.5 and 3.0 I even declared a second table buffer myTable_upd to select for update every record individually while the first buffer myTable was just for getting records and checking conditions.

I might be wrong but despite a fact many developers use that new and probably modern style (i.e. select for update before ttsbegin) I am still concern
1. That article did not highlight how SQL Server behaves if locks or exceptions happened. Normally in T-SQL (in which X++ are translated) we use BEGIN { TRAN | TRANSACTION } before to select for update.
2. I have never seen official examples of code (MSDN, MCT materials) including AX 2012 where that modern style is used.

Am I too old and not creative enough anymore?
В каком месте я неправ?
Старый 06.12.2013, 07:04   #2  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,347 / 996 (38) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Вот мои комментарии к статье своим собратьям на мерседесах.
А тебе не приходила в голову мысль о том, что марка машины и компетентность коррелируют слабо? Возможен ли такой вариант, что когда-то система ругнулась, что не хватает tts-ов, вот он их и вставил? Получил бонус, может даже повышение.
Может ли так случиться, что некий разработчик любой ценой будет отстаивать принятные решения исключительно для того, чтобы не потерять лицо и мерседес? И возможна ли такая ситуация, что ты роешь не код, а под своего пакистанского коллегу?
Так вот, если это ваш случай, не думай что он этого не видит. Может в коде наши пакистанские коллеги не всегда разбираются, зато уж по части иерархии и карьеризма им можно большую фору дать.
__________________
Isn't it nice when things just work?
За это сообщение автора поблагодарили: gl00mie (1).
Старый 06.12.2013, 15:47   #3  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от macklakov Посмотреть сообщение
А тебе не приходила в голову мысль о том, что марка машины и компетентность коррелируют слабо? Возможен ли такой вариант, что когда-то система ругнулась, что не хватает tts-ов, вот он их и вставил? Получил бонус, может даже повышение.
Может ли так случиться, что некий разработчик любой ценой будет отстаивать принятные решения исключительно для того, чтобы не потерять лицо и мерседес? И возможна ли такая ситуация, что ты роешь не код, а под своего пакистанского коллегу?
Так вот, если это ваш случай, не думай что он этого не видит. Может в коде наши пакистанские коллеги не всегда разбираются, зато уж по части иерархии и карьеризма им можно большую фору дать.
Он неплохой по местным меркам программист и адекватный человек. Как выяснилось полностью скопировал класс сделанный очень известным интегратором и просто заменил поле. И он согласился с моими доводами но осадок у него остался, так как я играю не по их правилам общения в принципе.

Там еще и другая "фича" - этот метод (перебирающий записи в SalesTable и SalesLine и обновляющий их) находится внутри try catch retry. То есть при update conflict на одной записи вся таблица будет перебрана и обновлена заново
Да бог с этим.

Слава богу я контрактник и не в постоянном коллективе поэтому вопросы иерархии и карьеризма для меня упрощаются.
Старый 06.12.2013, 11:21   #4  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Есть неплохой разбор в статье
https://community.dynamics.com/ax/b/...c-locking.aspx

What normally I use in the most cases from version AX 4.0 and the author did not mention about that way.

while select myTable
{
ttsBegin;
myTable.selectForUpdate(true);
myTable.MyField = 'something';
myTable.update();
ttsCommit;
}
Попробуйте в 2012 сделать так с любой дочерней таблицей - получите рантайм
За это сообщение автора поблагодарили: ax_mct (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ответ: По поводу while select forUpdate AndyD DAX: Программирование 2 19.07.2012 18:32
dynamics-ax-dev: CLR Errors & ttsbegin/ttscommit Blocks Blog bot DAX Blogs 0 02.11.2010 18:05
Целесообразность отмены пересчетов перед закрытием склада vc DAX: Функционал 2 18.04.2010 16:54
FORUPDATE не может использоваться для представления - Предупреждение от АОСа /Antony/ DAX: Администрирование 4 09.11.2009 13:01
ttsbegin ttscommit and changecompany() Volodymyr DAX: Программирование 9 29.08.2008 15:36

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

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

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