Поиск значений из элемента управления формы вне форм

мне было интересно, можно ли получить значения из моих элементов управления формой. Через код x++ из моего класса или моего табличного метода?

Я перебираю свою форму и хочу получить все имена и значения. Я получил имена, но не значения, пожалуйста, помогите, спасибо.

if (_formControlId)
{
    formGroupControl = _formRun.design().control(_formControlId);
}
else
{
    formGroupControl = _formRun.design();
}
// Finding children
controlCount = formGroupControl.controlCount();
for (i = 1; i <= controlCount; i++)
{
    formControl = formGroupControl.controlNum(i);
    // Fill MainTable
    if(formControl is formTabPageControl)
    {
        if(formControl.HierarchyParent()    == formControl.HierarchyParent("TabHeader"))
        {
            mainTopicId++;
            GloDataMainTopics.Topic     = formControl.labeltext();
            GloDataMainTopics.TopicId   = int2str(mainTopicId);
            GloDataMainTopics.insert();

            newParentTopicId = GloDataMainTopics.TopicId;
        }
    }
    // Fill SubTable
    if(formControl is formGroupControl)
    {
        newParentTopicId = this.fillGroupControls(formControl, _parentTopicId);
    }
    if (!newParentTopicId)
        newParentTopicId = _parentTopicId;
    //Fill Lines
    if (formControl is FormStringControl    || formControl is FormReferenceGroupControl ||
        formControl is FormCheckBoxControl  || formControl is FormComboBoxControl       ||
        formControl is FormWindowControl    || formControl is FormDateControl           ||
        formControl is FormRealControl      || formControl is FormIntControl)
        {
            this.fillLineFields(formControl, newParentTopicId, j);

            /*
            this.fillTabPagePurchase(formControl, newParentTopicId);
            this.fillTabPageGeneral(formControl, newParentRecId);
            */
            //info(strFmt("MainTopics '%1', %2", formControl.name(), j ));
        }

    if (formControl.isContainer())
    {
        this.findNodes(_formRun, formControl.id(), newParentTopicId);
    }
}

person Mshei    schedule 07.12.2015    source источник
comment
community.dynamics.com/ax/f/33/t/83599   -  person Francis Saul    schedule 07.12.2015
comment
Это необычный запрос, не могли бы вы пролить свет на ваш вариант использования? Вы говорите о диалоговых полях или о сохранении полей формы в базу данных? Если можно покажите код.   -  person Jan B. Kjeldsen    schedule 07.12.2015
comment
Я использую стандартный EcoResProductDetailsExtended, а затем создал класс, который рекурсивно перебирает все элементы управления. Я могу получить имена и т. д. в элементах управления, но не значения.   -  person Mshei    schedule 07.12.2015
comment
Не могли бы вы показать часть кода, который вы используете для доступа к элементам управления и получения их имен?   -  person FH-Inway    schedule 07.12.2015
comment
Тот же вопрос в сообществе AX   -  person FH-Inway    schedule 07.12.2015


Ответы (1)


Да, ты можешь. Имейте в виду, что некоторые значения элементов управления хранятся в .text(), valueStr() и т. д., а не в .value(), но вы сами это поймете.

Object      control;
control = formControl; // I'm assuming this is your control you're using

if (SysTest::hasMethod(control, identifierStr(text)))
{
    text = control.text();
    info(strFmt("Text found is '%1'", text));
}

if (SysTest::hasMethod(control, identifierStr(value)))
{
    value = control.value();
    info(strFmt("Value found is '%1'", value));
}

Вот сообщение в блоге, которое я сделал, которое показывает, как повторять все элементы управления формы. Вы можете взять внутренний метод и поместить его в метод формы, затем вызвать его во время выполнения и просто добавить дополнительные блоки SysTest::, и это должно дать вам быстрое рабочее доказательство концепции каждого элемента управления в форме и значение/текст /так далее.

http://www.alexondax.com/2014/05/how-to-use-recursion-to-loop-over-form.html

person Alex Kwitny    schedule 07.12.2015
comment
Даже с этой функцией мои значения пусты - person Mshei; 08.12.2015
comment
Я также попробовал ссылку, даже когда я пытаюсь использовать функцию ссылок. Выходит пусто. - person Mshei; 08.12.2015
comment
Я думаю, что вы делаете что-то не так или не предоставляете достаточно подробностей. Я проверил это, и это сработало для меня. Я добавил StringEdit в форму и кнопку с этим кодом, затем ввел некоторые данные в StringEdit (без автодекларации) и смог перечислить данные. - person Alex Kwitny; 08.12.2015
comment
(Я делаю это в классе) Все мои элементы управления пусты, за исключением того, что флажок отображается как Нет. И когда я пытаюсь использовать ту же команду в форме. Значение всплывает. Я не знаю, что не так. - person Mshei; 08.12.2015
comment
Мой тест с формой, а не с классом. Но я думаю, это потому, что вы перебираете статическую форму, а не фактическую рабочую форму. Попробуйте _formRun.form().design() вместо _formRun.design(). - person Alex Kwitny; 08.12.2015
comment
Нет, вы были правы, с самого начала это было потому, что я не объявил, какие значения я получил. text() valueStr() и т. д. Спасибо! - person Mshei; 12.12.2015
comment
Рад, что смог помочь. Пожалуйста, отметьте ответ как принятый, чтобы другие не пытались решить его за вас. - person Alex Kwitny; 15.12.2015