Глава 1. Импорт и экспорт данных

 TOC \o "2-3" \h \z \u Формат внешних данных. PAGEREF _Toc219191329 \h 1 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300320039000000

Настройка механизма обмена. PAGEREF _Toc219191330 \h 2 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300330030000000

Описание формата. PAGEREF _Toc219191331 \h 2 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300330031000000

Выбор полей формата. PAGEREF _Toc219191332 \h 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300330032000000

Экспорт/импорт связанных таблиц. PAGEREF _Toc219191333 \h 5 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300330033000000

Выполнение обмена данными. PAGEREF _Toc219191334 \h 6 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300330034000000

Экспорт данных. PAGEREF _Toc219191335 \h 6 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300330035000000

Импорт данных. PAGEREF _Toc219191336 \h 8 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300330036000000

Расчёт полей в процессе обмена. PAGEREF _Toc219191337 \h 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300330037000000

Фильтрация данных при обмене. PAGEREF _Toc219191338 \h 12 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300330038000000

Экспорт/импорт с сохранением иерархии. PAGEREF _Toc219191339 \h 13 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300330039000000

Выполнение обмена данными средствами языка СБиC++. PAGEREF _Toc219191340 \h 13 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300340030000000

Обмен данными в xml-формате. PAGEREF _Toc219191341 \h 13 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300340031000000

Описание XML-формата. PAGEREF _Toc219191342 \h 13 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300340032000000

Описание структуры XML-файла. PAGEREF _Toc219191343 \h 15 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300340033000000

Особенности обмена документами. PAGEREF _Toc219191344 \h 20 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300340034000000

Рекомендации по импорту из других программ. PAGEREF _Toc219191345 \h 22 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200310039003100390031003300340035000000

 

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

Формат внешних данных

Внешние файлы могут быть следующих форматов:

1.    Стандартные dbf-файлы (файлы с расширением «.dbf»). Это, пожалуй, наиболее распространённый формат файлов данных. Используется такими СУБД, как FoxPro, DBase, Clipper и так далее. Многие программы используют именно этот формат файлов, а большинство остальных, по крайне мере, его «понимают». Поэтому, этот формат удобно использовать для обмена данными между СБиС++ и другими программами.

2.    Файлы внутреннего формата (расширение файлов – «.tbl»). В этом формате хранится файл – база данных программы СБиС++. По сравнению с dbf-файлами у tbl-файлов есть несколько преимуществ:

§         они более компактны, допускают использовать русские имена полей большой длины;

§         позволяют хранить текст длиной больше 255 символов (текст правил операций, например) и так далее. Поэтому для переноса данных между двумя базами комплекса СБиС++ рекомендуется использовать tbl-формат.

3.    Файлы с расширением «.csv». Это текстовый формат с разделителями (значения полей разделяются точкой, запятой и т.п.), который используется программами Access и Excel.

Обмен данными между версиями программы СБиС++ 1.9 (и ниже)  и 2.0 (и выше) возможен только в формате dbf.

Настройка механизма обмена

Описание формата

Настройка механизма экспорта/импорта данных осуществляется через файлы ресурсов. В ресурсе для каждой экспортируемой или импортируемой таблицы создаётся запись с типом «Формат импорта/экспорта». При этом появляется окно «Описание формата экспорта»:

Рис. 1-1 - Окно описания формата экспорта/импорта

Здесь необходимо заполнить следующие поля:

§         Выборка/таблица - название экспортируемой/ импортируемой выборки/таблицы, выбираемой из соответствующего ресурса (файла с расширением «.rs»). Например, «Сотрудники».

Чтобы точно знать, какое название выборки/таблицы указывать, нужно открыть окно с экспортируемой/ импортируемой таблицей, нажать <Ctrl+F12> (переход в режим редактирования) и нажать на нужной таблице <F3> (или <Ctrl+Enter>). Должно появиться окно с параметрами, в котором в поле «Имя выборки» и указано необходимое название.

§         Внешний файл -  имя внешнего файла, например, «io_man». Если оно не указано, то берётся текущее название выборки/таблицы в базе данных.

§         Формат – формат внешнего файла. По умолчанию, в конфигурации создаются tbl-файлы.

§         Кодировка – кодировка внешнего файла. Для обмена данными с программами, несовместимыми с кодировкой Windows (например, СБиС++ версии 1.9), необходимо указать «DOS».

§         Назначение формата – назначение: экспорт, импорт или и то, и другое.

