Расчёт полей в процессе импорта/экспорта

Кроме простого копирования данных во внешние файлы или наоборот, программа позволяет выполнять расчёт значений импортируемых/экспортируемых полей. Для этого достаточно вместо имени поля указать знак равенства и выражение на внутреннем языке программы. Причём, если указано так:

=Выражение:Имя поля

то данная строка будет участвовать только при экспорте данных – значение выражения будет попадать во внешний файл в поле с указанным именем. В выражении можно обращаться ко всем полям экспортируемой записи.

Если же указано так:

Имя поля:=Выражение

то такая строка будет участвовать только при импорте данных – значение выражения будет записано в указанное поле таблицы. В выражении можно обращаться ко всем полям записи внешнего файла.

Пример импорта/экспорта расчётных полей

Пусть требуется считать и записать данные из справочника сотрудников во внешнюю базу, в которой фамилия, имя и отчество сотрудника хранятся в разных полях (в СБиС++ это одно поле «ФИО»). Содержимое файла sbis.io для импорта будет следующим:

+Сотрудники:MAN.DBF

ФИО:=FAM+” ”+NAME+” ”+OTCH

То есть три поля внешнего файла «склеиваются» в одно поле справочника сотрудников.

Для экспорта придётся написать чуть больше:

+Сотрудники:MAN.DBF

=Разбить(ФИО,” ”,Ф,И,О); Вернуть(Ф);  :FAM

=Разбить(ФИО,” ”,Ф,И,О); Вернуть(И);  :NAME

=Разбить(ФИО,” ”,Ф,И,О); Вернуть(О);  :OTCH

Тут в каждой строке поле «ФИО» разбивается по пробелам на три части и каждая из частей заносится в отдельное поле внешнего файла.

На самом деле два вышеприведённых фрагмента можно написать вместе:

+Сотрудники:MAN.DBF

ФИО:=FAM+” ”+NAME+” ”+OTCH

=Разбить(ФИО,” ”,Ф,И,О); Вернуть(Ф);  :FAM

=Разбить(ФИО,” ”,Ф,И,О); Вернуть(И);  :NAME

=Разбить(ФИО,” ”,Ф,И,О); Вернуть(О);  :OTCH

В этом случае при импорте данных последние три строки будут игнорироваться, а при экспорте, наоборот, будет игнорироваться первая строка.

Похожие записи

Добавить комментарий