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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.04.2013, 12:19   #1  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Проверка возможности разноски документов в заказах на продажу. DAX 2012
Вот такой чудесный метод есть в DAX 2012 R2, перед разноской документов по заказу на продажу SalesFormletterProvider\checkJournal.

X++:
/// <summary>
/// Determines whether the journal is valid.
/// </summary>
/// <returns>
/// true if the journal is valid; otherwise, false.
/// </returns>
public boolean checkJournal()
{
    boolean  ok = true;

    salesTotals = this.parmTotals();

    ttsbegin;   // In transactions in order to get enforce selection of eg. CustTable
    if (! this.checkHeading()      ||
        ! this.checkBlockedLevel() ||
        ! this.checkLines())
    {
        ok = false;
    }

    setPrefix(strFmt("@SYS76767", salesTable.SalesId));

    if (! this.creditMaxOk(salesTotals))
    {
        // <GEERU>
        if (isCountryRegionRU)
        {
            if (CustParameters::find().CreditLineError == CreditLineErrorType::Error)
            {
                return false;
            }
            else
            {
                ok = true;    // needs to reach the commit below
            }
        }
        else
        {
        // </GEERU>
            if (ok && CustParameters::find().CreditLineError == CreditLineErrorType::Error)
            {
                ok = false;
            }
        // <GEERU>
        }
        // </GEERU>
    }

    // <GIN>
    if (TaxParameters::checkTaxParameters_IN()
        && this.parmDocumentStatus() == DocumentStatus::ShippingBill_IN)
    {
        ok = this.checkFormLetterId_IN();
    }
    // </GIN>

    ttscommit;

    return ok;

}
Что то аналогичное есть и в более младших версиях, там код насколько я помню зашит в SalesFormLetter\checkJournal, причем код по проверке кредитного лимита тянется чуть ли не из тройки.

И во всех версиях одно и тоже, в самом начале метода не проходит проверка по стандартным параметрам и ok = false, а затем есть замечательные строки вида

X++:
 ok = true;    // needs to reach the commit below
X++:
 ok = this.checkFormLetterId_IN();
К ошибкам это "сложно" отнести, ведь код жив начиная с 3.0, а в 2012 дополнительно появляются аналогичные проверки, видимо я что то упускаю, может кто то пояснить для чего сбрасывается результат предыдущих проверок ?
__________________
Sergey Nefedov
Старый 19.04.2013, 12:47   #2  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
X++:
if (isCountryRegionRU) // мы русские, нам плевать на проверки
{
    ...
}
А вообще не зря там комментарий оставили: // needs to reach the commit below
__________________
// no comments

Последний раз редактировалось dech; 19.04.2013 в 12:50.
Старый 19.04.2013, 12:56   #3  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от dech Посмотреть сообщение
А вообще не зря там комментарий оставили: // needs to reach the commit below
А то что двумя строками выше, вообще без комментариев. Ну а оно и понятно, и так ошибка зачем транзакцию закрывать

X++:
 return false;
Ну а так с таким же успехом можно было написать

X++:
 ok = false; // needs to reach the commit below
Или вообще не менять ok.
__________________
Sergey Nefedov
Старый 19.04.2013, 13:06   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Меня больше волнует, что транзакцию не закрывают здесь:
X++:
if (CustParameters::find().CreditLineError == CreditLineErrorType::Error)
{
    return false;
}
__________________
// no comments
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
amer-ax: It was a great day! Blog bot DAX Blogs 3 29.12.2012 01:02
DAX: Official Dynamics AX 2012 R2 Content (update) - Where is it, and how can you find out about updates? Blog bot DAX Blogs 0 03.12.2012 11:11
DAX: A sneak peek tour: 4 Business Benefits of Microsoft Dynamics AX 2012 R2 Blog bot DAX Blogs 0 03.12.2012 11:11
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:06.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.