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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.07.2014, 12:28   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Может для того чтобы меньше блокировать таблицу ref1. Побыстрее "отпустить". Если операции вставка/удаление/изменение записей в этой таблице происходят часто, а "некие действия" достаточно продолжительны, то вполне возможно - это такая оптимизация.
метод работает глубоко внутри транзакции.
никаких особо длинных операций не выполняется.
вот полный код:

X++:
/// <summary>
/// Tracks channel database assignment.
/// </summary>
public void trackChannelDBAssignment()
{
    container channelDB;
    int i;
    RefRecId channelDBRecId;
    RefRecId channelRecId;
    RetailCDXDataStoreChannel dataStoreChannel;

    while select RefRecId
        from ref1
        where ref1.NodeID == 0
           && ref1.RefTableID == tableNum(RetailCDXDataStoreChannel)
           && ref1.SYS_CHANGE_OPERATION == 'I'
    {
        channelDB += ref1.RefRecID;
    }

    for (i = 1; i <= conLen(channelDB); ++i)
    {
        channelDBRecId = conPeek(channelDB, i);

        select Channel from dataStoreChannel
            where dataStoreChannel.RecId == channelDBRecId;

        channelRecId = dataStoreChannel.Channel;

        select firstOnly RecId from ref1
        where ref1.NodeID == 0
           && ref1.RefTableID == tableNum(RetailChannelTable)
           && ref1.SYS_CHANGE_OPERATION == 'I'
           && ref1.RefRecID == channelRecId;

        if (!ref1)
        {
            ref1.initValue();
            ref1.NodeID = 0;
            ref1.RefTableID = tableNum(RetailChannelTable);
            ref1.RefRecID = channelRecId;
            ref1.SYS_CHANGE_OPERATION = 'I';
            ref1.insert();
        }
    }
}
чувствую, что туплю. и наверняка причина на поверхности.
но даже предположить не могу ЗАЧЕМ?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Какой смысл InventDim на строках заказа? IKA DAX: Функционал 7 08.04.2013 19:04
DAX 2009 RU5 - Ошибка компилятора в конструкции select sukhanchik DAX: Программирование 9 11.01.2013 08:43
Смысл проекта AxUpgradeRecIdConflicts trud DAX: Администрирование 1 23.08.2012 11:51
Объясните смысл проводки Eldar9x DAX: Функционал 8 24.11.2009 08:32
Деловое отношение – родитель и Разовый клиент. В чем их смысл? ShyGuy DAX: Прочие вопросы 4 10.03.2009 10:28

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

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

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