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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.10.2014, 10:42   #1  
bud is offline
bud
Участник
 
9 / 10 (1) +
Регистрация: 23.12.2005
AX12 Удаление поставщика
Подскажите, при удалении поставщика выдается сообщение: "Значение финансовой аналитики основано на записи "Счет поставщика" и использовалось в проводке. Удаление записи "Счет поставщика" невозможно". Поставщик не удаляется, хотя по нему нет ни одной разнесенной проводки, ни договора, ничего...
Поставщика завели, внесли строку в общего журнала ГК, журнал не разносили. Затем, удалили строку и журнал. А поставщика не можем. В финансовых аналитиках поставщиков не подвязывали.
Где искать ссылки и как их удалит?
Старый 03.10.2014, 10:59   #2  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
160 / 209 (7) ++++++
Регистрация: 18.02.2010
Адрес: Омск
В джобе для удаляемого поставщика вызовите
X++:
DimensionAttributeValue::updateForEntityValueDelete(vendTable);
В 2012 с удалением клиентов / поставщиков штатными средствами всё достаточно плохо, помню там еще какие-то нелогичные ошибки всплывали для контрагентов, которые абсолютно точно нигде не использовались. В свое время писал джоб, который удаляет поставщика, его запись в ГАК, договора и данные о налоговой регистрации. Используйте на свой страх и риск, предварительно проверив в тестовой среде

X++:
//удаление поставщика и его записи в ГАК
static void peko_test(Args _args)
{
    VendAccount                 vendAccount = ''; // Код поставщика
    VendTable                   vendTable;
    DirPartyTable               dirPartyTable;
    DirPartyLocation            dirPartyLocation;
    TaxRegistration             taxRegistration;

    PurchAgreementHeader        purchAgreementHeader;
    AgreementHeaderExt_RU       agreementHeaderExt;

    setPrefix("Удаление поставщика");

    try
    {
        ttsBegin;

        vendTable = VendTable::find(vendAccount, true);

        if (! vendTable)
        {
            throw error("Поставщик не найден");
        }

        dirPartyTable = DirPartyTable::findRec(vendTable.Party, true);

        while select forUpdate dirPartyLocation
            where dirPartyLocation.Party == dirPartyTable.RecId
        {
            while select forUpdate taxRegistration
                where taxRegistration.DirPartyLocation == dirPartyLocation.RecId
            {
                if (! taxRegistration.validateDelete())
                {
                    throw Exception::Error;
                }

                taxRegistration.delete();
            }

            dirPartyLocation.IsLocationOwner = NoYes::No;
            dirPartyLocation.IsPrimary = NoYes::No;

            if (! dirPartyLocation.validateDelete())
            {
                throw Exception::Error;
            }

            dirPartyLocation.delete();
        }

        if (vendTable.InvoiceAccount)
        {
            vendTable.InvoiceAccount   = '';
            vendTable.doUpdate();
        }

        while select forUpdate purchAgreementHeader
            where purchAgreementHeader.VendorDataAreaId == vendTable.dataAreaId
            &&    purchAgreementHeader.VendAccount      == vendTable.AccountNum
        {
            if (! purchAgreementHeader.validateDelete())
            {
                throw Exception::Error;
            }

            select firstonly forupdate agreementHeaderExt
                where agreementHeaderExt.AgreementHeader == purchAgreementHeader.RecId;

            if (agreementHeaderExt)
            {
                DimensionAttributeValue::updateForEntityValueDelete(agreementHeaderExt);
                agreementHeaderExt.delete();
            }

            purchAgreementHeader.delete();
        }

        if (! vendTable.validateDelete())
        {
            throw Exception::Error;
        }
        
        DimensionAttributeValue::updateForEntityValueDelete(vendTable);
        vendTable.delete();

        if (! dirPartyTable.validateDelete())
        {
            throw Exception::Error;
        }

        dirPartyTable.delete();

        ttsCommit;

        info(strFmt("Поставщик %1 удален.", vendAccount));
    }
    catch
    {
        error("Произошла ошибка.");
    }
}
__________________
Кононов Пётр

Последний раз редактировалось pedrozzz; 03.10.2014 в 11:01.
За это сообщение автора поблагодарили: leva (2), bud (1), arhat (1).
Старый 03.10.2014, 11:14   #3  
bud is offline
bud
Участник
 
9 / 10 (1) +
Регистрация: 23.12.2005
Спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Перенос задолженности с одного поставщика/клиента на другого Лучана DAX: Функционал 2 29.06.2006 16:10
Удаление поставщика energo DAX: Функционал 4 02.12.2005 09:48
Ограничение по номеру накладной для поставщика BigMike DAX: Функционал 2 16.12.2004 16:39
Вопрос: Для чего служит скрещивание поставщика с клиентом!? Хемуль DAX: Функционал 4 30.04.2004 19:05
Удаление проекта Maxim Gorbunov DAX: Программирование 0 24.12.2001 23:04
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:59.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.