16.06.2017, 09:25 | #1 |
Участник
|
добавить readonly датасорс на форму, для фильтрования
Задача крайне простая.
Скажем, в грид с полями из SalesLine добавить поля из кастомного view, созданного из Inventtable и других таблиц. Поля должны быть фильтровабельными. При добавлении/удалении поля не должны добавляться/удаляться. Делается это в AX7 в form.extension, так что для использования доступны только events. Я добавляю датасорс в дизайнере, а связь на уровне инита главной таблицы: X++: [FormDataSourceEventHandler(formDataSourceStr(SalesTable, SalesLine), FormDataSourceEventType::Initialized)] public static void SalesLine_OnInitialized(FormDataSource sender, FormDataSourceEventArgs e) { FormDataSource lines_ds = sender; QueryBuildDataSource qbdsLines = lines_ds.query().dataSourceName('SalesLine'); //qbdsLines.clearLinks(); QueryBuildDataSource qbdsProduct = qbdsLines.addDatasource(tableNum(AttributesView), "AttributesView_code"); QbdsProduct.addLink(fieldNum(SalesLine, itemId),fieldNum(AttributesView, itemId)); QbdsProduct.joinMode(JoinMode::InnerJoin); } X++: //VIEW public class AttributesView extends common { public void write() { //super(); } public boolean validateWrite() { boolean ret = true; //ret = super(); return ret; } Но при попытке добавить из формы запись в грид, получаю сообщения X++: Field 'Product' must be filled in. Field 'Item number' must be filled in. X++: [FormDataFieldEventHandler(formDataFieldStr(SalesTable, SalesLine, ItemId), FormDataFieldEventType::Modified)] public static void ItemId_OnModified(FormDataObject sender, FormDataFieldEventArgs e) { FormDataSource fds = sender.datasource(); FormRun formRun = fds.formRun(); SalesLine salesLine = FormRun.dataSource(formdatasourcestr(Salestable, SalesLine)).cursor() as salesLine; AttributesView view = FormRun.dataSource(formdatasourcestr(Salestable, AttributesView)).cursor() as AttributesView; view.ItemId = SalesLine.ItemId; view.Product = 1; } В общем, задача исключительно простая, но сделать ее на экстеншене формы вообще не получается. Проблема сейчас, в общем-то, в сообщениях о том, что поля вьюхи, которые мандатори в таблицах, из которых она состоит, пустые при добавлении новой записи в родительский датасорс. |
|
|
За это сообщение автора поблагодарили: mazzy (2), Ace of Database (2). |