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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.12.2008, 14:32   #1  
111andrei is offline
111andrei
Участник
Самостоятельные клиенты AX
 
52 / 9 (1) +
Регистрация: 29.04.2004
Адрес: Москва
Запись уже существует????
Такой вопрос. Встала необходимость автоматического создания закупок через код.
Код такой
importPurchTable.clear();
importPurchTable.initValue();
importPurchTable.initFromVendTable(vendtable::find(orderAccount));
numberSeq = NumberSeq::newGetNumFromCode(PurchParameters::numRefPurchId().NumberSequence,true);
importPurchTable.PurchId = numberSeq.num();
numberSeq.used();
importPurchTable.PurchPlacer = empltable::userId2EmplId(curuserid());
importPurchTable.DeliveryDate = todate;
importPurchTable.insert();

Закупка создается примерно через раз. В половине случаев пишет
Невозможно создать запись в 'Складские проводки' ('InventTrans') Ссылка: Закупка, ЗП_00130.
Ошибка происходит на методе insert() табл. InventTrans.
Причем это происходит в базе, в которой я работаю один (тестовая), флаг в номерной серии НЕПРЕРЫВНАЯ снят. AX 3.0 SP 3
Если зайти в номерную серию и увеличить следующий номер, результат такой же: то создается закупка, то генерируется ошибка
В чем может быть проблема???
Старый 30.12.2008, 14:42   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Очень похоже, что данные залиты из другой базы средствами SQL. Счетчик recId отстал от даных.
Найдите максимальный recId в InventTrans и с некоторым смещением укажите его в SystemSequences
Старый 30.12.2008, 14:42   #3  
Bober is offline
Bober
Участник
 
311 / 104 (4) +++++
Регистрация: 29.05.2007
..ну и где тут в Вашем коде создается Inventtrans? может быть, какой-то еще код исполняется, про который Вы забыли упомянуть?
Старый 30.12.2008, 14:46   #4  
111andrei is offline
111andrei
Участник
Самостоятельные клиенты AX
 
52 / 9 (1) +
Регистрация: 29.04.2004
Адрес: Москва
Да забыл добавить код для создания строк, т.к. ошибка генерируется при создании строк, причем при создании одних и тех же номенклатур, ошибка возникает то на одной, то на другой номенклатуре
PurchLine purchLine;
InventDim inventDim;

;
purchLine.clear();
purchLine.initValue();
purchLine.initFromPurchTable(importPurchTable);
purchLine.ItemId = ItemId;
purchLine.initFromInventTable(InventTable::find(purchLine.ItemId));

purchLine.PurchPrice = PurchPrice;
purchLine.PurchUnit = PurchUnit;
purchLine.PriceUnit = 1;
purchLine.PurchQty = PurchQty;
purchLine.LineAmount = purchLine.calcLineAmount(purchLine.PurchQty);



inventDim = purchLine.inventDim();
purchLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;


purchLine.createLine(true, false, False, true, true, False);
Старый 30.12.2008, 14:59   #5  
111andrei is offline
111andrei
Участник
Самостоятельные клиенты AX
 
52 / 9 (1) +
Регистрация: 29.04.2004
Адрес: Москва
строки закупок создаются из постоянной таблицы аксапты, а не внешней табл. sql и искать максимальный recid, я думаю, не выход.
Старый 30.12.2008, 15:13   #6  
111andrei is offline
111andrei
Участник
Самостоятельные клиенты AX
 
52 / 9 (1) +
Регистрация: 29.04.2004
Адрес: Москва
Но проблема скорее всего действительно в recid. У нас этот проект запущен на рабочей базе и действительно периодически возникает ситуация, когда аксапта пишет, что запись уже существует причем при создании строк совершенно разных таблиц: Заказов, Складских проводок и др.
Старый 30.12.2008, 15:18   #7  
Bober is offline
Bober
Участник
 
311 / 104 (4) +++++
Регистрация: 29.05.2007
Цитата:
Сообщение от 111andrei Посмотреть сообщение
Но проблема скорее всего действительно в recid.
у Вас бы тогда проблемы возникали не через раз, а сразу и навсегда.

Попробуйте для начала сделать глобальную реиндексацию базы.

Последний раз редактировалось Bober; 30.12.2008 в 15:22.
Старый 30.12.2008, 17:04   #8  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Можно ещё посмотреть отличаются ли индексы стандартного inventTrans-а и вашего.
Вдруг их как то некорректно изменили или какой-нибудь свой добавили.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Куда идёт запись при разноске журналов зарплат?! 3oppo DAX: Программирование 5 28.07.2005 12:09
Исчезает запись в плане счетов zarik DAX: Прочие вопросы 6 03.05.2005 10:32
Уже существует проводка за более позднюю дату rus_stas DAX: Функционал 2 09.11.2004 20:17
Product Builder: "Модель продукции не существует" Hamster DAX: Функционал 4 17.03.2004 17:46
Как выбрать запись в Grid'e на WebForm'e Jony DAX: Программирование 1 26.08.2003 13:45

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

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

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