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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.10.2004, 12:57   #1  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Аксапта 3.0 SP 3 падает
Есть такой запросик, при выполнении которого на тонком клиенте в 3х звенке Аксапта падает
PHP код:
    select RecId from taxOnItem
        where taxOnItem
.TaxItemGroup == 'НДС18' // Есть такой
    
join RecId from taxGroupData
        where taxGroupData
.TaxCode == taxOnItem.TaxCode
           
&& taxGroupData.TaxGroup == 'Нет Такого'
    
join RecId from taxTable
        where  taxTable
.TaxCode == taxOnItem.TaxCode
Если подставить существующие коды, то все работает.
Аксапта 3.0 sp 3.

Это проблема наша или общая? и какие методы решения существуют?
Старый 11.10.2004, 13:03   #2  
Lazy_Tiger is offline
Lazy_Tiger
NavAx
Axapta Retail User
1C
NavAx Club
 
610 / 31 (3) +++
Регистрация: 17.12.2001
Адрес: Красноярск
судя по всему - общая.
у меня точно так же валится
__________________
И все они создания природы...
Старый 11.10.2004, 13:22   #3  
AlexUnik is offline
AlexUnik
Участник
 
199 / 22 (1) +++
Регистрация: 01.06.2004
Адрес: Королёв
А так не валится:
X++:
select RecId from taxOnItem
        where taxOnItem.TaxItemGroup == 'НДС18' // Есть такой
    join RecId from taxGroupData
        where taxGroupData.TaxCode == taxOnItem.TaxCode
           && taxGroupData.TaxGroup == 'Нет Такого'
    join RecId from taxTable
        where  taxTable.TaxCode == taxGroupData.TaxCode;
Старый 11.10.2004, 14:17   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
to AlexUnik: не помогло

Пока я вижу 2 решения
1. Перенести метод на сервер
2. Разбить while на 2 (исходный пример - кусок от while)
Осталось только нати все места с подобными запросами
Старый 11.10.2004, 14:38   #5  
AlexUnik is offline
AlexUnik
Участник
 
