Показать сообщение отдельно
Старый 26.03.2008, 16:30   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,971 / 3267 (116) ++++++++++
Регистрация: 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).