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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.03.2009, 17:34   #1  
Masterofmind is offline
Masterofmind
Участник
Аватар для Masterofmind
 
5 / 10 (1) +
Регистрация: 28.05.2008
? Смена первичного ключа таблицы VendTable
Доброго дня, коллеги.

Сразу извиняюсь за возможный оффтоп, но очень срочно нужен совет гуру. При импорте первичных данных в систему (DAX 4.0 SP2 - 3-х звенка) был допущен один промах, а именно - в кодах поставщиков присутствуют и латинская и русская буква С. Задача - перекодировать все первичные ключи и заменить (где присутствует) латинскую С на русскую С.
Формат кода - XXСПYYYYYYY, где XX-код подразделения за которым числится поставщик, а YYYYYYY - порядковый номер формата 0000021

Я имею очень скромный опыт программирования в DAX, вот попытался написать, который все это дело исправляет:
X++:
static void Base1000_RenameVendPrKey(Args _args)
{
    vendTable        vendTable,
                     findVendTable;

    str              strToUpdate;
    ;

    while select recid from vendTable
        where vendTable.AccountNum like "*C*"
    {
        try
        {
            ttsbegin;

            findVendTable = VendTable::findRecId(vendTable.RecId, true);

            if(findVendTable)
            {
                strToUpdate = strpoke(vendtable.AccountNum, "С", strfind(vendtable.AccountNum,"C", 1, strlen(vendtable.AccountNum)));

                CCPrimaryKey::renamePrimaryKey(VendTable, strToUpdate, fieldNum(VendTable, AccountNum)); // переименование во всех связанных таблицах

                VendTable.AccountNum = strToUpdate ;

                VendTable.renamePrimaryKey(); // переименование в основной таблице

                //VendTable.update();
            }

            ttscommit;
        }
        Catch (exception::error)
        {
             exceptionTextFallThrough(); // вывод ошибки

             ttsabort;
             retry; // повтор блока try
        }
    }
}
Джоб почему-то не работает, или вылетает с ошибкой, которую я перехватить не могу. Ошибка я так понимаю идет из-за блокировки таблицы.
По идее я хочу перехватывать ошибку блокировки и пытаться апдейтить следующую запись, и таким образом - путем нескольких итераций привести справочник к "употребляемому" руководством виду.

Ваше мнение господа? Помогите провести аудит кода и подскажите, ЧТО именно я не так делаю.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
Две таблицы в одном datasource Turetskiy DAX: Программирование 10 16.09.2008 16:35
Блокировка ключа индекса Sequel DAX: Программирование 4 06.07.2006 16:08
Получение из поля Map кода поля реальной таблицы, к ней привязанной (Mappings) vey DAX: Функционал 5 16.03.2005 11:16
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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