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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.11.2008, 08:58   #1  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
Примерно такой вот нужен код (сильно не бейте :-)). Фин. учет себестоимости должен быть по операциям.

DeleteConsumptionEntry(_ItemLedgEntryNo : BigInteger;_ShowMessage : Boolean)

ItemLedgEntry.RESET;
ItemLedgEntry.GET(_ItemLedgEntryNo);

IF ProdOrderLine.FINDFIRST THEN
REPEAT

ProdOrderLine."Cost is Adjusted" := FALSE;
ProdOrderLine.MODIFY;

Item.GET(ProdOrderLine."Item No.");
Item."Cost is Adjusted" := FALSE;
Item.MODIFY;

UNTIL ProdOrderLine.NEXT = 0;

ProdOrderLine.RESET;
ProdOrderLine.SETRANGE("Prod. Order No.",ItemLedgEntry."Prod. Order No.");


ItemApplEntry.RESET;
ItemApplEntry.SETRANGE("Item Ledger Entry No.",ItemLedgEntry."Entry No.");
IF ItemApplEntry.FINDFIRST THEN
REPEAT

AppliedFromItemLedgEntry.RESET;
IF AppliedFromItemLedgEntry.GET(ItemApplEntry."Inbound Item Entry No.") = TRUE THEN
BEGIN
AppliedFromItemLedgEntry."Remaining Quantity" := AppliedFromItemLedgEntry."Remaining Quantity" - ItemApplEntry.Quantity;
AppliedFromItemLedgEntry.Open := TRUE;
AppliedFromItemLedgEntry."Applied Entry to Adjust" := TRUE;
AppliedFromItemLedgEntry.MODIFY;
END;

ItemApplEntry.DELETE;
UNTIL ItemApplEntry.NEXT = 0;

LedgEntryDim.RESET;
LedgEntryDim.SETRANGE("Table ID",32);
LedgEntryDim.SETRANGE("Entry No.",ItemLedgEntry."Entry No.");
IF LedgEntryDim.FINDFIRST THEN
LedgEntryDim.DELETEALL;

ItemLedgEntry.DELETE;

ValueEntry.RESET;
ValueEntry.SETRANGE("Item Ledger Entry No.",_ItemLedgEntryNo);
IF ValueEntry.FINDFIRST THEN
REPEAT
GLEntry.RESET;
GLEntry.SETRANGE("Value Entry No.",ValueEntry."Entry No.");
IF GLEntry.FINDFIRST THEN
REPEAT

LedgEntryDim.RESET();
LedgEntryDim.SETRANGE("Table ID",17);
LedgEntryDim.SETRANGE("Entry No.",GLEntry."Entry No.");
IF LedgEntryDim.FINDFIRST THEN
LedgEntryDim.DELETEALL;

GLEntry.DELETE;
UNTIL GLEntry.NEXT = 0;

LedgEntryDim.RESET;
LedgEntryDim.SETRANGE("Table ID",5802);
LedgEntryDim.SETRANGE("Entry No.",ValueEntry."Entry No.");
IF LedgEntryDim.FINDFIRST THEN
LedgEntryDim.DELETEALL;

ValueEntry.DELETE;
UNTIL ValueEntry.NEXT = 0;



IF _ShowMessage THEN
MESSAGE('Изменено потребление в заказе ' + ProdOrderLine."Prod. Order No.");
__________________
Want to believe...
Старый 21.11.2008, 11:41   #2  
rov_imported is offline
rov_imported
Участник
 
176 / 10 (1) +
Регистрация: 20.01.2005
Цитата:
Сообщение от DA_NEAL Посмотреть сообщение
Примерно такой вот нужен код (сильно не бейте :-)).
Сильно - не будем.

Цитата:
Сообщение от DA_NEAL Посмотреть сообщение
ItemApplEntry.RESET;
ItemApplEntry.SETRANGE("Item Ledger Entry No.",ItemLedgEntry."Entry No.");
А как же выбрать ключик для таблички применения? Ведь SETRANGE вы ставите по Тов. операция Но. - чай не первичный ключ то...

И здесь:
Цитата:
Сообщение от DA_NEAL Посмотреть сообщение
ValueEntry.RESET;
ValueEntry.SETRANGE("Item Ledger Entry No.",_ItemLedgEntryNo);
И здесь то же самое
Цитата:
Сообщение от DA_NEAL Посмотреть сообщение
GLEntry.RESET;
GLEntry.SETRANGE("Value Entry No.",ValueEntry."Entry No.");
IF GLEntry.FINDFIRST THEN
Неужели этот код быстро работает без выбора правильных ключей в трех самых объемных таблицах?
Старый 25.11.2008, 11:08   #3  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
Цитата:
Сообщение от rov Посмотреть сообщение
Сильно - не будем.


А как же выбрать ключик для таблички применения? Ведь SETRANGE вы ставите по Тов. операция Но. - чай не первичный ключ то...

И здесь:


И здесь то же самое
Если мне не изменяет память, замечание актульно только для нативной версии, в сиквельной оптимальный ключ sql выберет сам, думаю что у Да Нила sql версия
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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