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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.01.2012, 20:44   #61  
Ilyaae is offline
Ilyaae
Участник
 
46 / 11 (1) +
Регистрация: 23.09.2008
Хорошо, а если заполнение складской аналитики повесить на SqlServer, триггером на вставку и изменение? Ведь склад нужен нам только для построения отчетов, а не менять логику работы АХ. Как по мне, то это решает многое.
Старый 10.01.2012, 20:53   #62  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Ilyaae Посмотреть сообщение
Хорошо, а если заполнение складской аналитики повесить на SqlServer, триггером на вставку и изменение? Ведь склад нужен нам только для построения отчетов, а не менять логику работы АХ. Как по мне, то это решает многое.
Это Вы себе кучу проблем создадите. Один раз синхронизировли таблицу с SQL-триггером из Axapta и нет больше триггера Можно, конечно, "подправить" алгоритм синхронизации, но оно того не стоит. Сопровождение подобной "многопалубной" системы сильно усложнится.

Кроме того, а какие проблемы Вы собираетесь решить таким способом? Данное обсуждение рассматривает вовсе не вопрос заполнения тех или иных полей, а вопрос чтения уже заполенных полей в зависимости от того, где именно эти поля физически находятся (в какой таблице)
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 11.01.2012, 10:17   #63  
Ilyaae is offline
Ilyaae
Участник
 
46 / 11 (1) +
Регистрация: 23.09.2008
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Это Вы себе кучу проблем создадите. Один раз синхронизировли таблицу с SQL-триггером из Axapta и нет больше триггера Можно, конечно, "подправить" алгоритм синхронизации, но оно того не стоит. Сопровождение подобной "многопалубной" системы сильно усложнится.

Кроме того, а какие проблемы Вы собираетесь решить таким способом? Данное обсуждение рассматривает вовсе не вопрос заполнения тех или иных полей, а вопрос чтения уже заполенных полей в зависимости от того, где именно эти поля физически находятся (в какой таблице)
Так правильно, но эти поля должны заполнятся в inventtranse, а триггер как раз и позволит это делать в дальнейшем, после синхронизации, он же не разрушится(его повесить на inventdim). А решить, более быстрая выборка данных, не используя inventdim
Старый 11.01.2012, 12:38   #64  
zelibobis is offline
zelibobis
Участник
 
71 / 24 (1) +++
Регистрация: 15.10.2007
Адрес: Kiev
Цитата:
Сообщение от Ilyaae Посмотреть сообщение
..после синхронизации, он же не разрушится(его повесить на inventdim).
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Это Вы себе кучу проблем создадите. Один раз синхронизировли таблицу с SQL-триггером из Axapta и нет больше триггера Можно, конечно, "подправить" алгоритм синхронизации, но оно того не стоит.
при синхронизации триггер погибнет смертью храбрых. и вообще это как-то не "аксаптавей".
Старый 11.01.2012, 13:06   #65  
Ilyaae is offline
Ilyaae
Участник
 
46 / 11 (1) +
Регистрация: 23.09.2008
Цитата:
Сообщение от zelibobis Посмотреть сообщение
при синхронизации триггер погибнет смертью храбрых. и вообще это как-то не "аксаптавей".
При синхронизации, которая пройдет 1 раз, он еще не нужен, а после его включить. Так за-то в АХ ничего не ломаем.
Старый 11.01.2012, 19:13   #66  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Ilyaae Посмотреть сообщение
Так правильно, но эти поля должны заполнятся в inventtranse, а триггер как раз и позволит это делать в дальнейшем, после синхронизации, он же не разрушится(его повесить на inventdim). А решить, более быстрая выборка данных, не используя inventdim
Какая связь между способом заполнения некоего поля и способом его использования (чтения значения этого же поля)?

Вы считаете, что если некое поле заполнять при помощи SQL-триггера, то выборки по этому полю будут работать быстрее, чем если то же самое поле заполнять средствами Axapta?

Цитата:
Сообщение от Ilyaae
При синхронизации, которая пройдет 1 раз, он еще не нужен, а после его включить.
Как Вы думаете, спустя месяц..два, разработчки вообще вспомнит о том, что после синхронизации некой таблицы надо в ней вручную поднять SQL-триггер? А если синхронизируется несколько таблиц сразу в автоматическом режиме?

Цитата:
Сообщение от Ilyaae
Так за-то в АХ ничего не ломаем.
Axapta - это не только теплый мех собственно приложение, но еще и база данных. Одно без другого не имеет смысла. Так что, Вы по любому "ломаете" Axapta. Просто в другом месте. Причем в таком, на которое разработчки подумает в последнюю очередь. Т.е. закладываете под себя "мину замедленного действия". Когда "рванет" точно не известно. Но точно известно, что "рванет"
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 11.01.2012, 23:12   #67  
Ilyaae is offline
Ilyaae
Участник
 
46 / 11 (1) +
Регистрация: 23.09.2008
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Какая связь между способом заполнения некоего поля и способом его использования (чтения значения этого же поля)?

