30.06.2004, 07:51 | #1 |
Участник
|
Удалить закупку
Хочу удалить закупку. Будет ли такой код правильным?
Период текущий месяц,сопоставлений и списаний нет. ---- static void job123(Args _args) { PurchLine PurchLine; PurchTable PurchTable; Voucher v; TaxTrans TaxTrans; LedgerTrans LedgerTrans; VendTrans VendTrans; InventTrans InventTrans; VendInvoiceTrans VendInvoiceTrans; VendInvoicePurchLink VendInvoicePurchLink; VendInvoiceJour VendInvoiceJour; VendTransOpen VendTransOpen; VendSettlement VendSettlement; InventBatch InventBatch; InventDim InventDim; InventSum InventSum; MarkupTrans MarkupTrans; LedgerBalancesTrans LedgerBalancesTrans; LedgerBalancesDimTrans LedgerBalancesDimTrans; str id; ; ttsbegin; delete_from PurchLine where PurchLine.PurchId=='123456789'; delete_from PurchTable where PurchTable.PurchId=='123456789'; delete_from VendInvoiceTrans where VendInvoiceTrans.PurchId=='123456789'; delete_from VendInvoicePurchLink where VendInvoicePurchLink.PurchId=='123456789'; delete_from VendInvoiceJour where VendInvoiceJour.PurchId=='123456789'; delete_from InventBatch where InventBatch.InventBatchId=='123456789'; while select InventDim where InventDim.InventBatchId=='123456789' delete_from InventSum where InventSum.InventDimId==InventDim.InventDimId; delete_from InventDim where InventDim.InventBatchId=='123456789'; while select InventTrans where InventTrans.TransRefId=='123456789' if (InventTrans) { v=InventTrans.Voucher; delete_from MarkupTrans where MarkupTrans.Voucher==v; delete_from TaxTrans where TaxTrans.Voucher==v; while select VendTrans where VendTrans.Voucher==v delete_from VendTransOpen where VendTransOpen.RefRecId==VendTrans.RecId; //while select VendTrans where VendTrans.Voucher==v // delete_from VendSettlement where VendSettlement.TransRecId==VendTrans.RecId; // while select VendTrans where VendTrans.Voucher==v { delete_from LedgerTrans where LedgerTrans.Voucher==VendSettlement.TaxVoucher_RU; delete_from VendSettlement where VendSettlement.OffsetRecId==VendTrans.OffsetRecId && VendSettlement.TransRecId==VendTrans.RecId; } delete_from VendTrans where VendTrans.Voucher==v; while select LedgerTrans where LedgerTrans.Voucher==v { delete_from LedgerBalancesTrans where LedgerBalancesTrans.TransDate==LedgerTrans.Transdate && LedgerBalancesTrans.AccountNum==LedgerTrans.AccountNum && LedgerBalancesTrans.DebitMST == LedgerTrans.AmountMST; delete_from LedgerBalancesDimTrans where LedgerBalancesDimTrans.TransDate==LedgerTrans.Transdate && LedgerBalancesDimTrans.AccountNum==LedgerTrans.AccountNum && LedgerBalancesDimTrans.DebitMST == LedgerTrans.AmountMST; } delete_from LedgerTrans where LedgerTrans.Voucher==v; } delete_from InventTrans where InventTrans.TransRefId=='123456789'; ttscommit; } |
|
30.06.2004, 09:16 | #2 |
Участник
|
рекомендую посмотреть
http://www.axforum.info/forums/showt...EB%E5%ED%E8%E5 |
|
30.06.2004, 09:32 | #3 |
Участник
|
благодарю за ссылку. Все это интересно,но поскольку этим уже занимались специалисты то мб прокомментируют мой код?
|
|
30.06.2004, 10:05 | #4 |
Участник
|
На вcкидку...
Как минимум необходимо обновить таблички : 1) FactureJour_RU FActureTrans_RU MarkupTrans 2) если уж удалять из VendSettlement (хотя вроде сопоставлений нету), то необходимо удалить также строки для которых VendSettlement.OffsetRecId == VendTrans.RecID а для проводок ,сопоставленных с данной, обновить сопоставленные суммы. (поля SettleAmountCur, SettleAmountMST) 3) Перед удалением из LedgerTrans необходимо обновить соответствующие суммы из таблиц LedgerBalancesTrans, LedgerBalancesDimTrans 4) Несколько напрягает выборка из InventTrans по номеру закупки. Уж лучше выбирать в цикле по номеру лота из строки закупки. |
|
30.06.2004, 10:16 | #5 |
Участник
|
1. Фактуру FactureJour_RU -как связать с закупкой? ( по Voucherу не получается. )
2. MarkupTrans.VendSettlement - спасибо ,учту. 3. Перед удалением из LedgerTrans необходимо обновить соответствующие суммы из таблиц LedgerBalancesTrans, LedgerBalancesDimTrans - Не соображу как это сделать |
|
30.06.2004, 11:29 | #6 |
экс-модератор
|
Не совсем понятны цели задуманной вами операции.
Удаление закупки можно понять двояко: 1. Удалить разнесенную закупку, но оставить в системе результат разноски перв. документов по ней - вполне логичное действие (можно применять, например для уменьшения размера БД) для этого хватит и трети вашего кода. добавьте еще таблицу PurchLineDelete но вы, как мне показалось, хотите: 2. удалить разнесенную закупку и все порожденные ею проводки. тут могу сказать лишь, что в обсуждении по вышеуказанной ссылке я придерживаюсь стороны тех, кто считает удаление проводок концептуально неверным. |
|
30.06.2004, 11:56 | #7 |
Участник
|
Я преследую именно цель 2.
Я уважаю и ту , и другую точку зрения. Но удалить ее хочу. Для этого консультируюсь по корректности кода-могли бы Вы мне помочь? ЗЫ почему при разноске накладной закупка может не сменить статус? и вообще ни одна опер-я над ней ее статус не меняет? |
|
30.06.2004, 12:29 | #8 |
экс-модератор
|
Цитата:
Изначально опубликовано bm
Я преследую именно цель 2. Я уважаю и ту , и другую точку зрения. Но удалить ее хочу. Для этого консультируюсь по корректности кода-могли бы Вы мне помочь? я уверен что при разноске затрагивается большее кол-во таблиц чем в вашем скрипте. попробуйте средствами sql-сервера отследить в каких таблицах происходят изменения при всевозможных операциях с закупками. имейте в виду, что в версии 4.0 механизм разноски проводок изменится. ЗЫ почему при разноске накладной закупка может не сменить статус? и вообще ни одна опер-я над ней ее статус не меняет? не сталкивался |
|
30.06.2004, 17:40 | #9 |
Аксакал в отставке
|
Maxim
А Вы не поделитесь тем, как изменится механизм разносок в 4.0?
__________________
Девочка, никогда не произноси слова только за то, что они такие длинные и красивые; говори только то, что знаешь. (Л.Кэрролл "Алиса в стране чудес"). |
|
30.06.2004, 17:55 | #10 |
----------------
|
Такой код по определению неправильный.
Но раз Вам очень хочется проблем, то вот еще пара замечаний Не стоит удалять InventDim, InventSum (тем более до удаление InventTrans) При ограничении по Voucher имеет смысл добавлять ограничение по TransDate Если было закрытие периода, то еще очень много чего потянется - даже не буду пытаться описывать ------------- Статус может не меняться, если закупка обрабатывается неполностью |
|
30.06.2004, 17:59 | #11 |
Участник
|
>почему при разноске накладной закупка может не сменить статус?
потому что накладная может быть на часть закупки. |
|
30.06.2004, 18:21 | #12 |
экс-модератор
|
Цитата:
Изначально опубликовано Тимур
Maxim А Вы не поделитесь тем, как изменится механизм разносок в 4.0? |
|
18.08.2004, 20:18 | #13 |
Участник
|
А у кого-нибудь есть реализация удаления проводок по ЗАКАЗУ?
|
|
19.08.2004, 10:20 | #14 |
Модератор
|
А почему все так бояться сторнирования?? Гораздо легче создать новую отрицательную, чем выковыривать по всей системе с непонятными последствиями старую положительную...
С Уважением, Георгий. |
|
19.08.2004, 10:44 | #15 |
Аксакал в отставке
|
Причина в том, что многие не умеют (не хотят) пользоваться импортом/экспортом данных.
__________________
Девочка, никогда не произноси слова только за то, что они такие длинные и красивые; говори только то, что знаешь. (Л.Кэрролл "Алиса в стране чудес"). |
|
19.08.2004, 10:50 | #16 |
Модератор
|
Цитата:
Изначально опубликовано Тимур
Причина в том, что многие не умеют (не хотят) пользоваться импортом/экспортом данных. С Уважением, Георгий. |
|
19.08.2004, 10:59 | #17 |
Гость
|
Сторнировка - это хорошо.... На первый взгляд. С точки зрения западного бухучета.
Если посмотреть с точки зрения нашего бухгалтера, то очень неудобно пробираться сквозь дебри сторнировок.... Затем руками редактировать книгу покупок и продаж, представьте - сколько работы! А делать это придется в любом случае - чтобы не заострять внимание на этом при проверке в налоговой. Так что в наших условиях от удаления проводок никуда не денешься.... |
|
19.08.2004, 11:13 | #18 |
экс-модератор
|
очень неудобно пробираться сквозь дебри сторнировок
на то бухгалтеру и дана автоматицкая компутерная система "ахапта" чтобы она сама все дебри разгребала. Затем руками редактировать книгу покупок и продаж, представьте - сколько работы! А делать это придется в любом случае - чтобы не заострять внимание на этом при проверке в налоговой. книги покупок/продаж не сдают в налоговую в рамках периодической отчетности. почитать эти книги к вам приедут если на вас уже заострили внимание в налоговой. и, естественно, ничего криминального в сторно нет, более того, книги продаж/покупок/кассовые со сторно выглядят более реально. |
|
19.08.2004, 11:15 | #19 |
Аксакал в отставке
|
Проблема проявляется в двух случаях:
1)Кто-то играется в демобазе и ему нужны теже данные с настройками, но без транзакций. Здесь экспорт-импорт поможет. 2)Произошла ошибка в тестовой или промышленной эксплуатации. Здесь только исправления, отмена и сторнирование.
__________________
Девочка, никогда не произноси слова только за то, что они такие длинные и красивые; говори только то, что знаешь. (Л.Кэрролл "Алиса в стране чудес"). |
|
19.08.2004, 16:59 | #20 |
Участник
|
=))) так никто и не ответил по существу моего вопроса =))
Руководство готово купить функционал удаления проводок. |
|