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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.08.2015, 15:33   #1  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Поиск источника исключения
Доброе время суток!

AX 2012, /Расчеты с поставщиками/Обычный/Заказы на покупку/Договоры покупки/Создать договор покупки, при включенной настройке ручного ввода НН, выдает такое сообщение в инфологе
X++:
	 (15:28:27)	 " Код договора покупки"   .
	 (15:28:27)	 " Код договора"   .
Причем поле заполнено, и запись таки создается, но без номера. Прошел дебаггером весь алгоритм, все проверки где в коде выдается такое исключение проходит нормально (в методах validateWrite таблиц, в коде формы и класса PurchAgreementForm...), но в конце все равно выдается сообщение. Подскажите где еще оно может возникать.
Старый 04.08.2015, 15:43   #2  
axm2013
Гость
 
n/a
Может попробовать поставить брекпоинт в Info на метод add?
Старый 04.08.2015, 15:59   #3  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Поставил. Срабатывает 2 раза, но не понятно где. Делаю в дебаггере выход вверх, оно меня перебрасывает на метод validateWrite где, если верить тому же дебаггеру, все проверки проходят успешно.
Старый 04.08.2015, 16:07   #4  
axm2013
Гость
 
n/a
Цитата:
Сообщение от syl Посмотреть сообщение
Поставил. Срабатывает 2 раза, но не понятно где. Делаю в дебаггере выход вверх, оно меня перебрасывает на метод validateWrite где, если верить тому же дебаггеру, все проверки проходят успешно.
validateWrite смотрим таблицу и смотрим поля не mandatory ли?
Старый 04.08.2015, 16:20   #5  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
X++:
public boolean validateWrite()
{
    boolean ret;

    if (countryRegion_RU)
    {
        if (purchAgreementHeader.AgreementClassification)
        {
            purchAgreementForm.formMethodDataSourceCreate(purchAgreementHeader_ds);
        }
        else
        {
            return checkFailed(strFmt("@SYS84753", fieldPName(PurchAgreementHeader, AgreementClassification)));
        }
        if (!purchAgreementHeaderExt_RU.AgreementDate)
        {
            return checkFailed(strFmt("@SYS84753", fieldPName(PurchAgreementHeaderExt_RU, AgreementDate)));
        }

        if (!purchAgreementHeaderExt_RU.checkAgreementUniqueness(purchAgreementHeader))
        {
            return false;
        }
    }

    ret = super();

    if (agreementHeaderDefault_ds.object(fieldNum(AgreementHeaderDefault, Project)).mandatory()
        && !agreementHeaderDefault.Project)
    {
        ret = checkFailed(strFmt("@SYS84753", fieldPName(AgreementHeaderDefault, Project)));
    }

    if (ret && !purchAgreementForm.formMethodDataSourceValidateWrite(purchAgreementHeader_ds))
    {
        ret = false;
    }

    return ret;
}
Если проходить дебаггером то все норм (в super тоже), но после того как код отработал, сообщение все же выдается.
Все поля заполнены!
Старый 04.08.2015, 16:31   #6  
axm2013
Гость
 
n/a
Если генерит инфолог на validateWrite то видимо не все нормально.
Может он возвращает в super false?
Старый 04.08.2015, 16:40   #7  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Но где то же он должен записывать strFmt("@SYS84753", fieldPName(PurchAgreementHeader, AgreementClassification))

Причем точка останова на checkFailed не срабатывает.

Последний раз редактировалось syl; 04.08.2015 в 16:43.
Старый 04.08.2015, 16:52   #8  
axm2013
Гость
 
n/a
Смотрим таблицу AgreementHeader которая является предком для PurchAgreementHeader:
в нем поле AgreementClassification mandatory
соответственно возможен вызов infolog если не заполнено на уровне ядра с подобным сообщением.
За это сообщение автора поблагодарили: syl (1).
Старый 04.08.2015, 17:27   #9  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Изменил поле AgreementHeader.AgreementClassification mandatory = No. Результат тот же. Не похоже что проблема в нем. При чем данное поле заполняется в нашей форме...
Старый 04.08.2015, 17:36   #10  
axm2013
Гость
 
n/a
Можете приложить то что видите в инфологе в дебагере:
стек вызывов и прочее.?
И значения поля PurchNumberSequence таблицы PurchAgreementHeader которое обязательно к заполнению.

Последний раз редактировалось axm2013; 04.08.2015 в 17:39.
Старый 04.08.2015, 17:49   #11  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
В кратце в PurchNumberSequence пишется произвольное значение, напр. "65498798456" (поскольку включена настройка "вручную" не имеет значения что там записано). В инфолог выводится только то что я написал выше. Ну а стек вызовов смогу предоставить завтра с утра.
Старый 05.08.2015, 10:37   #12  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Стек вызовов на info.add

X++:
[c]    \Classes\Info\add                                                                                       1
[c]    \Classes\xRecord\validateWrite                                                                           
[c]    \Classes\FormDataSource\validateWrite                                                                    
[c]    \Forms\PurchAgreement\Data Sources\PurchAgreementHeaderExt_RU\Methods\validateWrite                    18
[c]    \Classes\FormDataSource\leaveRecord                                                                      
[c]    \Classes\FormRun\selectControl                                                                           
[c]    \Classes\FormRun\canClose

Последний раз редактировалось syl; 05.08.2015 в 10:41.
Старый 05.08.2015, 10:49   #13  
axm2013
Гость
 
n/a
Замечательно
У таблицы PurchAgreementHeaderExt_RU предок AgreementHeaderExt_RU:
смотрим обязательные к заполнению поля для этой таблицы (AgreementId к примеру - это код договора).
Заполнены ли они в purchAgreementHeaderExt_RU?
Старый 05.08.2015, 11:15   #14  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
(PurchAgreementHeader).PurchNumberSequence - наше произвольное значение, как раз и является AgreementId в AgreementHeaderExt_RU.

По сути все поля заполняются так же как и при автоматическом присвоении номера, за исключением самого номера, но если выключена опция "вручную" то все работает нормально, но значение в это поле присваивается на форме автоматически...
Старый 05.08.2015, 16:53   #15  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
На форме, внизу, есть кнопка закрыть. В дизайне ее нету, как узнать какие действия выполняются при ее нажатии? Можно ли отслеживать стек вызовов без точки останова, что бы проследить всю последовательность действий не зная точки входа?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как сделать в lookup поиск по нескольким полям Jurezzz DAX: Программирование 6 31.05.2013 10:45
Поиск набором в выпадающем списке.. propeller DAX: Программирование 0 04.04.2011 17:31
"поиск" braathe DAX: Программирование 6 24.03.2006 13:07
Поиск источника ошибки nikbik DAX: Программирование 11 16.02.2006 09:09
Поиск по подстроке JohNick DAX: Программирование 8 06.03.2004 22:24

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

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

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