Показать сообщение отдельно
Старый 06.04.2010, 18:52   #1  
Shannon is offline
Shannon
Участник
Аватар для Shannon
 
19 / 10 (1) +
Регистрация: 25.08.2004
Адрес: Kyiv
Проблема с ParmId
[AX 4.0 (4.0.2503), MS SQL]

В измененной версии Аксапты, в классе purchFormLetter, закомментировано создание ParmId. (Почему именно, разбираться времени нет — тем более, что клиенты говорят, что до сих пор это не мешало.)

Но поскольку ParmId все же нужен, то я его создаю сам:

X++:
                    formLetter  = new PurchFormLetter_InvoiceAuditCT();

                    formLetter.transDate(systemdateget());
                    formLetter.specQty(PurchUpdate::All);
                     
                   // manually obtaining ParmId, because it is disabled in PurchFormLetter
                   numSeq = NumberSeq::newGetNum(NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(ParmId))));
                    parmId = numSeq.num();

                    formLetter.parmId(parmId);
                    formLetter.sumBy(AccountOrder::Account);
                    formLetter.createParmUpdate();
Но позже возникают проблемы: в методе updateNow класса PurchFormLetter_Invoice, когда выполнение доходит до кода:

X++:
                    recordListPurchParmLine.first(purchParmLine);
                    while (purchParmLine)
                    {
                    

    {
…то в цикл мы не входим, и, соответственно, ничего не постится, и я получаю сообщение об ошибке.

Если посмотреть, как формируется recordListPurchParmLine, то видно, что запрос имеет примерно такой вид:

X++:
SELECT * FROM PurchParmLine WHERE ((ParmId = N'21100019165')) AND ((TableRefId = N'21100019168'))
При этом в запросе виден ParmId, который я создал в коде — но в PurchParmLine его почему-то нет! Вместо этого я нахожу в PurchParmLine соответствующую строчку, и ParmId в ней равно '21100019082' (значения ParmId меняются при каждой попытке проведения, но смысл в том, что они не равны).

Подскажите, в каком хотя бы направлении думать?

Последний раз редактировалось Shannon; 06.04.2010 в 19:00.