§         Название конфигурации экспорта – при наличии нескольких описаний экспорта/импорта текущей выборки в это поле удобно заносить поясняющий текст. При экспорте/импорте (после нажатия <Ctrl+U>/<Ctrl+I>) будет показан список всех конфигураций для данной таблицы/выборки. Если это поле не заполнено, то в списке имя конфигурации будет указано как «по умолчанию». После выбора конфигурации для всех связанных таблиц будет использован формат именно с таким названием конфигурации.

§         Ключевой индекс – указывается название ключевого индекса выборки/таблицы. Во многих таблицах определён один или несколько ключевых индексов. Каждый индекс состоит из набора полей и служит для идентификации записи. Если совокупность значений полей, входящих в индекс, различна для каждой записи таблицы, то индекс называется уникальным, например, индекс «ТабНомер» в таблице сотрудников. Все индексы можно найти в файле описания формата базовой таблицы (файлы с расширением «.dic»). Имя базовой таблицы для выборки можно посмотреть в поле «Таблица» в описании соответствующей выборки в файле ресурсов. В большинстве случаев название ключевого индекса совпадает с именем первого поля, входящего в индекс.

Дополнительно можно установить параметры:

§         Не создавать новую запись если не нашли по ключевым словам – при импорте будут обновляться только уже существующие (совпадающие по ключевым полям) записи таблицы;

§         Обновлять существующую запись, даже если нашли аналогичную – обновлять все совпадающие записи при импорте;

§         Импортировать связанные выборки для найденной записи – обновлять данные связанных выборок;

§         Разворачивать выборку при экспорте – соответствует выполнению команды «Развернуть с группами» (по <Ctrl+B>) в экспортируемой таблице. Если не будет выбран текущий пункт, то из корня выборки будут выбраны только записи первого уровня.

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

Выбор полей формата

Для того, чтобы правильно описать формат импорта/экспорта той или иной таблицы, нужно представлять ее структуру. Формально структуры всех таблиц описаны в файлах с расширением «.dic». Но нагляднее всего эта структура просматривается в диалоге редактирования записи таблицы. Если на данном диалоге присутствуют связанные таблицы/выборки или записи, то необходимо произвести их отдельный экспорт/импорт, описав соответствующий формат. Точные названия полей доступны в окне редактирования диалога (по <Ctrl+F12>).

При создании описания нового формата импорта/экспорта и выборе соответствующей таблицы на вкладку «Список полей» автоматически переносятся все поля выборки:

Рис. 1-2 - Соответствия полей

 

Данный список можно (если нужно) подкорректировать, добавив недостающие или удалив лишние поля. Здесь же можно указать соответствие полей в выборке и во внешнем файле, указать формат данных и, если необходимо,  их размер.

Поскольку не все программы,  читающие dbf-файлы, корректно работают с русскими именами полей, рекомендуем при экспорте в dbf-формат указывать в файле ресурсов имена полей латинскими буквами, в верхнем регистре, длиной не более десяти символов, без пробелов.

Экспорт/импорт связанных таблиц

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

Для этого и предусмотрена вкладка «Связи и выборки», где и добавляются нужные связи.

Рис. 1-3 - Связанные записи

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

Выполнение обмена данными

Экспорт данных

Для экспорта данных откройте окно с экспортируемой таблицей. Далее клавишей <Пробел> отметьте экспортируемые записи и нажмите комбинацию <Ctrl+U> или выберите соответствующий пункт контекстного меню. Можно не отмечать записи, тогда будут экспортированы все записи текущего уровня. Для экспорта всех записей таблицы сначала необходимо развернуть список записей (по <Ctrl+B>).

После нажатия <Ctrl+U> появится окно выбора конфигурации экспорта.

Рис. 1-4 - Выбор каталога для экспорта данных

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

§         Куда экспортировать – необходимо указать каталог, в который будет экспортирована таблица. Если каталога не существует, его можно здесь же создать, воспользовавшись командой «Создать каталог».

§         По электронной почте – файл с экспортированными данными можно отправить по электронной почте. При этом существует возможность так же посылать описание формата экспорта, сжимать отправляемые файлы, сразу отсылать результаты экспорта.

§         Экспортировать иерархию – необходимо определить: экспортировать иерархию или нет. Экспорт иерархии возможен только в том случае, если в описании формата экспорта присутствует поле типа иерархия. В противном случае, иерархия не будет экспортирована, даже если указать «Экспортировать всю иерархию».

