20.11.2008, 11:14 | #1 |
Участник
|
Подскажите, что можно сделать:
Создан производственный заказ ошибочно, на него списали материал и работы. Т.к. списали ошибочно, все операции сторнировали отрицательными строками. Хочется удалить из списка данный производственный заказ, но не знаю как. ???????????????????????????7 Такое ощущение, что через полшодика, таких кривых производственных заказов накопится достаточно много , посоветуте, что с ними можно сделать. |
|
20.11.2008, 11:53 | #2 |
Участник
|
Лично я переписывал функции OutputExists, MatrOrCapConsumpExists в кодеюните 5407 - Prod. Order Status Management, чтобы в такого типа случаях заказ можно было завершить. А потом из завершенных уже можно удалять.
|
|
20.11.2008, 12:31 | #3 |
Участник
|
А завершаете их соответственно без фыхода продукции?
К сожалению порка не имею навыков переписывать функции |
|
20.11.2008, 14:09 | #4 |
Участник
|
Да, завершаю без выхода. Без программирования, боюсь, вам от этих заказов не избавиться. Можете добавить в них признак, по которому фильтровать в формах, чтобы их хотя бы не видеть
|
|
20.11.2008, 22:32 | #5 |
Участник
|
Нехороший вариант но я писал функцию отмены потребления материалов. Для конкретного проекта с определенными настройками все работало. В принципе ничего сложного нет, но без серьезного опыта работы и набитых шишек на применении товарных операций я бы за такую реализацию не брался.
__________________
Want to believe... |
|
21.11.2008, 08:58 | #6 |
Участник
|
Примерно такой вот нужен код (сильно не бейте :-)). Фин. учет себестоимости должен быть по операциям.
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 |
MCTS
|
Если все сторнировали (потребление материалов и производственных мощностей).
То попробуйте выпустить по этому заказу товар на вспомогательный склад, а потом спишите его. Затем закройте заказ Если все сторнировано правильно - себестоимость будет равна нулю и никак не повлияет на финансовый учет. Обороты количественные - пройдут по другому складу - соотвественно материально-ответсвенное лицо/начальник цеха возражать не будут. PS это не сработает, если для товара в поле Трассировка Заказа <> Нет. Система не разрешит указать склад, отличный от указанного в производственном заказе. |
|
21.11.2008, 11:41 | #8 |
Участник
|
Сильно - не будем.
Цитата:
И здесь: Цитата:
Неужели этот код быстро работает без выбора правильных ключей в трех самых объемных таблицах? |
|
22.11.2008, 11:26 | #9 |
Участник
|
А кто говорил что он быстро работает ? Использовался этот код в единичных случаях, но в принципе проблем с быстродействием не было. А например на GLEntry в стандарте ключа по "Value Entry No." вообще нет, вот это место тормозило, но после создания ключа (даже без его выбора) проблеме снялась.
__________________
Want to believe... |
|
25.11.2008, 07:53 | #10 |
Участник
|
Спасибо всем за участие, посоветуюсь со своим программистом, может и действительно коды перепишет
|
|
25.11.2008, 11:08 | #11 |
Участник
|
Если мне не изменяет память, замечание актульно только для нативной версии, в сиквельной оптимальный ключ sql выберет сам, думаю что у Да Нила sql версия
|
|