Вы считаете, что если некое поле заполнять при помощи SQL-триггера, то выборки по этому полю будут работать быстрее, чем если то же самое поле заполнять средствами Axapta?

Дело не в том как его заполнить. Смысл в создании и заполнении этого поля. Что даст прирост в скорости выполнения запросов(рассматривает t-sql)

Как Вы думаете, спустя месяц..два, разработчки вообще вспомнит о том, что после синхронизации некой таблицы надо в ней вручную поднять SQL-триггер? А если синхронизируется несколько таблиц сразу в автоматическом режиме?

Зачем что то поднимать, триггер не рушится, он создан и действует. А синхронизация нужна, до момента запуска триггера.

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

Зачем что то поднимать, триггер не рушится, он создан и действует. А синхронизация нужна, до момента запуска триггера.
" ?
Триггер, это, конечно, замечательная возможность в SQL. Но, она не имеет ни каких преимуществ перед аксаптовскими "триггерами". (да простят меня аксаптеры). В аксапте это делать намного проще, удобнее и быстрее, чем на SQL, это во вторых, а во-первых, управление данными, таким образом, вы перекладываете на две , скажем так системы, что в итоге может привести к конфликту. Аксапта сама способна сделать то, что может сделать SQL триггер, при этом потребует от вас наименьших затрат, гарантируя при этом минимальное количество рисков.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
За это сообщение автора поблагодарили: lev (3).
Старый 11.01.2012, 23:42   #69  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Ilyaae Посмотреть сообщение
АХ-приложение, которое работает в связке с SQL and ORACLE. Триггер в данном случаи ничего не меняет в работе приложения, а дополняет его. Просто механизм заполнения нужных полей аналитики в InventTrans, ложится на триггер.
Так про то и говорят, что оно дополняет приложение, но только временно, а именно до первой синхронизации таблицы. При синхронизации таблицы триггер удалится.
А случиться эта синхронизация может когда угодно! Причем даже тогда, когда вы об этой таблице и не вспомните. Например при изменении свойства StringSize у EDT с типом String будет выполнена синхронизация всех таблиц (поясню, вы изменили длину поля ItemId, которое не имеет отношения к вашей таблице, а она отсинхронизировалась и до свидания триггер)!

P.S. просто совет, прислушайтесь к людям, и выполняйте изменение с помощью самой аксапты (ведь именно приложение, а не БД, управляет бизнес логикой), меньше проблем будет потом...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 12.01.2012, 11:24   #70  
Ilyaae is offline
Ilyaae
Участник
 
46 / 11 (1) +
Регистрация: 23.09.2008
Цитата:
Сообщение от lev Посмотреть сообщение
Так про то и говорят, что оно дополняет приложение, но только временно, а именно до первой синхронизации таблицы. При синхронизации таблицы триггер удалится.
А случиться эта синхронизация может когда угодно! Причем даже тогда, когда вы об этой таблице и не вспомните. Например при изменении свойства StringSize у EDT с типом String будет выполнена синхронизация всех таблиц (поясню, вы изменили длину поля ItemId, которое не имеет отношения к вашей таблице, а она отсинхронизировалась и до свидания триггер)!

P.S. просто совет, прислушайтесь к людям, и выполняйте изменение с помощью самой аксапты (ведь именно приложение, а не БД, управляет бизнес логикой), меньше проблем будет потом...
А, понял. Сорри, спутал с синхронизацией данных. Вот и думал, чего б это триггеру пропадать
Старый 12.01.2012, 12:09   #71  
Ilyaae is offline
Ilyaae
Участник
 
46 / 11 (1) +
Регистрация: 23.09.2008
Цитата:
Сообщение от Pustik Посмотреть сообщение
В аксапте это делать намного проще, удобнее и быстрее, чем на SQL, это во вторых, а во-первых, управление данными, таким образом, вы перекладываете на две , скажем так системы, что в итоге может привести к конфликту. Аксапта сама способна сделать то, что может сделать SQL триггер, при этом потребует от вас наименьших затрат, гарантируя при этом минимальное количество рисков.
А можно подробней, чем реализовать это в АХ? Где пример посмотреть?
Старый 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).
Старый 16.01.2012, 00:01   #73  
Мартынов Дмитрий is offline
Мартынов Дмитрий
Участник
 
236 / 66 (3) ++++
Регистрация: 02.02.2004
Адрес: г. Москва
Цитата:
Сообщение от AndyD Посмотреть сообщение
Как говорит mazzy - открывайте отдельную тему, там и расскажите
Из двух вопросов(одного очевидного - как разгребать проблему и второго менее очевидного, как ее избежать) мне сейчас интереснее второй, но я все что хотел - сказал, по этому открывать отдельную тему не буду.
НО
Секретов у меня нет, если ко мне есть вопросы (например, не понятно то что я писал) - открывайте тему, спрашивайте - я отвечу. Только в личку сообщите а то я могу не узнать о ее существовании...
Теги
оптимизация, склад, складская аналитика, складские отчеты

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Развалились 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, время: 21:06.