§         Если обнаружен существующий файл – определяется действие, в случае обнаружения существующего файла. Возможны следующие варианты: удалить файл (файл полностью удаляется и создаётся новый),  очистить файл (записи, находящиеся в файле, удаляются, но сам файл не удаляется; таким образом, формат внешнего файла не изменится,  что иногда может быть удобно),  добавить в файл (экспортируемые записи будут добавляться к записям, уже существующим во внешнем файле), прекратить экспорт (процесс экспорта будет прерван),  спросить пользователя (будет выдан запрос на продолжение действий).

После завершения процесса экспорта в окне будет выведена статистика (название экспортируемой выборки, имя файла, количество записей) или сообщение о произошедших ошибках.

Рис. 1-5 – Завершение экспорта договоров

Импорт данных

По аналогии с экспортом, для импорта также необходимо сначала подготовить данные, а затем запустить механизм  по <Ctrl+I> или выбрать соответствующий пункт контекстного меню. Если имеется несколько форматов импорта, то появится окно, в котором необходимо выбрать нужный формат импорта.

Рис. 1-6 - Выбор каталога для импорта данных

Далее указываем:

§         Откуда импортировать – каталог, в котором находится внешний файл с данными.

§         По электронной почте – в случае передачи файлов импорта по электронной почте.

§         При импорте иерархии - необходимо определить, как импортировать иерархию выборки: начиная с корня, в текущую папку или вообще её игнорировать. По умолчанию предлагается импортировать её начиная с корня.

Если есть необходимый файл для импорта, то программа покажет список записей, находящихся во внешнем файле. Отметьте клавишей <Пробел> нужные записи, или, если это одна запись, достаточно просто переместить на неё курсор. По умолчанию, предлагается импортировать все записи.

На очередном этапе импорта открывается диалоговое окно записи, где можно выполнить необходимые корректировки. После этого вы нажимаете:

§       <Enter> или кнопку «Сохранить» – для сохранения выполненных изменений и перехода к следующей импортируемой записи.

§       <Esc> или кнопка «Отменить» – изменения не сохраняться, и будет предложено прервать импорт записей.

Для ускорения процесса импорта предлагаются следующие возможности:

§         <PgDn> – автоматический импорт всех записей.

§         <Ctrl+Alt+PgDn> – автоматический импорт без показа диалога каждой записи.

Расчёт полей в процессе обмена

При экспорте/импорте данных существует возможность выполнения некоторых действий со значениями полей. Эти действия описываются на вкладках «Выполнять при экспорте» или «Выполнять при импорте» в описании поля выборки в списке полей описания формата экспорта/импорта (рис. 1-2). В них записывается выражение на внутреннем языке программы СБиС++, а значение этого выражения будет попадать в указанное поле. При экспорте результат будет записан в «поле файла», а при импорте в «поле выборки». В выражении можно обращаться ко всем полям экспортируемой/импортируемой записи.

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

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

Для экспорта фамилии нужно заполнить описание нового поля следующим образом:

Рис. 1-7 - Пример расчёта полей при экспорте

Берем значение поля «ФИО» и разбиваем его на части, каждая из которых помещается в соответствующую переменную. Для того, чтобы результатом была переменная со значением фамилии, применяется функция «Вернуть». Аналогичные поля должны быть созданы для экспорта значения имени и отчества.

Для импорта данных в одно поле «ФИО» нужно склеить значения трех полей внешнего файла. Его описание выглядит следующим образом:

Рис. 1-8 - Пример расчёта полей при импорте

Фильтрация данных при обмене

При необходимости в программе существует возможность экспортировать/ импортировать определенные записи выборки по заданному условию. Условное выражение на внутреннем языке СБиС++ может быть помещено на вкладку «Методы» в описании формата импорта/экспорта в файле ресурсов (рис. 1-1). В общем случае выражение для фильтрации выглядит следующим образом:

Если(Условие) Вернуть да

Иначе Вернуть нет;

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

Например, чтобы экспортировать расходные накладные только с определённой темой, например «РОЗ», нужно написать:

Если(Внешняя.Тема == «РОЗ») Вернуть да

Иначе Вернуть нет;

Хочется отметить, что при написании выражений на внутреннем языке доступны два предопределённых объекта: «Внешняя» и «Внутренняя». Используя эти объекты можно обращаться к любой текущей записи внешней или внутренней таблицы.

