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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.02.2002, 06:47   #1  
Andrew Besedin is offline
Andrew Besedin
Участник
 
121 / 15 (1) ++
Регистрация: 25.01.2002
Изменение даты в разнесенных закупках
Уважаемое сообщество!
У нас очередное ЧП - на сей раз разнесли закупки с неверной датой. Хочется иметь инструмент исправления этой проблемы.
Будьте добры, посмотрите критически нижеследущий код - какие таблицы еще нужно подправить, на ваш взгляд? И вообще, не вырастут ли какие-нибудь ноги от такой процедуры?
PHP код:
void clicked()
{
PurchTable pTable;
PurchLine pLine;
InventTrans iTrans;
VendInvoiceJour vIJour;
VendInvoiceTrans vITrans;
LedgerTrans lTrans;

if(!
PurchID.text())
    Throw 
Error('А где номер закупки');
if(!
NewDate.dateValue())
    Throw 
Error('А где новая дата?');

select forupdate pTable where pTable.PurchId == PurchID.text();
    
pTable.DeliveryDateNewDate.dateValue();
    
pTable.Doupdate();

while 
select forupdate pLine where pLine.PurchId == pTable.PurchId
{
    
pLine.DeliveryDate NewDate.dateValue();
    while 
select forupdate iTrans where iTrans.InventTransId == pLine.InventTransId
    
{
        
iTrans.DateFinancial NewDate.dateValue();
        
iTrans.update();
    }
    
pLine.update();

    while 
select forupdate vIJour where vIJour.PurchId == pTable.PurchId
    
{
        while 
select forupdate vITrans where vITrans.InvoiceId == vIJour.InvoiceID
        
{
            
vITrans.invoiceDate NewDate.dateValue();
            
vITrans.update();
        }

        while 
select forupdate lTrans where lTrans.Voucher == vIJour.LedgerVoucher
                                        
&&  lTrans.TransDate == vIJour.InvoiceDate
        
{
            
lTrans.TransDate NewDate.dateValue();
            
lTrans.DocumentDate NewDate.dateValue();
            
lTrans.update();
        }

        
vIJour.InvoiceDate NewDate.dateValue();
        
vIJour.update();
    }
}
    
super();

С уважением,
Андрей Беседин
Старый 08.02.2002, 07:26   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
У нас очередное ЧП - на сей раз разнесли закупки с неверной датой. Хочется иметь инструмент исправления этой проблемы
Он уже есть.
Возвратить и ввести новую.

Список таблиц позже.

Сейчас только скажу, что дату в inventTrans надо менять с предельной осторожностью поскольку она, как это ни страно , влияет на себестоимость.

Ноги скорее всего вырастут.
__________________
полезное на axForum, github, vk, coub.
Старый 08.02.2002, 10:09   #3  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,296 / 239 (10) ++++++
Регистрация: 09.11.2001
Адрес: Химки, Московская область
список таблиц слишком не полон
Цитата:
Сейчас только скажу, что дату в inventTrans надо менять с предельной осторожностью поскольку она, как это ни страно , влияет на себестоимость.
Почему странно ? Это как раз правильно.

Сергей!
А если после обновления дат в InventTrans запустить пересчет остатков, программа сама все эти проблемы с остатками и себестоимостью не решит?

Кстати, список таблиц слишком не полон. В частности, забыли: InventTransPosting, InventBatch на вскидку. Дальше не смотрел. Похоже, придется Андрею Беседину повозиться часок c MorphX

__________________
Михаил Андреев
https://www.amand.ru
Старый 08.02.2002, 11:24   #4  
Andrew Besedin is offline
Andrew Besedin
Участник
 
121 / 15 (1) ++
Регистрация: 25.01.2002
Внимательнее допросил милейших девочек . Оказалось, что ошибка была сделана при разноске счет-фактуры (а складские все операции выполнены верно). То есть все, что связано с Invent, разнеслось и отработало перфектли. Да и DeliveryDate тоже верная стоит. Осталось только финансовую часть вытащить...
__________________
С уважением,
Андрей Беседин
Старый 08.02.2002, 11:36   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
К Михаилу:

1.


2.
Не уверен что пересчет остатков пересчитает уже закрытые периоды.
Ни разу не пробовал так над нею издеваться.

Кроме того, а что будет с налогами? Что будет с курсовыми и суммовыми? Что будет с прогнозом движения денежных средств?


К Андрею: к сожалению не успею заняться подготовкой списка. Но Михаил прав - таблиц там гораздо больше. Кроме того основная проблема состоит в том, что в ходе работы Аксапты одна проводка может расщепляться на несколько, а потом несколько проводок могут быть слиты в одну.

Далее,
править InventTrans вручную очень опасно и чревато. Надо использовать класс InventMovement.
Править LedgerJournal лучше с помощью класса LedgerJournalEngine.
Как создаются проводки можно посмотреть в классах LedgerTrans*
Как создаются документы по закупке можно посмотреть в PurchFormLetter*
и т.п.

Стоит только посмотреть в эти классы, как желание что-либо править непосредственно в таблицах пропадает надолго
__________________
полезное на axForum, github, vk, coub.
Старый 08.02.2002, 11:40   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Andrew Besedin
Осталось только финансовую часть вытащить...
Успехов.
Расскажешь потом?

Моя рекомендация: сторно, а затем новый правильный СФ. Это лучший выход из ситуации.
Спорим?
__________________
полезное на axForum, github, vk, coub.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Изменение текущей даты на несколько месяцев вперед IvanS DAX: Программирование 3 30.01.2007 09:42
Изменение даты накладной при ее обработке Valery DAX: Функционал 4 30.03.2005 20:31
Заказ -> Сводное планирование -> Изменение даты заказа ARRTEMka DAX: Функционал 8 14.02.2005 14:46
Очень не хочеться вручную устанавливать даты для всех строк журнала .... ATimTim DAX: Функционал 1 14.09.2004 19:33
Проверка даты Wamr DAX: Программирование 9 15.12.2002 17:28
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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