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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.03.2008, 16:30   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,895 / 3172 (113) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Таблица NumberSequenceGroupRef метод find
X++:
public static NumberSequenceGroupRef  find(extendedTypeId         dataTypeId,
                                    NumberSequenceGroupId  numberSequenceGroupId,
                                    boolean                update = true)
{
  ...
}

Интересно, для чего дефолтный параметр update объявлен как true ?

При обработке документов, это приводит к тому что идут блокировки forUpdate на записях таблицы там где это казалось бы необязательно.

Например при обработке накладной в методе
\Classes\SalesFormLetter_Invoice\allocateNumAndVoucher

создается ощущение что во многих местах разработчики поставили вызов NumberSequenceGroupRef::find(...) со значением параметра update по дефолту, по привычке полагая что вызов будет без foupdate блокировок, но блокировки есть - так что при обработке накладных с разных рабочих мест пользователи блокируют одни и те же записи - резко ухудшается параллелизм работы.

Итак вопрос :
1. Зачем параметр Update сделан по умолчанию true ?
2. Можно ли в указанном примере
\Classes\SalesFormLetter_Invoice\allocateNumAndVoucher
при вызове NumberSequenceGroupRef::find() поставить его false ?
За это сообщение автора поблагодарили: dn (2).
Старый 26.03.2008, 17:08   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
В Dynamics AX 2009 значение по умолчанию этого параметра = false
Поэтому думаю, что можно довольно уверенно поменять этот параметр.
Но я бы все равно сперва перекрестными ссылками прошелся, посмотрел где метод этот используется..
За это сообщение автора поблагодарили: dn (2), Logger (1).
Старый 27.03.2008, 10:21   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,895 / 3172 (113) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от kashperuk Посмотреть сообщение
В Dynamics AX 2009 значение по умолчанию этого параметра = false
А в таблице NumberSequenceGroup тоже false стоит ?
В 3-ке true.
Старый 27.03.2008, 11:34   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Logger Посмотреть сообщение
А в таблице NumberSequenceGroup тоже false стоит ?
В 3-ке true.
Стоит true.
Есть доказательства/мысли, что должно быть false?
Старый 27.03.2008, 14:39   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,895 / 3172 (113) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Talking
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Стоит true.
Есть доказательства/мысли, что должно быть false?
Доказательств нет, но есть соображение что по аналогии с NumberSequenceGroupRef надо поставить false.

Но самый прикол в том что если посмотреть по перекрестным ссылкам, то этот метод нигде не вызывается !
Так что вопрос теряет практический смысл
Старый 23.11.2009, 13:05   #6  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Итак вопрос :
1. Зачем параметр Update сделан по умолчанию true ?
2. Можно ли в указанном примере
\Classes\SalesFormLetter_Invoice\allocateNumAndVoucher
при вызове NumberSequenceGroupRef::find() поставить его false ?
Столкнулись с такими же проблемами. А все-таки не было ли глубокого смысла в установке на SYS слое значения параметра update в true? Т.е. не используется ли это для наложения "косвенной" блокировки для выбора номера из
NumberSequenceTable
(по аналогии c InventUpdateTTSControl.setLockInventSumCreate(), когда при обновлении InventSum накладывается блокировка по InventDim либо InventItemLocation)?
Старый 23.11.2009, 15:15   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,895 / 3172 (113) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Может быть.
Только зачем там эта блокировка ? Да еще и из основного соединения ?

Мы просто поменяли дефолтное значение параметра и пока проблем не было.
Старый 26.11.2009, 15:37   #8  
SIrina is offline
SIrina
Участник
Аватар для SIrina
 
51 / 10 (1) +
Регистрация: 02.03.2007
Может еще в метод findPrintoutJournalNum_CustInvM15_RU таблицы NumberSequenceGroupRef передавать false ?

X++:
public static NumberSequenceGroupRef findPrintoutJournalNum_CustInvM15_RU(NumberSequenceGroupId _numberSequenceGroupId,
                                                                          boolean               _update = false /*true*/)
{
    return NumberSequenceGroupRef::find(typeId2ExtendedTypeId(typeid(PrintoutJournalNum_CustInvM15_RU)),
                                                              _numberSequenceGroupId,
                                                              _update);
}
__________________
MS DAX 2012
Теги
ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как метод TextBuffer.Find работает с регулярными выражениями Lucky13 DAX: Программирование 3 29.02.2008 15:08
daxmy: AOT Find function Blog bot DAX Blogs 0 17.08.2007 01:23
Таблица LedgerJournalTrans, метод madeDisposable_RU() - баг ! TasmanianDevil DAX: Функционал 0 03.07.2007 13:13
Dynamics AX Geek: cross-references & find Blog bot DAX Blogs 0 28.10.2006 16:40
Передача массива VARIANTов в Automation метод Maximin DAX: Программирование 0 09.10.2002 19:31

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:09.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.