Мне удалось малой кровью запрограммировать "слепое"
обновление имени и адреса клиента/поставщика:
DirParty@action = update
DirPartyPostalAddressView@action = create
\Classes\AxDirPartyTable\parmName
X++:
public DirPartyName parmName(DirPartyName _name = '')
{
DirPartyTable itself;
AxVendTable axVendTable;
if (!prmisDefault(_name))
{
this.setField(fieldNum(DirPartyTable, Name), _name);
// BEGIN
if (_name && parentAxBc && parentAxBc.recordAction() == AxdRecordAction::Update)
{
switch (classIdGet(parentAxBc))
{
case classNum(AxCustTable):
itself = parentAxBc.currentRecord().dirPartyTable_FK();
break;
case classNum(AxVendTable):
axVendTable = parentAxBc;
itself = DirPartyTable::findRec(axVendTable.parmParty());
break;
}
if (itself)
{
this.parmRecId(itself.RecId);
}
}
// END
}
return dirPartyTable.Name;
}
\Classes\AxDirPartyPostalAddressView\parmIsPrimary
X++:
public LogisticsIsPrimaryAddress parmIsPrimary(LogisticsIsPrimaryAddress _isPrimary = NoYes::No)
{
LogisticsPostalAddress itself;
if (!prmisdefault(_isPrimary))
{
this.setField(fieldnum(DirPartyPostalAddressView, IsPrimary), _isPrimary);
// BEGIN
if (_isPrimary && parentAxBc && parentAxBc.parentAxBC() && parentAxBc.parentAxBC().recordAction() == AxdRecordAction::Update)
{
switch (classIdGet(parentAxBc.parentAxBC()))
{
case classNum(AxCustTable):
case classNum(AxVendTable):
itself = parentAxBc.parentAxBC().currentRecord().postalAddress();
break;
}
if (itself)
{
itself = LogisticsPostalAddress::findRecId(itself.RecId, true, itself.ValidFrom, itself.ValidTo);
itself.delete();
}
}
// END
}
return dirPartyPostalAddressView.IsPrimary;
}