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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.09.2006, 08:59   #1  
madproger is offline
madproger
Программист
 
82 / 19 (1) ++
Регистрация: 08.09.2006
Адрес: Москва
Транзакции
Всем здрасте

у меня например есть два метода m1 и m2

m1()
{
ttsbegin;
m2();

<some_update_operation>
ttscommit;
}

m2()
{

<few_insert_update_operations>

}

Вопрос вот в чем если у меня произошла ошибка в методе два (не прошел запрос insert)
пройдем ли запрос в методе один и (или) выполнится ли откат?

ВОпрос 2 - в каком (примерное) случае такое может произойти - запрос из метода 1 прошел а из метода два нет?

Заранее спасибо за ответ
Старый 28.09.2006, 09:07   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
1. при эксепшинах происходит ttsAbort
2. не должно
Старый 28.09.2006, 09:48   #3  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
mozhet takoe bit', esli delajetsa ExceptionHandling

try {
m1();
} catch {}

try {
m2();
} catch {}
Старый 28.09.2006, 10:00   #4  
madproger is offline
madproger
Программист
 
82 / 19 (1) ++
Регистрация: 08.09.2006
Адрес: Москва
Угу - счас вот сижу изучаю код чтобы всунуть обработку исключений куда надо

Интересно почему никто не любит документировать свой код
Старый 28.09.2006, 10:15   #5  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
It is Axapta! :P
Старый 28.09.2006, 10:48   #6  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от madproger Посмотреть сообщение
Угу - счас вот сижу изучаю код чтобы всунуть обработку исключений куда надо

Интересно почему никто не любит документировать свой код
Это вечный вопрос, не имеющий ответа..
Хотя есть уникумы, которые на попадают под эту категорию и я одного такого знаю...
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 28.09.2006, 11:26   #7  
petr is offline
petr
Участник
Соотечественники
 
561 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Хороший код документирует сам себя. И примеров такого кода достаточно много в Аксапта, особенно в слое SYS. После достаточной практики программирования в Аксапта у меня, например, не возникает проблем с отсутствием документирования кода.
Старый 28.09.2006, 11:46   #8  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Согласен с petr
Тем более, что не известен уровень детализации документирования. Иному "читателю" хоть простыню комментариев напиши - всё без толку. Тогда и техническое задание в комментарии кода пихать надо.

Цитата:
После достаточной практики программирования в Аксапта
Код в Аксапте достаточно однообразен, поэтому разработчики Аксапты и не заморачивались с документированием кода, да и не будут этого делать.
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 28.09.2006, 13:02   #9  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
В Axapta был применен принип рефакторинга - когда код сам по себе является комментарием. Поэтому НИКОГДА не называйте свои переменные a,b,c, myTbl - лучше полными именами.

(это я не про пример, просто так - напоминание )

С Уважением,
Георгий
Старый 28.09.2006, 13:05   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
>>>принип рефакторинга

но не до конца. очень много длинных методов
Старый 28.09.2006, 13:47   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Delfins Посмотреть сообщение
mozhet takoe bit', esli delajetsa ExceptionHandling

try {
m1();
} catch {}

try {
m2();
} catch {}
Проверял ли ты это?
Старый 28.09.2006, 14:07   #12  
madproger is offline
madproger
Программист
 
82 / 19 (1) ++
Регистрация: 08.09.2006
Адрес: Москва
Еще такой вопросик

Как узнать - прошел запрос или нет? Просто метод insert - void
Старый 28.09.2006, 14:09   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
после вставки записи в таблицу ей присваивается идентификатор записи, в народе, RecId

Вот если он ненулевой, значит прошел
Старый 28.09.2006, 14:36   #14  
madproger is offline
madproger
Программист
 
82 / 19 (1) ++
Регистрация: 08.09.2006
Адрес: Москва
А если я два раза сделаю инсерт?

Например

Table1.f1 = 1;
Table1.f2 = 2;
Table1.insert();

Table1.f3 = 1;
Table1.f4 = 2;
Table1.insert();

В данном случае Что будет с RecID? Обнуляется ли он перед выполнением запроса?

ЗЫ Зачем так делать не спрашивайте Так оно есть
Старый 28.09.2006, 14:45   #15  
madproger is offline
madproger
Программист
 
82 / 19 (1) ++
Регистрация: 08.09.2006
Адрес: Москва
Ой - ступил Сорри
Старый 28.09.2006, 14:55   #16  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
перед заполнением табличной переменной надо делать clear() и initValue() - не забывай! на ините - код может лежать.

Георгий
Старый 28.09.2006, 15:07   #17  
madproger is offline
madproger
Программист
 
82 / 19 (1) ++
Регистрация: 08.09.2006
Адрес: Москва
А по каким причинам может не сработать метод insert()?
Старый 28.09.2006, 15:12   #18  
madproger is offline
madproger
Программист
 
82 / 19 (1) ++
Регистрация: 08.09.2006
Адрес: Москва
ПРосто например в примере выше - я полям таблицы понаприсваивал кучу всего и запустил этот метод

Если я что то не то присвоил - мне поругается компилятор

Если же дело дошло до инсерта - что может помешать ему выполнится?
Старый 28.09.2006, 15:25   #19  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
может быть перекрыт метод insert на таблицы. Если нужно в обход этого записать - doInsert используется.
Старый 28.09.2006, 15:49   #20  
madproger is offline
madproger
Программист
 
82 / 19 (1) ++
Регистрация: 08.09.2006
Адрес: Москва
Я наверное замучил вас, но еще вопросик

у меня есть так

1-й пользователь
ttsbegin;
table1.f1 = 2;
table1.f2 = 3;

table1.insert();
ttscommit;

2-й пользователь
ttsbegin;
SELECT FORUPDATE table1
WHERE table1.initials =='JD';
table1.name == 'Jane Doe';
table1.insert();
ttscommit;

Первый пользователь только начал транзакцию, заполнил поля но не сделал еще инсерт

Сможет ли второй польватель начать транзакцию и открыть таблицу?
Сможет ли он обновить данные?
И что будет у первого пользователя если он в момент обновления вторым пользователем (на таблице по идее блокировка) он попытается сделать инсерт?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Можно-ли установить уровень изоляции транзакции ? egorych DAX: Программирование 12 14.09.2007 14:17
Откат транзакции за вчерашний день??? Возможно в SQL2000??? director DAX: Администрирование 5 16.12.2005 11:26
Вложенные транзакции ttsbegin\ttscommit dn DAX: Программирование 9 19.01.2004 17:07
Транзакции: баг или фича ? Yury DAX: Программирование 4 21.02.2003 17:54
транзакции andreynikolai DAX: Программирование 2 20.06.2002 17:51
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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