В языке СБиС++ есть ряд функций, которые могут быть полезны при написании выражения для фильтрации при импорте/экспорте. Такие, как «ЗаписьНайдена», «ОсновнаяТаблица», «ВнешнееПоле», «ЕстьВнешнееПоле», «ФорматФайла», «КодировкаФайла» и т.д. Подробное описание этих функций и примеры их использования можно найти в «Справочнике по языку СБиС++».

Экспорт/импорт с сохранением иерархии

Большинство таблиц в СБиС++ имеют иерархическую структуру. Чтобы при экспорте/импорте этих таблиц не терялась информация о том, какая запись, в каком разделе находится, достаточно в файле ресурсов в описании формата экспорта/импорта таблицы добавить поля «Раздел».

Экспорт/импорт иерархии возможен только для выборок с уникальными ключами, иначе при каждом импорте  группы будут создаваться заново. Экспорт/импорт иерархии также не возможен для реестров документов.

Выполнение обмена данными средствами языка СБиC++

Экспорт/импорт данных может производиться средствами языка СБиС++ с помощью следующих функций: «ЭкспортироватьЗапись», «ЭкспортироватьВыборку», «ИмпортироватьФайл». Подробное описание этих функций и примеры их использования можно найти в «Справочнике по языку СБиС++».

Обмен данными в xml-формате

В СБиС++ появилась возможность обмена данными в xml-формате. Главная особенность обмена в этом формате это то, что все входные (или выходные) данные находятся (или будут находиться) в одном xml-файле. Как и при обмене в другом формате необходимо настроить обмен в формате xml.

Описание XML-формата

В файле ресурсов  создаем новый формат экспорта/ импорта и выбираем формат «XML»:

В диалоге описания нового формата обмена данными появится закладка «XML-файл»:

§         Вид XML-файла – файл с выходными или входными данными может быть двух видов: «Стандартный СБиС» и «1С». В зависимости от выбора, файл будет содержать конкретный набор тегов XML. Подробнее расскажем при описании каждого из указанных видов.

§         Язык тегов xml – при выборе файла 1С язык тегов нужно выбрать русский.

§         Ключевые поля экспорта – список первичных ключей, которые используются только для 1С. По этим ключам идет разбор информации в программе 1С.

§         Теги xml – здесь можно переопределить стандартные теги xml. Список тегов доступен по кнопке :

Список будет разным в зависимости от выбранного языка тегов xml. Описание тегов приводится в описании xml-файла.

Описание структуры XML-файла

В зависимости от вида структура xml-файла будет различной.

Стандартный СБиС

Общие правила

В начале файла идет строчка «»

1.       Кодировка файла – windows-1251.

2.       Корневой тег <s:sbis> содержит предопределенные атрибуты для проверки валидности XML:

§         xmlns:s="urn:sbs"

§         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

§         xsi:schemaLocation="urn:sbs sbis-exchange.xsd"

3.       Атрибуты version, GUID-source и GUID-packet описывают соответственно версию формата пакета, постоянный GUID базы-источника и уникальный GUID конкретного пакета.

Правила вывода записей

1.       Выводятся все отобранные и связанные с ними записи с учетом настроек экспорта (по иерархии и установленным связям).

2.       Каждой выгружаемой записи таблицы (выборки) соответствует 1 объект <rec>, содержащий атрибуты table – имя таблицы, id – адрес записи в таблице.

3.       Порядок вывода записей не определяется.

Правила вывода полей записи

1.       Выгружаются только непустые (в соответствии с типом) поля.

2.       Для каждого поля выводится объект, соответствующий типу поля, содержащий атрибут fld – имя поля.

Тип объекта

Обозначение

Пример

Строка, текст

val

<val fld="Название">Колокольчикval>
<
val fld="Наименование">ООО &quot;Рога &amp; копыта&quot;val>
<
val fld="Описание">Это поле содержит многострочный текст для описания об&apos;екта.
К нему не должны применяться преобразования пробельных символов, включая \
r и \n.val>

Перечисляемое

val

<val fld="ТипДоговора">Действующийval>

Целое число, вещественное число, деньги

val

Цвет">257
Коэффициент
">-0.5
Цена
">123.45

Дата

val

Дата">2008-11-30

Время

val

22:15:47

Дата и время

val

ДатаВремя">2008-11-30T22:15:47

Флаги

 

set

Пометки">
 
С плюсом
 
С минусом

