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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.09.2005, 15:52   #1  
rkrivov is offline
rkrivov
Участник
Аватар для rkrivov
 
31 / 10 (1) +
Регистрация: 18.02.2005
Адрес: Москва
:( Обязательнные поля
Доброго времи суток!

Как сделать так, чтобы нельзы было уйти с записи не заполнив обязательные поля?

У этих полях свойство Mandatory = true...

К тому же, если у таблице в InitValue сделать this.write() то можно не только запись покинуть, но и сделать все что угодно, не заполняя обязательных полей...

Кто-нибудь разъяснит мне почему так? Почему не срабатывает validateWrite ?
Старый 06.09.2005, 16:13   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Write() не проверяет запись на валидность. Вызов validateWrite() происходит до вызова Write(). Т.е. возможность или невозможность проверки при изменении записей отдана на откуп программистам.

На сервере Axapta создает поля с запретом вставки пустых значений, но при этом добавляет вставку значения по умолчанию, по-этому на сервере вставка таких полей пройдет всегда.
__________________
Axapta v.3.0 sp5 kr2
Старый 06.09.2005, 16:15   #3  
rkrivov is offline
rkrivov
Участник
Аватар для rkrivov
 
31 / 10 (1) +
Регистрация: 18.02.2005
Адрес: Москва
Понятно.

А как насчет "Как сделать так, чтобы нельзы было уйти с записи не заполнив обязательные поля?"
Старый 06.09.2005, 16:16   #4  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Если

PHP код:
public void initValue()
{
    ;

    
this.write();
    
super();

то решение

PHP код:
public void write()
{
    if(
this.validateWrite())
    {
        
super();
    }

Приводит к тому что вылезает сообщение, и создается строка с пустым RecId, но не записываются. Странно..
P.S. Писал в ответ на первый пост.
Старый 06.09.2005, 16:41   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
2 DreamCreator
Наверное вызов write() должен быть после super(). Да и делать проверку именно во write() не стоит. Ведь запись может быть вставлена и штатным способом, т.е. validateWrite() отработает несколько раз.
__________________
Axapta v.3.0 sp5 kr2
Старый 06.09.2005, 16:55   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
2 rkrivov
Ну а вообще-то странно выглядит вопрос если разобраться.

Перед сохранением записи вы должны были заполнить правильно все поля. Так что данную проблему целиком прождаете вы.
__________________
Axapta v.3.0 sp5 kr2
Старый 06.09.2005, 17:06   #7  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Изначально опубликовано AndyD
Наверное вызов write() должен быть после super().
Согласен -- логично, но для простого примера результат один и тот же.

Возникает мысль -- для чего в initValue писать write? (Мож я глубины идеи не понимаю).

validateWrite внутри write потому что он до этого нигде не вызывается, так нагляднее
Старый 07.09.2005, 16:00   #8  
rkrivov is offline
rkrivov
Участник
Аватар для rkrivov
 
31 / 10 (1) +
Регистрация: 18.02.2005
Адрес: Москва
Цитата:
Возникает мысль -- для чего в initValue писать write? (Мож я глубины идеи не понимаю).
ПО заданию не обходимо сделать так, что бы дата создание журнала ОПП (а для этого используется поле CreateDate) появлялась сразу после создания строки.

Вот для этого и написан write в initValue
Старый 07.09.2005, 16:16   #9  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Необходимо либо инициализировать поля перед записью, либо использовать собственное поле, в котором хранить дату создания и заполнять его в InitValue()
__________________
Axapta v.3.0 sp5 kr2
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Denis Fedotenko: Новые поля в складских проводках Blog bot DAX: База знаний и проекты 10 24.05.2007 11:57
Лукап, содержащий поля нескольких таблиц matew DAX: Программирование 4 30.11.2006 16:02
Получение из поля Map кода поля реальной таблицы, к ней привязанной (Mappings) vey DAX: Функционал 5 16.03.2005 11:16
Получить значение поля таблицы по номеру (Id) поля Anais DAX: Программирование 2 15.04.2004 13:00
Недопустимая комбинация поля/поля ссылки Berty Wooster DAX: Программирование 2 29.05.2003 16:31

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

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

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