199 / 22 (1) +++
Регистрация: 01.06.2004
Адрес: Королёв
Странно. У меня первая вариация запроса, которую Вы предложили тоже валится, но вторая проходит без проблем. (Axapta 3.0 SP3). Быть может, Вы что-то не учли? Попробуйте так:
X++:
static void JobRec(Args _args)
{

taxOnItem taxOnItem;
taxGroupData taxGroupData;
taxTable taxTable;

select RecId from taxOnItem
        where taxOnItem.TaxItemGroup == 'НДС18'
    join RecId from taxGroupData
        where taxGroupData.TaxCode == taxOnItem.TaxCode
    join RecId from taxTable
        where  taxTable.TaxCode == taxGroupData.TaxCode;
{
    info(strfmt("%1", taxOnItem.TaxCode));
}
}
Старый 11.10.2004, 15:03   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Учел, все что мог
PHP код:
static void JobRec(Args _args)
{
    
taxOnItem taxOnItem;
    
taxGroupData taxGroupData;
    
taxTable taxTable;
    ;

    while 
select RecId from taxOnItem
        where taxOnItem
.TaxItemGroup == 'НДС18'
    
join RecId from taxGroupData
        where taxGroupData
.TaxCode  == taxOnItem.TaxCode &&
              
taxGroupData.TaxGroup == ''
    
join RecId from taxTable
        where taxTable
.TaxCode == taxGroupData.TaxCode
    
{
        
info('123');
    }

Как говорится.. Мэрри Поппинс? - Досвидания
Старый 11.10.2004, 15:33   #7  
AlexUnik is offline
AlexUnik
Участник
 
199 / 22 (1) +++
Регистрация: 01.06.2004
Адрес: Королёв
Скорее всего, ошибка возникает из-за отсутствия кода 'НДС18' в TaxItemGroup. Попробуйте составить запрос, заведомо возвращающий результаты.
Старый 11.10.2004, 16:14   #8  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
А так?

PHP код:
static void JobRec(Args _args)
{
    taxOnItem taxOnItem;
    taxGroupData taxGroupData;
    taxTable taxTable;
    ;

    while select RecId,TaxCode from taxOnItem
        where taxOnItem
.TaxItemGroup == 'НДС18'
    join RecId,TaxCode from taxGroupData
        where taxGroupData
.TaxCode  == taxOnItem.TaxCode &&
              taxGroupData.TaxGroup == ''
    join RecId from taxTable
        where taxTable
.TaxCode == taxGroupData.TaxCode
    
{
        info('123');
    }

Старый 12.10.2004, 16:10   #9  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Кстати, видимо по теме. У меня рубит с ног Аксапту следующий, как я понимаю аналогичный, код:

PHP код:
        taxValue 0;
        
taxItemGroup item.salesTaxItemGroupId();
        while 
select taxOnItem where taxOnItem.TaxItemGroup == taxItemGroup
            exists join taxTable
                where taxOnItem
.TaxCode == taxTable.TaxCode
                
&& (taxTable.TaxType_RU == TaxType_RU::VAT
                
|| taxTable.TaxType_RU == TaxType_RU::VATReduced)
            
exists join taxGroupData
                where taxTable
.TaxCode == taxGroupData.TaxCode
        
{
            
taxValue += TaxData : : percenttaxOnItem.taxCodesystemdateget(), );
        } 
при этом валится Аксапта только в том случае, если в справочнике номенклатуры есть хотя бы один товар с незаполненным полем "Налоговая группа номенкл.".
Лечил соответственно тем что проставлял это поле - ТОГДА ВСЁ РАБОТАЕТ.
Старый 12.10.2004, 16:35   #10  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Хорошо быть здоровым и богатым
Согласитесь, если работоспособность клиентского приложения зависит от того какие параметры попали в запрос, то надо что-то делать с этим приложением.

За все варианты спасибо, но ничего не работает.
Аксапта падала, падает и будет падать.
Старый 12.10.2004, 16:41   #11  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,699 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Слушай, ну раз так стабильно падает именно на таком запросе, то сделай вместо одного While несколько вложенных. Ну, что-то вроде.

while select Tab1
{
while select Tab2 where tab2.id == tab1.id
{
...
}
}

Да, работать будет медленнее. Но зато падать перестанет!
Старый 12.10.2004, 16:55   #12  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Re: Хорошо быть здоровым и богатым
Цитата:
Изначально опубликовано Wamr
Согласитесь, если работоспособность клиентского приложения зависит от того какие параметры попали в запрос, то надо что-то делать с этим приложением.

За все варианты спасибо, но ничего не работает.
Аксапта падала, падает и будет падать.
есть мнение, что это приколы join-а нескольких таблиц с CacheLookup=EntireTable

по крайней мере, изменил CacheLookup на FoundAndEmpty у всех трех (времени на эксперименты нет) - заработало

Спасибо, конечно, разработчикам - сэкономили один запрос к серверу БД



Wamr, у Вас есть возможность скинуть эту багу в сервисную систему или партнеру?
Старый 12.10.2004, 17:03   #13  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Все эти таблицы полностью в кэше (EntireTable), если сделать первый while по объединению taxOnItem и taxGroupData, то время выполнения вообще практически не изменится. Но дело в том, что в 2.5 это был очень популярный запрос, а в 3.0 его везде вычистили, что наводит на мысль, что кто-то знал об этой фиче.

К тому же, сам факт настораживает... при каких еще запросах мы получим такой же эффект?

-----------
to Vadik
Теоретически есть (партнеру). Но как это сделать на практике не знаю (никогда не делал)
Старый 12.10.2004, 17:35   #14  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Изначально опубликовано Wamr
Все эти таблицы полностью в кэше (EntireTable), если сделать первый while по объединению taxOnItem и taxGroupData, то время выполнения вообще практически не изменится.
Не надо while select - таблицы-то небольшие. Если понизить CacheLookup хотя бы у одной из трех, запрос просто уйдет на SQL сервер, а не будет выполняться на клиенте по непонятно какому алгоритму. И выполнится быстро, и не упадет
Теги
cache lookup

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Каков процент внедрений "стандартной" поставки системы Аксапта? coolibin DAX: Прочие вопросы 17 10.02.2009 12:45
Падает..Падает..Падает..Не снег - аксапта.. Hobo DAX: Администрирование 11 23.06.2006 19:57
Запросы в Аксапта ibc DAX: Программирование 5 08.08.2005 22:47
Аксапта падает при открытии журнала табелей Grib DAX: Администрирование 10 30.03.2004 09:21
Падает акспата(клиент). bucken DAX: Функционал 14 02.10.2003 14:22

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

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

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