Если в DAX4 (насколько помню в Ax3.0 было так же), то как-то так:
X++:
private boolean fillInventsTable(SysRecordTemplateDescription _sysTemplateDescription)
{
SysRecordTmpTemplate tmpTemplateTbl;
SysRecordTemplateTable sysTemplate;
container recordValues;
container curRecord;
ItemId itemId;
TableId tableId;
Counter idx;
;
sysTemplate = SysRecordTemplateTable::find(tableNum(InventTable));
if (!sysTemplate)
{
throw error("Нет шаблонов для таблицы номенклатур.");
}
itemId = "" ;
delete_from tmpTemplateTbl;
SysRecordTmpTemplate::insertContainerSimple(tmpTemplateTbl, condel(sysTemplate.Data, 1, 1));
select firstOnly tmpTemplateTbl
where tmpTemplateTbl.Description == _sysTemplateDescription
;
recordValues = tmpTemplateTbl.data;
for (idx = 1; idx <= conLen(recordValues); idx++)
{
[tableId, curRecord] = conPeek(recordValues, idx);
switch (tableId)
{
case tableNum(InventTable) :
inventTable.clear();
this.fillFields(inventTable, curRecord);
inventTable.ItemId = itemId;
inventTable.doInsert();
break;
case tableNum(InventTableModule) :
inventTableModule.clear();
this.fillFields(inventTableModule, curRecord);
inventTableModule.ItemId = itemId;
inventTableModule.doInsert();
break;
case tableNum(InventItemLocation) :
inventItemLocation.clear();
this.fillFields(inventItemLocation, curRecord);
inventItemLocation.ItemId = itemId;
inventItemLocation.doInsert();
break;
}
}
return true;
}
где fillFields:
X++:
private boolean fillFields( Common _common,
container _fileds,
boolean _onlyEditableOnCreateFields = false,
boolean _allowDublicates = true
)
{
SysDictField dictField;
Set excludeValidateField;
container valueSet;
fieldId fieldId;
Counter infologLines;
Counter idx;
boolean doClear;
;
excludeValidateField = new Set(Types::Integer);
infologLines = infolog.line();
for (idx = conLen(_fileds); idx; idx--)
{
valueSet = conpeek(_fileds, idx);
fieldId = conpeek(valueSet, 1);
dictField = new SysDictField(_common.TableId, fieldId);
if (dictField
&& (dictField.allowEditOnCreate() || !_onlyEditableOnCreateFields)
&& (_allowDublicates || !dictField.isUnique()))
{
_common.(fieldId) = conpeek(valueSet, 2);
if (!excludeValidateField.in(fieldId) && !_common.validateField(fieldId))
{
doClear = true;
_common.(fieldId) = nullValue(conpeek(valueSet, 2));
}
}
}
if (doClear)
{
infolog.clear(infologLines);
}
return true;
}
В DAX2009 набор таблиц отличается. Кроме того, могут использоваться другие классы.