Да, есть такая тема - значения комбобоксов программно "как пользователь" менять. Разглагольствовать сейчас не буду - можно будет позже отдельную тему организовать. Сейчас только практика.
У меня есть джоб для служебного (админского) пользования. Пока не до конца оформившийся идеологически, но уже вполне сносно работающий. Предназначен для создания строк "как пользователь" в журнале главной книги (форма 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));