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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.07.2018, 08:42   #1  
opsvlad is offline
opsvlad
Участник
 
118 / 13 (1) ++
Регистрация: 05.07.2018
Проверка ввода поля диспетчерский номер
Есть форма и к ней связаны datasource. Не подскажите в каких методах надо вставить.
Примерное задание:
На форме TSRTechItemConstructorForm реализовать проверку при изменении значения поля «Диспетчерский номер» на длину в четыре знака. Если меньше четырех добавить необходимое количество нулей. Добавления нулей выполнить с лева на право, до получения четырехзначного диспетчерского номера. Если больше – выбрасывать инфолог с ошибкой. Проверку выполнять для технических мест типа TSRTechItemTypeCode::TransformerStation (Подстанции).
Я хочу узнать в какой метод надо записать код чтобы заработало?
Старый 19.07.2018, 10:15   #2  
Pandasama is offline
Pandasama
Участник
 
130 / 18 (1) ++
Регистрация: 11.08.2014
Адрес: Барнаул
Посмотрите на Form/datasource/field/validateField, modifiedField (если только на этой форме) или Table/validateField, modifiedField (если на всех формах с этим полем)

Хотя в описанной ситуации я бы вообще сделал edit-метод, наверно
Старый 19.07.2018, 11:44   #3  
opsvlad is offline
opsvlad
Участник
 
118 / 13 (1) ++
Регистрация: 05.07.2018
Я просто новичок, и все не знаю пока что, только некоторые jobs делал которые не связанные с формой
Старый 19.07.2018, 11:47   #4  
Pandasama is offline
Pandasama
Участник
 
130 / 18 (1) ++
Регистрация: 11.08.2014
Адрес: Барнаул
Тогда вам, наверно, сюда - Начало изучения AX
Старый 19.07.2018, 11:50   #5  
opsvlad is offline
opsvlad
Участник
 
118 / 13 (1) ++
Регистрация: 05.07.2018
Вы как опытный разработчик, можете вот сказать, дали например тз проверить ввод или другое и надо это сделать везде. Как вы найдете тот метод где надо добавить код? Хочу совет узнать
Старый 19.07.2018, 12:40   #6  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,321 / 284 (12) ++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Наиболее правильный вариант - открываете таблицу, к которой относится поле «Диспетчерский номер» и добавляете обработку изменения поля в перекрытый метод modifiedField. Проверку с выводом инфолога лучше добавить на validateWrite.
__________________
С уважением,
Вячеслав
За это сообщение автора поблагодарили: opsvlad (1).
Старый 19.07.2018, 12:53   #7  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
3,866 / 1980 (74) ++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от opsvlad Посмотреть сообщение
Вы как опытный разработчик, можете вот сказать, дали например тз проверить ввод или другое и надо это сделать везде. Как вы найдете тот метод где надо добавить код? Хочу совет узнать
Я как опытный консультант привел бы пример стандарта а как опытный разработчик сделал бы по аналогии.
__________________
Ivanhoe as is..
Старый 19.07.2018, 15:30   #8  
opsvlad is offline
opsvlad
Участник
 
118 / 13 (1) ++
Регистрация: 05.07.2018
А можете подсказать что писать в этом методе, я так полагаю нужен switch по параметру field, я просто новичок в Axapta, я бы эту проверку легко бы сделал на другом языке
Старый 20.07.2018, 09:14   #9  
Pustik is offline
Pustik
Участник
 
786 / 337 (13) ++++++
Регистрация: 04.06.2004
в методах таблицы :
X++:
public void modifiedField(fieldId _fieldId)
{
    ;
    
    super(_fieldId);

    switch (_fieldId)
    {
        case fieldnum(MyTable, MyField):
        if (strlen(this.MyField) < 4)
            this.MyField = strRep('0',4 - strLen(this.MyField)) + this.MyField;
            break;
    }
}
X++:
public boolean validateWrite()
{
    boolean ret;

    ret = super();
    
    if (ret)
    {
        if (strlen(this.MyField) > 4)
            ret = ret && CheckFailed('Длина поля > 4');
    }

    return ret;
}
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 20.07.2018 в 09:17.
За это сообщение автора поблагодарили: opsvlad (1).
Старый 20.07.2018, 10:20   #10  
opsvlad is offline
opsvlad
Участник
 
118 / 13 (1) ++
Регистрация: 05.07.2018
спасибо, я решил задачу эту (ушло 3 дня) как для новичка, но ваш способ я первый раз вижу и работает
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как заполнить поля Номер и дата платежного поручения в журнале фактур в модуле клиент? Elenko DAX: Функционал 4 27.07.2015 09:58
Сторно ввода в эксплуатацию ОС Rivez DAX: Функционал 16 25.08.2009 10:46
Denis Fedotenko: Новые поля в складских проводках Blog bot DAX: База знаний и проекты 10 24.05.2007 11:57
Проверка наличия поля в DictTable YouRock DAX: Программирование 4 22.03.2007 08:59
Проблема с установкой начальных значений для поля ввода даты polygris DAX: Программирование 6 06.06.2006 13:48
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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