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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.01.2012, 12:09   #1  
Ilyaae is offline
Ilyaae
Участник
 
46 / 11 (1) +
Регистрация: 23.09.2008
Цитата:
Сообщение от Pustik Посмотреть сообщение
В аксапте это делать намного проще, удобнее и быстрее, чем на SQL, это во вторых, а во-первых, управление данными, таким образом, вы перекладываете на две , скажем так системы, что в итоге может привести к конфликту. Аксапта сама способна сделать то, что может сделать SQL триггер, при этом потребует от вас наименьших затрат, гарантируя при этом минимальное количество рисков.
А можно подробней, чем реализовать это в АХ? Где пример посмотреть?
Старый 12.01.2012, 13:22   #2  
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, время: 20:58.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.