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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.01.2012, 23:40   #1  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от Ilyaae Посмотреть сообщение
АХ-приложение, которое работает в связке с SQL and ORACLE. Триггер в данном случаи ничего не меняет в работе приложения, а дополняет его. Просто механизм заполнения нужных полей аналитики в InventTrans, ложится на триггер.
а почему вы в цитате оставили
"
Как Вы думаете, спустя месяц..два, разработчки вообще вспомнит о том, что после синхронизации некой таблицы надо в ней вручную поднять SQL-триггер? А если синхронизируется несколько таблиц сразу в автоматическом режиме?

Зачем что то поднимать, триггер не рушится, он создан и действует. А синхронизация нужна, до момента запуска триггера.
" ?
Триггер, это, конечно, замечательная возможность в SQL. Но, она не имеет ни каких преимуществ перед аксаптовскими "триггерами". (да простят меня аксаптеры). В аксапте это делать намного проще, удобнее и быстрее, чем на SQL, это во вторых, а во-первых, управление данными, таким образом, вы перекладываете на две , скажем так системы, что в итоге может привести к конфликту. Аксапта сама способна сделать то, что может сделать SQL триггер, при этом потребует от вас наименьших затрат, гарантируя при этом минимальное количество рисков.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
За это сообщение автора поблагодарили: lev (3).
Старый 12.01.2012, 12:09   #2  
Ilyaae is offline
Ilyaae
Участник
 
46 / 11 (1) +
Регистрация: 23.09.2008
Цитата:
Сообщение от Pustik Посмотреть сообщение
В аксапте это делать намного проще, удобнее и быстрее, чем на SQL, это во вторых, а во-первых, управление данными, таким образом, вы перекладываете на две , скажем так системы, что в итоге может привести к конфликту. Аксапта сама способна сделать то, что может сделать SQL триггер, при этом потребует от вас наименьших затрат, гарантируя при этом минимальное количество рисков.
А можно подробней, чем реализовать это в АХ? Где пример посмотреть?
Старый 12.01.2012, 13:22   #3  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от Ilyaae Посмотреть сообщение
А можно подробней, чем реализовать это в АХ? Где пример посмотреть?
В Аксапте у каждой таблицы существуют методы. В том числе и Insert(),Update(),Delete(), которые и будут являться аналогами триггеров на SQL. Перекрывая их, Вы можете написать в них свой алгоритм, который отработает при каждом : добавлении записи - Insert(), обновлении - Update() и удалении - Delete().
Простейший пример можно увидеть посмотрев эти методы на таблице Справочника номенклатуры inventTable.
В методах Insert() и Update() автоматически проставляется краткое наименование номенклатуры :
X++:
this.setNameAlias();
X++:
void insert()
{
    #OCCRetryCount
    ;
    try
    {
        ttsbegin;

        this.insertInventItemOrderSetup();

        this.insertBOMTable();
        this.setNameAlias();

        super();
        ............
}
X++:
void update()
{
    InventTable         this_Orig       = this.orig();
    ItemGroupId         itemGroup_Orig  = this_Orig.ItemGroupId;

    ForecastSales   forecastSales;
    ForecastPurch   forecastPurch;
    ;

    ttsbegin;

    this.setNameAlias();
    this.inventModelGroup().inventModelType().preUpdateInventTable(this);

    super();
    .............
}
В методе Delete() автоматически будут удалены спецификации по версиям этой номенклатуры :
X++:
public void delete()
{
    BOMTable        bomTable;
    BOMVersion      bomVersion;
    BOMVersion      bomVersion2;
    ;

    ttsbegin;

    if( !isConfigurationkeyEnabled(configurationkeynum(BOMVersion)) && this.inventItemType().canHaveBOM())
    {
        while select bomVersion
                group by bomId
                where bomVersion.ItemId == this.ItemId
           notexists join bomVersion2
                where bomVersion2.bomId == bomVersion.bomId &&
                      bomVersion2.ItemId != this.ItemId
        {
            delete_from bomTable
                where bomTable.bomId == bomVersion.bomId;
        }
    }

    super();

    ttscommit;
}
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 12.01.2012 в 13:27.
За это сообщение автора поблагодарили: Ilyaae (1).
Теги
оптимизация, склад, складская аналитика, складские отчеты

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Развалились InventSum - InventTrans Logger DAX: Программирование 21 25.08.2017 11:41
DynamicsAxSCM: The InventTrans table. Explore various field usages. Blog bot DAX Blogs 0 09.11.2010 19:10
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
Временная таблица + RLS leshy DAX: Программирование 6 27.04.2006 12:39
Связь таблиц InventTrans и PurchLine Pustik DAX: Программирование 2 25.11.2004 12:23

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

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

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