Цитата:
Изначально опубликовано George Nordic
На всякий случай напомню о функции RemanePrimaryKey.
можите сказать что имеется ввиду?
я сделал немного по другому:
на форме Dimensions метод источника Dimensions
PHP код:
public void write()
{
SysDim oldValueSysDim = Dimensions.orig().Num;
;
super();
InventUpdateDimension_ew::run(Dimensions.DimensionCode, oldValueSysDim, Dimensions.Num);
}
метод класса InventUpdateDimension_ew
PHP код:
// w 11.02.2005 Axapta 3.0 CIS SP1
public static void run(DimensionCode _dimCode, SysDim _oldSysDim, SysDim _newSysDim)
{
Dictionary dictionary = new Dictionary();
DictTable dictTable;
DictField dictField;
int i, j;
#define.FieldId_Dimension(132)
void update(TableId _tableId, FieldId _fieldId)
{
Query q = new Query();
QueryBuildDataSource qbds;
QueryRun qr;
Common common;
FieldId fieldId_Dimension = fieldId2ext(_fieldId, _dimCode + 1);
;
qbds = q.addDataSource(_tableId);
qbds.update(true);
qbds.addRange(fieldId_Dimension).value(strfmt('\"%1\"', _oldSysDim));
qr = new QueryRun(q);
while (qr.next())
{
common = qr.getNo(1);
common.(fieldId_Dimension) = _newSysDim;
common.doUpdate();
}
}
;
ttsbegin;
for (i = 1; i <= dictionary.tableCnt(); i++)
{
dictTable = new DictTable(dictionary.tableCnt2Id(i));
if (!dictTable.isTmp() && !dictTable.isSystemTable() && !dictTable.isView() && !dictTable.isMap())
{
for (j = 1; j <= dictTable.fieldCnt(); j++)
{
dictField = new DictField(dictTable.id(), dictTable.fieldCnt2Id(j));
if (!dictField.isSystem() && dictField.typeId() == #FieldId_Dimension)
update(dictTable.id(), dictField.id());
}
}
}
ttscommit;
info(strfmt('Проведена замена аналитики %1 на %2', _oldSysDim, _newSysDim));
}
С уважением,
wb