AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 06.03.2008, 17:54   #1  
Lelya is offline
Lelya
Участник
Lelya's Avatar
 
56 / 14 (1) ++
Join Date: 16.01.2003
Location: Москва
Проблема: одинаковые клиенты
Добрый день!
В систему по ошибке внесли одного и того же клиента два раза, естественно, под разными кодами. Есть заказы, подтверждения, счета на оплату и платежи и на того и на другого. Нет отгрузок и сопоставлений. В идеале хотелось бы программно исправить эту ситуацию, оставив одного клиента, или хотя бы оценить масштаб трагедии. Подскажите, плиз, в каких таблицах еще необходимо исправить, кроме следующих: SalesTable, SalesLine, InventTrans, CustConfirmJour, CustInvoice4PaymJour_RU, LedgerJournalTrans, CustVendPaymJournalFee. Заранее спасибо.

P.S. Ахарта 3.0, SP3.
Old 06.03.2008, 18:08   #2  
ppson is offline
ppson
Участник
ppson's Avatar
Ex AND Project
1C
 
2,104 / 115 (8) +++++
Join Date: 25.06.2002
Location: SPb, Msk
CustTrans
CustTransOpen

P.S. Отсторнировать платежи и поменять клиентов в заказах не прокатит?
__________________
Old 06.03.2008, 18:09   #3  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
В качестве бреда:
1. Посмотреть на таблицы, где код клиента - часть ПК
2. Слить данные в жтих таблицах
3. Снести одного клиента
4. Переименовать первичный ключ второго в первого.
Old 06.03.2008, 18:18   #4  
Lelya is offline
Lelya
Участник
Lelya's Avatar
 
56 / 14 (1) ++
Join Date: 16.01.2003
Location: Москва
2 ppson "Отсторнировать платежи и поменять клиентов в заказах"
Прицениваемся и к этому

Last edited by Lelya; 06.03.2008 at 18:24.
Old 06.03.2008, 20:02   #5  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by Lelya View Post
В идеале хотелось бы программно исправить эту ситуацию, оставив одного клиента, или хотя бы оценить масштаб трагедии.
Не надо программно.
Надо в общем журнале сделать проводку зачета между клиентами.
сопоставить. Неправильного клиента полностью заблокировать (есть такой реквизит в клиенте)
__________________
полезное на axForum, github, vk, coub.
Old 07.03.2008, 11:16   #6  
fazer is offline
fazer
Участник
 
44 / 21 (1) +++
Join Date: 18.06.2007
Quote:
Originally Posted by belugin View Post
В качестве бреда:
1. Посмотреть на таблицы, где код клиента - часть ПК
2. Слить данные в жтих таблицах
3. Снести одного клиента
4. Переименовать первичный ключ второго в первого.
А что такое "код клиента - часть ПК"?
Вроде достаточно п.3.4.
Old 07.03.2008, 12:11   #7  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Join Date: 29.12.2002
Location: самолёт
Если такие ошибки часто появляются, то:
X++:
void merge(RecId  mainRecordId,RecId secondRecordId)
{
    CustTable       _tableMain;
    CustTable       _tableLine;
    SalesJournalAutoSummary     journalSummary;
    SalesPrintCopies            printCopies;
    CustBankAccount             custBankAccount;
    RContractTable              contractTable;
    RContractTable              contractTableNew;

    LedgerBalancesDimTrans      dimTrans;

    Dimensions                  dim, dimNew;
    ;

    startLengthyOperation();

    ttsbegin;

    select forUpdate _tableMain
    where _tableMain.RecId == mainRecordId;

    if (_tableMain.RecId == 0)
    {
        ttsabort;
        throw error('??? ??????? ??????!');
    }

        select forUpdate _tableLine
        where _tableLine.RecId == secondRecordId;

        if (_tableLine.RecId != 0)
        {
            delete_from journalSummary where journalSummary.CustAccount == _tableLine.AccountNum;
            delete_from printCopies where printCopies.CustAccount == _tableLine.AccountNum;
            delete_from custBankAccount where custBankAccount.CustAccount == _tableLine.AccountNum;

            while select forUpdate contractTable
            where contractTable.RContractPartnerType == RContractPartnerType::Cust &&
                contractTable.RContractPartnerCode == _tableLine.AccountNum
            exists join contractTableNew
            where contractTableNew.RContractPartnerType == RContractPartnerType::Cust &&
                contractTableNew.RContractPartnerCode == _tableMain.AccountNum &&
                contractTableNew.RContractAccount == contractTable.RContractAccount &&
                contractTableNew.RContractCode == contractTable.RContractCode
            {
                contractTable.delete();
            }

            select forUpdate dimNew
            where dimNew.DimensionCode == SysDimension::Partner &&
                dimNew.Num == _tableMain.AccountNum;

            if (dim.RecId == 0 || dimNew.RecId == 0)
            {
                ttsabort;
                throw error('?? ??????? ?????????, ??????????????? ????????????!');
            }

            _tableLine.merge(_tableMain);
            dim.merge(dimNew);
        }


    ttscommit;

    endLengthyOperation();
}
В коде чуток мусора может - это под конкретную базу, нет времени править.
__________________
Viacheslav Nefedov, http://www.nefedov.net, http://restock.guru/
Old 07.03.2008, 12:18   #8  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Join Date: 29.12.2002
Location: самолёт
В связанных таблицах править руками - не самый лучший способ когда есть и прекрасно работает custTable.merge(xxx);
__________________
Viacheslav Nefedov, http://www.nefedov.net, http://restock.guru/
Old 07.03.2008, 13:56   #9  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Join Date: 30.05.2005
Присоединюсь пожалуй, чем не устраивает вариант Belugin?

3. Снести одного клиента
4. Переименовать первичный ключ второго в первого.
Old 07.03.2008, 15:23   #10  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Join Date: 29.12.2002
Location: самолёт
Если никто не обратил внимание, то мой код как раз и реализует вариант, предложенный Белугиным.
__________________
Viacheslav Nefedov, http://www.nefedov.net, http://restock.guru/
This post has been rated by: belugin (3).
Old 07.03.2008, 15:33   #11  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
Quote:
Originally Posted by fazer View Post
А что такое "код клиента - часть ПК"?
Вроде достаточно п.3.4.
Допустим есть таблицы с первичным ключем

(Код клиента, еще что-то). Если начать переименовывать клиента, то оно может накрыться из за дублей
Old 07.03.2008, 15:36   #12  
belugin is offline
belugin
Участник
belugin's Avatar
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Join Date: 16.01.2004
Blog Entries: 5
А еще могут быть связи по recID

Last edited by belugin; 07.03.2008 at 15:40. Reason: орфо
This post has been rated by: MikeR (5).
Tags
документация, ax3.0

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Проблема с кэшированием в Аксапте snirk DAX: Администрирование 9 19.07.2007 18:23
Проблема с единицей измерения longson DAX: Программирование 4 16.07.2007 14:35
Проблема - Две одинаковые таблицы в запросе NAST DAX: Программирование 0 13.10.2005 08:51
Проблема с созданием объекта Lelya DAX: Администрирование 33 27.06.2005 16:38
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 17:31.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.