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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.01.2008, 14:51   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Да, есть такая тема - значения комбобоксов программно "как пользователь" менять. Разглагольствовать сейчас не буду - можно будет позже отдельную тему организовать. Сейчас только практика.

У меня есть джоб для служебного (админского) пользования. Пока не до конца оформившийся идеологически, но уже вполне сносно работающий. Предназначен для создания строк "как пользователь" в журнале главной книги (форма LedgerJournalTransDaily).

Покажу ввод значения в комбобокс "Тип счета" в гриде. Алгоритм примерно следующий (на всякий случай - у меня Axapta 3.0 SP4, 2-хзвенка):

1. Берем курсор от датасорса - получаем прямой доступ к лежащей в основании таблице.
2. Меняем значение в поле таблицы, соответствующем полю нашего датасорса (контрола).
3. На контроле (поле) принудительно вызываем всю последовательность методов (по возможности) - от контрола до поля таблицы.

Код примерно такой:
X++:
FormRun                     formRun;
FormComboBoxControl         fcComboBox;
LedgerJournalTrans          LedgerJournalTrans;
FormDataSource              formDataSource;
FormDataObject              datasourceField;

    ...................................................

    formDataSource = formRun.dataSource('LedgerJournalTrans');
    LedgerJournalTrans = formDataSource.cursor();

    fcComboBox = formRun.design().controlName('LedgerJournalTrans_AccountType');
    datasourceField = formDataSource.object(fieldNum(LedgerJournalTrans, AccountType));

    // задаем новое значение комбобокса
    LedgerJournalTrans.AccountType = LedgerJournalACType::Bank; 

    // Следующую последовательность вызовов можно в принципе сократить,
    // если есть время разобраться, что реально надо, а что нет.
    // Довольно часто (в простых случаях, когда ничего не перекрыто) 
    // можно вообще ничего не вызывать.
    fcComboBox.leave();
    fcComboBox.validate();
    fcComboBox.modified();

    datasourceField.validate();
    LedgerJournalTrans.validateField(fieldNum(LedgerJournalTrans, AccountType));

    datasourceField.modified();
    LedgerJournalTrans.modifiedField(fieldNum(LedgerJournalTrans, AccountType));
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
теряется значение переменной laxel DAX: Программирование 3 05.02.2009 10:07
Не берется значение контрола Sada DAX: Программирование 11 21.06.2006 10:24
Как при вводе новой записи установить значение поля по умолчанию Zman DAX: Программирование 3 17.01.2005 10:23
проблема с настройкой штрихового кода Nic DAX: Функционал 4 27.12.2004 09:04
Использование штрихового кода (barcode) в Аксапта Pavlo AKA Panok DAX: Функционал 9 17.10.2003 15:13

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

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

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