У формы один датасорс и 2 закладки.
На обоих закладках используется один и тот же датасорс, фильтрую его в tabChanged подставляя значение в qbrange и вызывая executeQuery:
X++:
if (_ToTab == 2)
{
qbrGroupId.value(sysQuery::valueEmptyString());
MyTable_ds.executeQuery();
}
if (_ToTab == 1)
{
qbrGroupId.value(sysQuery::valueNotEmptyString());
MyTable_ds.executeQuery();
}
Проблема возникает при создании записи на закладке №2 - почему-то автоматически перемещаюсь на закладку №1.
В отладчике такая картина:
(C) \Forms\MyForm\Designs\Design\[Group:Group]\[Tab:Tab]\Methods\TabChanged - line 3
(C) \Classes\FormStringControl\enter
(C) \Classes\FormRun\selectControl
(C) \Classes\FormDataSource\create
(C) \Forms\MyForm\Data Sources\MyTable\Methods\create - line 7
(C) \Classes\FormRun\task
(C) \Classes\SysSetupFormRun\task - line 20
Перекрыл метод create() на датасорсе, чтобы посмотреть номера закладок:
X++:
public void create(boolean _append = false)
{
;
info(Tab.tab());
super(_append);
info(Tab.tab());
}
При создании записи на закладке №2 результат инфолога: 2, 1 - т.е. перепрыгнул сам.
Понимаю что можно сдублировать датасорс для закладки №2 и не париться, но ведь мы не ищем лёгких путей =)