Признаки
">
 
Закрыт

Двоичные данные

bin

Параметры">
05000000FFFFFFFF020002000000

Большие двоичные данные (BLOB)

b64

Сертификат">
wfq09n0823r2KJH097EJFjj2r9j9r19j

Поле иерархии

int

Раздел" id="Корень" hier="Лист"/>
Раздел
" id="Нет" hier="Узел"/>
Раздел
" id="132435" hier="Скрытый узел"/>

Поле связи

ext

Лицо_" table="Нет" id="Нет"/>
НашаОрганизация
" table="Наши организации" id="0"/>
Документ
_" table="Складские документы" id="3254296"/>

 

3.       Для полей, имеющих текстовое содержимое, осуществляется набор замен:

&

&

'

"

<

>

Правила вывода полей записи в зависимости от типа

Пример

- <s:sbis xmlns:s="urn:sbs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:sbs sbis-exchange.xsd" version="0.0.0.1/WI" dateTime="2009-01-08T13:26:46" GUID-packet="00FF07F80EF115EA00FF07F80EF115EA">
- <
rec table="Сотрудники" id="1">
   <
val fld="ВидДокумента">Паспорт гражданина РФ val>
   <
ext fld="ЛицоСотрудники" table="Лица" id="Нет"/>
   <
set fld="Признаки" />
   <
val fld="Профсоюз">Нетval>
   <
int fld="Раздел" id="Корень" hier="Узел" />
   46
   Квеста ООО
  
-
   Паспорт гражданина РФ
   1959-08-20T00:00:00
   2002-12-31T00:00:00
   
   Женщина
   2007-01-01T00:00:00
   Нет
   
   49
   РОССИЯ
   РОССИЯ
   ОВД
   345345
   34 45
   РОССИЯ
   РОССИЯ
   324523
   Зимина Мария Сергеевна
  

 

Общее описание

В начале файла идет строчка «»

Далее используются теги:

Собственно внутри этого тега описывается все описание импортируемых данных.

Параметрами являются:

§         ВерсияФормата – версия формата файла. Пока используется «1.0»

§         ДатаВыгрузки – указывается дата выгрузки файла. В формате «01.01.2007»

§         Комментарий – необязательный параметр. Дополнительная информация.

Тег используется для полного описания информации об объекте. Т.е. все ссылки на другие объекты и все необходимые поля.

Параметрами являются:

§         Нпп – Номе объекта в файле импорта, должен быть уникальный. По нему объекты ссылаются друг на друга.

§         Тип – Тип объекта, т.е. описание к какой законченной сущности относиться объект. Например «СправочникСсылка.Организации». Первая часть говорит, что это ссылка и в этом месте обязательна, а вторая говорит к какой сущности относится.

У данного тега обязательно должен быть первым подтегом описан тег ,  в котором указана информация как на данный объект ссылаться.

Тег используется для указания связи на другие объекты. В теге должны быть перечислены параметры:

§         Нпп – Номер объекта, на который хотим сослать объект в данном xml файле.

Далее должны идти дополнительные параметры ссылки. Если тег указывается в начале объекта, то он должен содержать не менее одного тега в котором указывается уникальность для данного объекта в базе данных. А если он указан в любом другом объекте, то должен содержать все теги указанные в теге в начале того объекта, на который хочется сослаться.

Основной тег в котором указывается все параметры объекта. Имеет параметры:

§         Имя – имя параметра.

§         Тип – Тип параметра.

Значение указывается с помощью дополнительного тега , или тега .

Между тегом открытия и закрытия указывается значение в виде строки. Тег используется только внутри тега .

Тег используется только внутри тега и обозначает, что значения нет.

Примеры

xml version="1.0" encoding="Windows-1251"?>
-<ФайлОбмена ВерсияФормата="1.0" ДатаВыгрузки="2009-01-06T11:47:03" Комментарий="">
+ <Объект НомОб="1" Тип="Лица">;# НомОб переопределенный тег Нпп;
+ <Объект НомОб="2" Тип="Сотрудники">
+ <Объект НомОб="3" Тип="Лица">
- <Объект НомОб="4" Тип="Сотрудники">
 - <Ссылка НомОб="4">
  - <Свойство Имя="ФИО" Тип="Строка">;# ФИО ключевое поле, определенное в описании формата экспорта/импорта;
     Зимина Мария Сергеевна
    
 
