Показать сообщение отдельно
Старый 12.01.2012, 13:22   #72  
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).