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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.03.2008, 17:54   #1  
Lelya is offline
Lelya
Участник
Аватар для Lelya
 
56 / 14 (1) ++
Регистрация: 16.01.2003
Адрес: Москва
Проблема: одинаковые клиенты
Добрый день!
В систему по ошибке внесли одного и того же клиента два раза, естественно, под разными кодами. Есть заказы, подтверждения, счета на оплату и платежи и на того и на другого. Нет отгрузок и сопоставлений. В идеале хотелось бы программно исправить эту ситуацию, оставив одного клиента, или хотя бы оценить масштаб трагедии. Подскажите, плиз, в каких таблицах еще необходимо исправить, кроме следующих: SalesTable, SalesLine, InventTrans, CustConfirmJour, CustInvoice4PaymJour_RU, LedgerJournalTrans, CustVendPaymJournalFee. Заранее спасибо.

P.S. Ахарта 3.0, SP3.
Старый 06.03.2008, 18:08   #2  
ppson is offline
ppson
Участник
Аватар для ppson
Ex AND Project
1C
 
2,102 / 114 (8) +++++
Регистрация: 25.06.2002
Адрес: SPb, Msk
CustTrans
CustTransOpen

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

Последний раз редактировалось Lelya; 06.03.2008 в 18:24.
Старый 06.03.2008, 20:02   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Lelya Посмотреть сообщение
В идеале хотелось бы программно исправить эту ситуацию, оставив одного клиента, или хотя бы оценить масштаб трагедии.
Не надо программно.
Надо в общем журнале сделать проводку зачета между клиентами.
сопоставить. Неправильного клиента полностью заблокировать (есть такой реквизит в клиенте)
__________________
полезное на axForum, github, vk, coub.
Старый 07.03.2008, 11:16   #6  
fazer is offline
fazer
Участник
 
44 / 21 (1) +++
Регистрация: 18.06.2007
Цитата:
Сообщение от belugin Посмотреть сообщение
В качестве бреда:
1. Посмотреть на таблицы, где код клиента - часть ПК
2. Слить данные в жтих таблицах
3. Снести одного клиента
4. Переименовать первичный ключ второго в первого.
А что такое "код клиента - часть ПК"?
Вроде достаточно п.3.4.
Старый 07.03.2008, 12:11   #7  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
Если такие ошибки часто появляются, то:
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/
Старый 07.03.2008, 12:18   #8  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
В связанных таблицах править руками - не самый лучший способ когда есть и прекрасно работает custTable.merge(xxx);
__________________
Viacheslav Nefedov, http://www.nefedov.net, http://restock.guru/
Старый 07.03.2008, 13:56   #9  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Присоединюсь пожалуй, чем не устраивает вариант Belugin?

3. Снести одного клиента
4. Переименовать первичный ключ второго в первого.
Старый 07.03.2008, 15:23   #10  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
Если никто не обратил внимание, то мой код как раз и реализует вариант, предложенный Белугиным.
__________________
Viacheslav Nefedov, http://www.nefedov.net, http://restock.guru/
За это сообщение автора поблагодарили: belugin (3).
Старый 07.03.2008, 15:33   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от fazer Посмотреть сообщение
А что такое "код клиента - часть ПК"?
Вроде достаточно п.3.4.
Допустим есть таблицы с первичным ключем

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

Последний раз редактировалось belugin; 07.03.2008 в 15:40. Причина: орфо
За это сообщение автора поблагодарили: MikeR (5).
Теги
документация, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с кэшированием в Аксапте 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

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

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

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