помимо имени поля тебе надо в этом случае передавать ссылку на таблицу в которую хочешь записать. В общем решение может быть следующим:
//------------определение ф-ции---------------------------------------------------------------
WriteFileld(VAR RecRef : RecordRef, FieldNo : Integer; Value : Text[30])
{
FldRef := RecRef.FIELD(FieldNo);
FldRef.VALUE := Value; //локальная переменная типа FieldRef
RecRef.MODIFY; //ссылка на таблицу куда пишем
//либо для вставки новой записи:
// FldRef := RecRef.FIELD(FieldNo);
// RecRef.INIT;
// FldRef.VALUE := Value;
// RecRef.INSERT;
}
//---------------пример вызова-------------------------------------------------------------------
DestTable.FIND('-');
RecRef.GETTABLE(DestTable); //RecRef - переменная типа RecordRef
WriteFileld(RecRef, DestTable.FIELDNO(SurName), VarText2);
//номер поля также можно узнать из таблицы Field
//в данном случае WriteFileld запишет значение в уже существующую запись(первую)
//--------------------------------------------------------------------------------------------------------
НО естественно перед присваиванием полю значения необходимо знать тип этого поля -то есть перед FldRef.VALUE := Value необходимо проанализировать тип поля. Это можно сделать заюзав таблицу Field по ключу таблицы куда ты пишешь значение
пример:
Field.TableNo := TableNo;
Field."No," := FieldNo;
//либо Field.FieldName := FieldName;
IF Field.FIND('-') THEN
CASE Field.Type OF
Field.Type::Code :
BEGIN
........//........в зависимости от типа делать преобразование
END;
-----//-------
END
вот в общем и весь подход.
|