- <Свойство Имя="Страна" Тип="Строка">;# ФИО ключевое поле, определенное в описании формата экспорта/импорта;
     РОССИЯ
    
   

  - <Свойство Имя="ВидДокумента" Тип="Строка">
     Паспорт гражданина РФ
    
 
- <Свойство Имя="ДатаРождения" Тип="Дата">
     1959-08-20T00:00:00
    
...

 
 

Особенности обмена документами

Экспорт/импорт документов с наименованиями

При выполнении обмена документами, содержащими наименования, (например, счетами, накладными и т.д.) создаются описания формата для экспорта/импорта двух выборок – один для таблицы документов, другой для связанной таблицы наименований.

Узнать имя выборки наименований можно по <Ctrl+F12> в диалоге редактирования записи документа.

Например, в случае приходных  накладных связанная выборка наименований имеет имя «Приход». Т.е. для импорта/экспорта реестра приходных накладных с наименованиями, нужно создать два описания формата экспорта/импорта, у которых в поле «Выборка/Таблица» указать соответственно «Приходные накладные» и «Приход». На вкладке «Связи и выборки» для экспорта/импорта таблицы «Приходные накладные» в поле «Список экспортируемых выборок» нужно указать выборку «Приход». А в описании формата для выборки «Приход» в перечне экспортируемых полей необходимо добавить поле «ДокументПриходы». Затем на вкладке «Методы» описываете условие отбора данных.

Можно переносить отдельно и сами наименования документа. Для этого достаточно открыть диалог редактирования документа, перейти в таблицу наименований и экспортировать/импортировать записи точно так же, как и любые другие таблицы.

Экспорт/импорт полей связи

Для экспорта/импорта записей по связям используется описание формата «Лица». В системе имеется описание формата импорта/экспорта для записей лиц, которое находится в файле СБиС.rs «Форматы экспорта/импорта / Справочники». При экспорте записи этих полей будут помещены в отдельный файл.

При импорте документов, запись лица ищется в конечной базе данных по ключевому индексу, и только если эта запись не найдена, она добавляется в соответствующий справочник.

Восстановление связей документов

Для экспорта и последующего импорта связей документов создаётся два дополнительных файла, их описание в файле ресурсов определяется по именам «ДокОснование» (документы-основания) и «ДокСледствие» (документы-следствия). При импорте связей документы в базе данных ищутся по ключевому индексу «Номер», то есть по следующим полям – «Тип документа», «Дата», «Номер», «Тема».

Перенос документов одного типа в другой тип

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

Рекомендации по импорту из других программ

При импорте данных в комплекс СБиС++ из других программ советуем воспользоваться нижеприведенными рекомендациями:

Учитесь на образцах

Перед тем как подготовить файл для передачи данных в СБиС++, создайте в программе несколько пробных записей в тех реестрах или справочниках, которые предполагается переносить. Экспортируйте эти записи. Внимательно изучите состав и структуру полученных эталонных файлов.

Обратите внимание на связи

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

Например, любая запись  таблицы «Организации» связана с записями таблицы «Расчетные счета» по полю «ЛицоРСчета». В свою очередь записи таблицы «Расчетные счета» связаны с записями таблицы «Банки» по полю «БанкРСчета». Поэтому при импорте организаций все связи будут сохранены.

В отличие от программ типа Foxpro, комплекс СБиС++ использует не реляционную связь, а связь по номеру записи в файле. Учтите, что служебные поля должны обязательно присутствовать в файлах, даже если во всех записях его содержимое придется сделать равным –1 (то есть даже, если нет связи).

Учтите, что в dbf-файлах нумерация записей ведётся не с 1, как в Foxpro, а с 0 (в терминологии FoxPro используется значение «RECNO()–1»). Если связи нет, то в таких полях записывается значение «–1».

По умолчанию, имена таких служебных полей совпадают с соответствующими именами полей связи. Чтобы переопределить их имена, нужно в файле ресурсов в описании формата экспорта/импорта указать соответствие для полей связи.

Особенности dbf-формата

Обратите внимание, что программа СБиС++ поддерживает импорт только формата DBF DBase III.

Как уже говорилось, при работе с dbf-форматом могут возникать проблемы с русскими именами полей. Поэтому лучше не использовать русские имена полей, и в файле ресурсов указать соответствующие английские имена.

Типы полей должны совпадать

При создании файлов обращайте внимание на типы полей – строка, число или дата. Они должны совпадать с типами аналогичных полей в эталонных файлах.