Аксапта:Как можно использовать имя таблицы, а не идентификатор таблицы, в качестве параметра выбора в диалоговом окне выбора отчета журнала базы данных?
Вопрос
В настоящее время можно использовать только идентификатор таблицы, что бессмысленно, поскольку это число.Небольшой пример кода действительно был бы замечательным.
Решение
Создайте новый RunBaseReport
класс и не забудьте назвать SysDatabaseLog
отчет в lastValueElementName
способ.
Запросите название таблицы в dialog
способ;используйте TableName
расширенный тип данных для включения поиска.
Object dialog()
{
DialogRunbase dlg = super();
;
dialogTableName = dlg.addFieldValue(typeId(TableName),tableId2Name(tableId));
return dlg;
}
Обновите диапазон идентификаторов таблицы для queryRun.query()
в getFromDialog
метод после вызова super()
.Используйте tableName2Id
функция для преобразования в идентификатор таблицы.
boolean getFromDialog()
{
boolean ret = super();
;
tableId = tableName2Id(dialogTableName.value());
this.queryrun().dataSourceNo(1).findRange(fieldNum(SysDatabaseLog,Table)).value(queryValue(tableId));
return ret;
}
В validate
метод, подтвердите, что имя таблицы является допустимым (идентификатор таблицы не 0, таблица не temp и т.д.).
Наконец, вы меняете пункт меню "Вывод" так, чтобы он указывал на класс, а не на отчет.
Предупреждение:код не был протестирован!