Кроме простого копирования данных во внешние файлы или наоборот, программа позволяет выполнять расчёт значений импортируемых/экспортируемых полей. Для этого достаточно вместо имени поля указать знак равенства и выражение на внутреннем языке программы. Причём, если указано так:
=Выражение:Имя поля
то данная строка будет участвовать только при экспорте данных – значение выражения будет попадать во внешний файл в поле с указанным именем. В выражении можно обращаться ко всем полям экспортируемой записи.
Если же указано так:
Имя поля:=Выражение
то такая строка будет участвовать только при импорте данных – значение выражения будет записано в указанное поле таблицы. В выражении можно обращаться ко всем полям записи внешнего файла.
Пример импорта/экспорта расчётных полей
Пусть требуется считать и записать данные из справочника сотрудников во внешнюю базу, в которой фамилия, имя и отчество сотрудника хранятся в разных полях (в СБиС++ это одно поле «ФИО»). Содержимое файла sbis.io для импорта будет следующим:
+Сотрудники:MAN.DBF
ФИО:=FAM+” ”+NAME+” ”+OTCH
То есть три поля внешнего файла «склеиваются» в одно поле справочника сотрудников.
Для экспорта придётся написать чуть больше:
+Сотрудники:MAN.DBF
=Разбить(ФИО,” ”,Ф,И,О); Вернуть(Ф); :FAM
=Разбить(ФИО,” ”,Ф,И,О); Вернуть(И); :NAME
=Разбить(ФИО,” ”,Ф,И,О); Вернуть(О); :OTCH
Тут в каждой строке поле «ФИО» разбивается по пробелам на три части и каждая из частей заносится в отдельное поле внешнего файла.
На самом деле два вышеприведённых фрагмента можно написать вместе:
+Сотрудники:MAN.DBF
ФИО:=FAM+” ”+NAME+” ”+OTCH
=Разбить(ФИО,” ”,Ф,И,О); Вернуть(Ф); :FAM
=Разбить(ФИО,” ”,Ф,И,О); Вернуть(И); :NAME
=Разбить(ФИО,” ”,Ф,И,О); Вернуть(О); :OTCH
В этом случае при импорте данных последние три строки будут игнорироваться, а при экспорте, наоборот, будет игнорироваться первая строка.







