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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.10.2008, 13:33   #21  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Миш, странно... по общему месту работы помню, что нельзя было в одной сессии отлаживать разноску документа, а во второй смотреть за обновлением данных.
Старый 29.10.2008, 13:38   #22  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
2 Wamr
Так это для блокировки изменяемых данных сделано.
Т.е. прочитать в другой транзации можно и изменений там не будет видно, но при попытке проапдейтить будет блокировка.
__________________
Axapta v.3.0 sp5 kr2
Старый 29.10.2008, 13:40   #23  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
AndyD, извини, не понял мысль... о чем речь?
Старый 29.10.2008, 13:42   #24  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
По поводу Oracle, возможно, в одной транзакции смотрели?
__________________
Axapta v.3.0 sp5 kr2
Старый 29.10.2008, 13:43   #25  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
В этом контексте совершенно не понятно зачем в find методы понапихали selectLocked(!_update)
На это отписался
__________________
Axapta v.3.0 sp5 kr2
Старый 29.10.2008, 13:43   #26  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Wamr Посмотреть сообщение
Миш, странно... по общему месту работы помню, что нельзя было в одной сессии отлаживать разноску документа, а во второй смотреть за обновлением данных.
Я не знал об этом и никогда не обращал на это внимание.
Как я делаю.
1) Создал таблицу Table1
2) Создал string поле Field1
3) Забил строчку с "1"
4) Запускаю job
X++:
static void Job21(Args _args)
{
    Table1 t;
;
    ttsbegin;
    while select forupdate t
    {
        t.Field1 = "3";
        t.update();
    }
    while select forupdate t
    {
        t.Field1 = "4";
        t.update();
    }
    ttscommit;
}
На втором select смотрю t.Field1 = "3". Значит обновилось.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 29.10.2008, 13:44   #27  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Ну да, я правильно подумал
Вы откройте другую пользовательскую сессию и смотрите в ней.
__________________
Axapta v.3.0 sp5 kr2
Старый 29.10.2008, 13:47   #28  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
это вряд ли. Открывал 2 Аксапты, в одной в дебагере по шагам выпонял разноску, а во второй смотрел как меняются статусы, аналитики, создаются проводки и т.д. и т.п.
так вот они не менялись пока обработка не заканчивалась

Последний раз редактировалось Wamr; 29.10.2008 в 13:49.
Старый 29.10.2008, 13:50   #29  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от AndyD Посмотреть сообщение
Ну да, я правильно подумал
Вы откройте другую пользовательскую сессию и смотрите в ней.
А!!!
Вы первый уточнили что речь идёт о параллельной работе.
Автор то темы в одной сессии делает.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 29.10.2008, 13:54   #30  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Ну, от исходного вопроса уже в сторону ушли
__________________
Axapta v.3.0 sp5 kr2
Старый 29.10.2008, 14:25   #31  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Цитата:
readers are not blocked behind writers and selecting with NOLOCK is no longer necessary
Цитата:
В этом контексте совершенно не понятно зачем в find методы понапихали selectLocked(!_update)
Цитата:
Так это для блокировки изменяемых данных сделано.
Т.е. прочитать в другой транзации можно и изменений там не будет видно, но при попытке проапдейтить будет блокировка
как связаны первые 2 цитаты я понимаю, а вот третья как-то не очень
Старый 29.10.2008, 15:00   #32  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Wamr Посмотреть сообщение
как связаны первые 2 цитаты я понимаю, а вот третья как-то не очень
Ну вот отойди на минутку, так унесёт в такие дали.

Исходный вопрос был про ту же самую сесиию и транзакцию
В той же сессии (и транзакции) где вы произвели изменение, но ещё его не зафиксировали (Commit), ваше изменение всегда будет видно. И не важно сиквел это или оракл!

А вот в разных сессиях действительно для сиквела на тройке имел весто тот факт, что изменяя данные в одной сессии и не фиксируя транзакцию можно было увидеть уже эти изменения в другой сессии! (из-за использования NOLOCK вне транзакций). Однако если бы вы эти изменённые но незафиксированные записи в другой сессии попытались ещё раз изменить, то ни фига не получится, т.к. эти данные являются заблокированными и вы повисните в блокировке.

На оракле такого быть не может по определению.. А на АХ4+2005 это уже вылечили, как отмечено выше...
__________________
Zhirenkov Vitaly
Старый 29.10.2008, 15:09   #33  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от ZVV Посмотреть сообщение
В той же сессии (и транзакции) где вы произвели изменение, но ещё его не зафиксировали (Commit), ваше изменение всегда будет видно. И не важно сиквел это или оракл!

