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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.11.2008, 11:14   #1  
%Anton% is offline
%Anton%
Участник
 
80 / 10 (1) +
Регистрация: 04.04.2008
Подскажите, что можно сделать:

Создан производственный заказ ошибочно, на него списали материал и работы. Т.к. списали ошибочно, все операции сторнировали отрицательными строками.
Хочется удалить из списка данный производственный заказ, но не знаю как. ???????????????????????????7
Такое ощущение, что через полшодика, таких кривых производственных заказов накопится достаточно много , посоветуте, что с ними можно сделать.
Старый 20.11.2008, 11:53   #2  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Лично я переписывал функции OutputExists, MatrOrCapConsumpExists в кодеюните 5407 - Prod. Order Status Management, чтобы в такого типа случаях заказ можно было завершить. А потом из завершенных уже можно удалять.
Старый 20.11.2008, 12:31   #3  
%Anton% is offline
%Anton%
Участник
 
80 / 10 (1) +
Регистрация: 04.04.2008
А завершаете их соответственно без фыхода продукции?
К сожалению порка не имею навыков переписывать функции
Старый 20.11.2008, 14:09   #4  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Да, завершаю без выхода. Без программирования, боюсь, вам от этих заказов не избавиться. Можете добавить в них признак, по которому фильтровать в формах, чтобы их хотя бы не видеть
Старый 20.11.2008, 22:32   #5  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
Нехороший вариант но я писал функцию отмены потребления материалов. Для конкретного проекта с определенными настройками все работало. В принципе ничего сложного нет, но без серьезного опыта работы и набитых шишек на применении товарных операций я бы за такую реализацию не брался.
__________________
Want to believe...
Старый 21.11.2008, 08:58   #6  
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, 09:48   #7  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Если все сторнировали (потребление материалов и производственных мощностей).

То попробуйте выпустить по этому заказу товар на вспомогательный склад, а потом спишите его.

Затем закройте заказ

Если все сторнировано правильно - себестоимость будет равна нулю и никак не повлияет на финансовый учет.

Обороты количественные - пройдут по другому складу - соотвественно материально-ответсвенное лицо/начальник цеха возражать не будут.



PS это не сработает, если для товара в поле Трассировка Заказа <> Нет.
Система не разрешит указать склад, отличный от указанного в производственном заказе.
Старый 21.11.2008, 11:41   #8  
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
Неужели этот код быстро работает без выбора правильных ключей в трех самых объемных таблицах?
Старый 22.11.2008, 11:26   #9  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
А кто говорил что он быстро работает ? Использовался этот код в единичных случаях, но в принципе проблем с быстродействием не было. А например на GLEntry в стандарте ключа по "Value Entry No." вообще нет, вот это место тормозило, но после создания ключа (даже без его выбора) проблеме снялась.
__________________
Want to believe...
Старый 25.11.2008, 07:53   #10  
%Anton% is offline
%Anton%
Участник
 
80 / 10 (1) +
Регистрация: 04.04.2008
Спасибо всем за участие, посоветуюсь со своим программистом, может и действительно коды перепишет
Старый 25.11.2008, 11:08   #11  
OntheJump is offline
OntheJump
Участник
 
165 / 10 (1) +
Регистрация: 31.10.2006
Цитата:
Сообщение от rov Посмотреть сообщение
Сильно - не будем.


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

И здесь:


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


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

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

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