...
Ну я тут конечно имел ввиду в БД всегда видны.
В Аксапте скажем так всегда "должны быть видны, но иногда бывают баги когда не видны"
См. выше про глюк с InventTrans.
__________________
Zhirenkov Vitaly
Старый 29.10.2008, 17:28   #34  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
2 Wamr
На 2005 версионность может быть отключена (что и сделано по умолчанию). И с 2000-м Ax 4 разве не работает?
__________________
Axapta v.3.0 sp5 kr2
Старый 30.10.2008, 20:09   #35  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
AndyD,
учитывая, что connection поумолчанию ReadComited это нежизнеспособные комбинации
Старый 11.11.2008, 06:43   #36  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
Почему отрабатывает без ошибок но накладную не разносит? ((

X++:
select * from purchTable
    join purchLine
        where purchTable.PurchId == rDeferralsJournalTrans.PurchId &&
              (purchLine.PurchId == rDeferralsJournalTrans.PurchId);
    purchLine = PurchLine::findRecId(purchLine.RecId,true);
    purchLine.PurchReceivedNow = rDeferralsJournalTrans.Qty;
    purchLine.InventReceivedNow = rDeferralsJournalTrans.Qty;
    purchLine.Dimension = rDeferralsJournalTrans.Dimension;
    purchLine.update();
    purchFormLetter = PurchFormLetter::construct(DocumentStatus::Invoice);
    purchFormLetter.createParmLine(purchLine);
    ttsbegin;
    select forupdate * from purchParmLine
        where purchParmLine.OrigPurchId==rDeferralsJournalTrans.PurchId &&
              purchParmLine.ParmId==purchFormLetter.parmId();
    purchParmLine.LineAmount=rDeferralsJournalTrans.AmountCur;
    purchParmLine.update();
    ttscommit;
    purchFormLetter.update(purchTable,
                           rDeferralsJournalTrans.DocumentNum,
                           systemDateGet(),
                           PurchUpdate::ReceiveNow,
                           AccountOrder::None,
                           NoYes::No,
                           NoYes::No);
__________________
Лучше сделать и жалеть, чем жалеть что не сделал
Старый 11.11.2008, 10:19   #37  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
Уже как только не пробовал, подскажите что и как можно сделать??
__________________
Лучше сделать и жалеть, чем жалеть что не сделал
Старый 11.11.2008, 10:48   #38  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
А подебагить?

Вопросов по коду конечно много, но если по существу, то вы могли бы глянуть код метода purchFormLetter.update() и увидеть, что при его вызове чистятся "параметровые таблицы", которые были заданы ранее (см. вызов initLinesQuery()). И поэтому эти телодвижения над PurchParmLine перед вызовом purchFormLetter.update будут благополучно удалены.
__________________
Zhirenkov Vitaly
Старый 11.11.2008, 10:49   #39  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
О том как в этом случае делать я приводил ссылку в самом начале этого же топика.
Разноска накладной
__________________
Zhirenkov Vitaly
Старый 11.11.2008, 10:52   #40  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
Цитата:
Сообщение от ZVV Посмотреть сообщение
А подебагить?

Вопросов по коду конечно много, но если по существу, то вы могли бы глянуть код метода purchFormLetter.update() и увидеть, что при его вызове чистятся "параметровые таблицы", которые были заданы ранее (см. вызов initLinesQuery()). И поэтому эти телодвижения над PurchParmLine перед вызовом purchFormLetter.update будут благополучно удалены.
Спс понятно, а как тогда сумму в строках накладной поменять???

че то я туплю
__________________
Лучше сделать и жалеть, чем жалеть что не сделал
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Разноска накладной по проектам Ark DAX: Функционал 3 27.02.2009 13:16
Производство.Разноска отгрузочной накладной в главную книгу. AlexeyBP DAX: Функционал 1 10.04.2007 12:01
Разноска накладной при переходе с 2.5 на 3.0 sred DAX: Функционал 0 09.10.2006 10:51
разноска счета на оплату после разноски накладной OlegKocherga DAX: Функционал 14 12.03.2004 17:48
Разноска операций Закупка, Заказ по счетам ГК по отборочной накладной. Как настроить? May DAX: Функционал 5 01.08.2003 11:13

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

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

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