Оглавление
Импорт данных -добавление данных, вставка данных из внешних источников в текущий файл/документ/базу данных. Часто сопровождается конвертацией (переводом) данных из одного формата в другой (материал из Википедии).
Теоретически в Дебет можно закачать всё.… Но с особыми типами источников придется повозиться. Система импорта Дебет Плюс может распознавать следующие форматы: XML, DBF, Excel и текстовый формат (TXT). Файлы других форматов можно сначала конвертировать в любой из вышеперечисленных. Для простоты все возможные источники можно разделить на два вида “XML” и “не XML”. В зависимости от вида источника отличаются особенности настройки и запуска импорта. С первым видом проблем быть не должно, так как настройки хранятся в самом источнике и для импорта достаточно выбрать существующий xml-файл после запуска. Во втором случае для импорта необходим xml-файл с настройками, где хранятся описания импортируемых данных. Для разных файлов одного формата можно использовать существующий файл с настройками либо создать новый (см. раздел “Создание_файла-настройки”).
В качестве приемника могут выступать:
таблицы;
прайс-листы;
справочники аналитики;
справочник номенклатуры;
документы.
Для начала нужно запустить Дебет и перейти в подсистему «Администрирование». Чтобы переключить систему нужно в окне Дебета найти окно с панелью «Системы» и кляпнуть левой кнопкой мыши наведя курсор на пункт “Администрирование” (рис.1). Если нельзя найти окно с панелью “Системы” значит оно закрыто, а открыть его можно через главное меню “Сервис/Показать окно подсистем”. Если и после этого окна не видно, значит оно свернуто, и нужно искать синюю кнопку с названием “Debet Plus” на панели инструментов. После переключения системы в шапке главного окна должно быть написано “Дебет Плюс - Администрирование” как показано на рис.1. Далее в главном меню «Сервис» ищем пункт «Импорт БД». Если такого пункта меню нет, значит Дебет не переведен в систему Администрирование начинаем все сначала.
Важное замечание: с помощью импорта можно удалить или очистить системные таблицы, поэтому перед тем как запускать его запускать, нужно сделать архив всех баз, включая те, что не используются Дебетом. Инструкцию по архивации можно найти на сайте.
Рис. 1. Запуск импорта
Рассмотрим пример импорта из файла созданного с помощью экспорта базы данных Дебет Плюс (см. инструкцию по экспорту). Структура такого файла показана в приложении.
Первое что нужно сделать при запуске импорта, это выбрать источник. В нашем примере это файл dpbase.xml. После этого содержимое файла загрузится в список (рис.2) записи в котором можно удалять, сортировать, отмечать и т.п. Далее выбираем базу-приемник из списка доступных баз в рабочей СУБД (по умолчанию текущая база). Отмечаем нужные записи. Это можно сделать с помощью мышки, установив галочки в квадратиках возле колонки “№”, либо с помощью горячих клавиш: “+”, “ctrl++”, “shift+↓”, “shift+левая клавиша мыши”. Если горячие клавиши не срабатывают, значит
список не активный, и нужно на него установить курсор, кляпнув левой клавишей мыши в любом месте списка. Снять все галочки можно с помощью комбинации “ctrl+-“. Если ни одна таблица не отмечена будут импортированы все. Существующие таблицы в базе будут заменены! Если все сделано правильно и на экране такая же картина как на рис.2, можно жать на кнопку «Импорт».
Рис. 2. Импорт XML
Для формата DBF характерна одна особенность: все столбцы имеют уникальное имя. С помощью этих имен можно вытащить данные из любого столбца. Для того чтобы эти данные попали в заданные поля базы данных Дебет Плюс нужно создать список соответствия для связи столбцов из источника с полями в приемнике. Такой список формируется при настройке импорта и сохраняется в xml-файле. Структура такого файла показана в приложении. Рассмотрим импорт DBFфайла на примере импорта банков.
Структура Excel-файлов похожа на структуру DBF-формата, с тем отличием, что в Excel нет привязки к столбцам по их именам. Поэтому данные из такого файла вытаскиваются по порядковому номеру столбца. Для примера можно взять импорт номенклатуры.
Текстовый (TXT) - самый весёлый формат. Структура похожа на формат Excel, но для разделения столбцов используются специальные символы: “|” вертикальная черта, “,” запятая или несколько запятых, “;” точка с запятой, “ ” табуляция и др. Пример такого файла показан на рис.3:
Рис. 3. Текстовый формат
Вся прелесть такого формата заключается в том источник любого другого формата можно конвертировать в текстовый. Настройка импорта происходить по такому же принципу как и для Excel-файлов: данные вытаскиваются по порядковому номеру столбца. Для текстового файла нужно только указать разделитель (рис.6).
После запуска импорта и выбора файла-настройки открывается окно импорта со списком импортируемых объектов (рис.4). Этот список можно редактировать и дополнять с помощью контекстного меню, вызываемого правой клавишей мыши (рис.5).
Рис. 4. Настройка импорта
Рис. 5. Меню для настройки импорта
Импортировать: запускает импорт выделенного объекта.
Открыть источник: с помощью OpenOffice открывает в отдельном окне файл-источник.
Изменить источник: открывает диалог для выбора файла-источника. Несуществующие файлы подсвечиваются в списке импорта красным цветом.
Загрузить настройки: добавляет объекты из другого файла-настройки.
Добавить: добавляет новый объект для импорта.
Редактировать: открывает диалог для редактирования настроек со списком переменных.
Удалить: удаляет выделенную запись из списка. После удаления записи запрашивает подтверждение на удаление настройки из xml-файла.
При вызове меню для редактирования открывается окно со списком переменных и набором параметров (рис.6):
Рис. 6. Редактирование настроек
№ порядковый номер объекта для импорта. Если в списке несколько объектов, при импорте всего списка объекты импортируются в порядке возрастания номера, т.е. при изменении номера изменяется порядок импорта объектов.
Название соответствует названию xml-файла с настройками. При изменении названия будет создан новый xml-файл.
Источник файл-источник. Можно просмотреть с помощью кнопки “Открыть для просмотра”. Для выбора другого файла используется кнопка с точечками .
Кодировка по умолчанию используется Windows-1251 (cp1251). Очень часто данные хранятся в другой кодировке. Поэтому если при загрузке вместо нормального текста попадают “шкряки” (что-то типа К╬┬ "└Ф│±"), нужно изменить кодировку. Чтобы убедиться в правильном выборе кодировки нужно включить предварительный просмотр и запустить импорт.
Разделитель используется для импорта текстового формата.
Импортировать строки с… по… по умолчанию импортируются все строки. Можно изменить диапазон импортируемых строк. Чтобы определить сколько всего строк, нужно нажать кнопку «Загрузить данные». Чтобы импортировать все строки, можно поставить с 0 по 0.
Приемник: если есть необходимость изменить приемник, то после этого нужно редактировать список переменных. Чтобы просмотреть список всех переменных для приемника можно нажать кнопку «Загрузить переменные».
Условие импорта условие, по которому будут импортироваться строки. Используется когда нужно отсеять ненужные или некорректные строки.
Предварительный просмотр: перед тем как вносить данные в базу, программа загружает их в буфер и открывает в отдельном окне для просмотра и редактирования. После закрытия окна можно продолжить импорт либо отменить.
Действие два варианта:
1) добавить: используется если нужно добавить новые строки в таблицу. В этом случае можно удалить существующую таблицу и создать новую, поставив галочку “Заменить существующие”.
2) обновить: если нужно обновить существующие строки в таблице. Для поиска существующих строк используется связка.
Одну и туже настройку можно использовать для разных файлов-источников. Разные источники могут отличаться набором данных и содержать разные переменные. В этом случае можно отредактировать список переменных в самой настройке. Для этого можно воспользоваться контекстным меню в списке переменных (рис.7). С помощью кнопки «Очистить список» можно удалить все переменные, а затем загрузить переменные приемника кнопкой «Загрузить переменные», либо добавлять по одной переменной с помощью меню “Добавить” (рис.7):
Рис. 7. Список переменных
Вызвав меню «Редактировать», получаем окно для настройки переменных (рис.8). Здесь можно указать переменную приемника и соответствующую переменную источника (для источника можно указать номер столбца). Эти переменные можно выбрать из списка (рис.9), который открывается при нажатии на кнопку с точками (рис.8). Выбор из списка выполняется с помощью двойного щелчка левой кнопкой мыши на нужной переменной либо с помощью клавиши Enter. Тип переменной в этом случае устанавливается автоматически. В поле “Примечание” указывается описание этой переменной, сюда можно ввести любой текст. После выбора переменных нужно нажать на кнопку «Сохранить».
Рис. 8. Редактирование списка переменных
Рис. 9. Список для выбора переменных
Данные в файле-источнике обычно хранятся в виде текста. Чтобы корректно загрузить их в базу Дебет Плюс, нужно выполнить преобразование типов. Такая процедура выполняется системой импорта, если в настройке правильно указаны типы переменных. Все типы можно разделить на две группы: простые и “не очень” (объекты). Простые типы определяются автоматически при выборе приемника. Этого достаточно для импорта таблиц. Импорт документов сложнее, потому что в любом документе содержится как минимум один объект контрагент. В переменных документа хранится код контрагента, а в источнике может быть название, ОКПО и другая информация, которую можно использовать для идентификации контрагентов. В этом случае нужно настроить импорт таким макаром, чтобы он расчехлился что в столбце со значениями типа “ТОВ Премия” хранится не просто какая то текстовка а именно названия контрагентов. Для этого нужно выбрать тип переменной “Аналитика” и указать номер справочника контрагентов, например 12. К сожалению, импорт документов может еще круче усложниться, когда источник с документами содержит только код контрагентов или, еще хуже, внешний идентификатор, а названия и другая информация лежат в отдельном файле. Для такого случая предусмотрена возможность подключить дополнительный источник. Подробнее об этом написано в разделе “Импорт документов”. Итак, какие же типы можно импортировать:
1. Простые типы:
Текст (text) текстовый формат, может иметь ограниченный размер, максимально возможная длина 255 символов.
Целое число (short) может принимать значения ±0; 1; 2 .. 32767.
Большое целое число (long) ±0; 1; 2 .. 9 223 372 036 854 775 807.
Число с плав. точкой (double) ±0.1; 0.2 .. 3.4028235 Е+38
Денежный (currency) ±0.1; 0.2 .. 1.7976931348623157 Е+308
Дата (date) для импорта используется формат 01.01.2008.
да/нет (bit) булевский тип ("Быть или не быть"), может иметь два значения: true (да) и false (нет).
2. Объекты:
Аналитика (cls.cl) в качестве приемникапеременной может выступать справочник аналитики. Например, контрагент в договорах или в документах. Если в источнике содержится текстовка или код аналитики, можно в настройке для приемника выбрать номер справочника, где должна хранится эта аналитика. Не существующие позиции будут добавлены в указанный справочник.
Номенклатура (nmk) в основном используется для импорта документов со строками (счета, накладные и т.п.). В источнике может храниться название номенклатуры.
Единицы измерения (cls.edi) при импорте номенклатуры в источнике могут содержаться названия единиц измерения. В Дебет Плюс есть справочник “Единицы измерения” в системе ТМЦ. Чтобы не создавать отдельную настройку для импорта этого справочника, можно загрузить его вместе с номенклатурой.
Договор (cls.cntrct) используется при импорте документов. В источнике может содержаться № договора.
В списке переменных объекты выделяются синим цветом.
В качестве источника могут выступать не только переменные из источника, но и любые значения и выражения в виде программных функций, которые также применяются для настройки форм печати, проводок и журналов регистрации. Для использования таких выражений в поле “Источник” (рис.10) вместо переменной нужно ввести символ “=” и написать выражение. Например, при импорте номенклатуры для всех позиций нужно проставить НДС=20. Для этого в список переменных добавляем запись с такими параметрами (рис.10): в приемнике выбираем переменную FNDS, а в поле “Источник” вписываем =20. В списке переменных выражения выделяются желтым цветом.
Рис. 10. Использование выражений
Если нужно импортировать данные в таблицу или справочник, для которого нет настройки, можно создать свою настройку. При этом, для того чтобы просто загрузить данные из файла во временную таблицу базы Дебет Плюс, достаточно просто запустить импорт и выбрать файл-источник. Рассмотрим подробнее порядок действий.
1. Запускаем импорт (см. раздел “Запуск”), открывается диалог для выбора файла (рис.11):
Рис. 11. Выбор файла-источника для создания файла-настройки
2. Вместо того чтобы выбрать существующий xml-файл с настройками, нужно выбрать файл-источник. Для этого сначала указываем тип импортируемого файла из выпадающего списка внизу окошка (рис.11). Затем находим нужный нам файл. По умолчанию в окошке показаны файлы из папки /DebetPlusV12/base/org1/import/ (каталог с настройками). Если файл находится в другой папке, нужно в нее перейти, указав путь в поле “Папка”.
3. После выбора файла в папке /DebetPlusV12/base/org1/import/ создается import.xml с начальными настройками для импорта нашего файла. В качестве приемника указана временная таблица TMP_IMPORT (рис.12) с полями F1, F2 .. Fn, где n количество столбцов в файле-источнике.
Рис. 12. Новая настройка
4. Чтобы изменить приемник, нужно редактировать настройку (рис.13). Подробнее описано в разделе “Редактирование настроек”.
Рис. 13. Редактирование новой настройки
В параметрах импорта (рис.13) указываем: тип приемника таблица; в поле для названия таблицы можно ввести любую пургу латинскими буквами без пробелов и, если такой таблицы в базе нет, она будет создана при импорте. Если такая таблица существует, ее можно удалить поставив галочку заменить существующие. Чтобы занести данные в существующую таблицу, ее можно выбрать из списка при нажатии на кнопку с точками возле названия (рис.13).
Для выбора таблицы используется диалог “Просмотр базы данных” показанный на рис.14. Сначала нужно раскрыть список баз. Затем найти рабочую базу и раскрыть в ней список таблиц. После этого можно использовать поиск, чтобы найти нужную таблицу. Перемещать курсор по дереву можно с помощью клавиш со стрелочками на клавиатуре. Для выбора таблицы нужно выполнить двойной щелчок левой клавишей мыши либо нажать клавишу “Enter” после установки курсора на нужной позиции.
При редактировании списка переменных нужно учитывать, что в существующую таблицу можно импортировать данные только в существующие поля, и новые поля не добавляются. То есть для существующей таблицы переменную для приемника нужно выбирать из списка существующих (рис.8, 9). Если нужно создать новую таблицу, можно добавлять поля с любым названием латинскими буквами.
Рис. 14. Выбор таблицы
Для импорта номенклатуры можно использовать настройку из папки /DebetPlusV12/base/org1/import/. Для этого нужно запустить импорт (см. раздел "Запуск"), выбрать файл nmk.xml. Загрузится настройка, где указан источник /DebetPlusV12/base/org1/import/nmk.xls (рис.15). Изменить источник можно с помощью контекстного меню (рис.6) или при редактировании настройки, как описано в разделе “Настройка импорта”.
Рис. 15. Импорт номенклатуры
Можно создать свою настройку для импорта номенклатуры. Для этого в параметрах импорта указываем: тип приемника справочник номенклатуры (рис.16). В поле для названия автоматически прописывается имя таблицы, которая используется для справочника номенклатуры: MTR_CL_NMK.
В настройке возле приемника появилось поле “Группа”. Можно указать группу номенклатуры, в которую будут импортироваться все записи. Если группа не указана, записи импортируются в основную (нулевую) группу.
Рис. 16. Настройка импорта номенклатуры
В параметрах импорта указываем: тип приемника прайс-лист (рис.17). С помощью кнопочки с точечками возле названия приемника выбираем прайс из списка. В этот список можно сразу добавить новый прайс-лист. После выбора в название прописывается имя таблицы для прайса, например MTR_PA20060928 (рис.17).
В список переменных нужно добавить поле FNMKL с типом “Номенклатура”, и поле FCENA.
Рис. 17. Импорт прайс-листов
Справочники аналитики в Дебет Плюс это объекты, которые содержат набор переменных и имеют основные атрибуты код и вид. Среди основных видов справочников можно выделить следующие: 1 простой, 2 юридические лица, 3 физические лица. Все справочники наследуются от справочника 1-го вида (“Простого”) и имеют переменные HCOD код и HTXT название.
В настройке импорта нужно указать тип приемника справочник аналитики (рис.18). С помощью кнопки для выбора приемника выбираем справочник из списка, в поле “Код справочника” должен прописаться номер выбранного справочника.
Рис. 18. Импорт справочников аналитики
В настройке указываем: приемник папка документов (рис.19). С помощью кнопки для выбора приемника открываем список типов документов (рис.20). Находим нужную папку и выбираем. В результате в поле для названия приемника попадает тип документа (например SF), в поле “Номер операции” проставляется номер выбранной операции.
Если выбран документ со строками, появится настройка для группировки строк (рис.19). Если не использовать эту настройку (убрать галочку), для каждой записи из источника будет создан документ с одной строкой. В данном примере (рис.19) строки группируются по плательщику “столбец 3” в источнике. То есть, документ будет создаваться для каждого контрагента. Для группировки строк можно также использовать метку. В этом случае в источнике в отдельном столбце нужно расставить метки обозначающие создание нового документа, и все записи, начиная с этой метки и до следующей пойдут в этот документ. Для этого в параметрах нужно указать столбец и значение метки.
Рис. 19. Импорт документов
Рис. 20. Выбор папки документов
Справочник банков Дебет Плюс содержит 4 поля: МФО, название, адрес и комментарий. Эти данные хранятся в таблице COM_CL_BANKS. Для импорта берем файл DBF-формата со структурой показанной на рис.21. Для импорта такого файла можно использовать стандартную настройку.
Порядок действий в этом случае следующий:
1. Запускаем импорт (см. раздел “Запуск”).
2. Выбираем файл-настройки: /DebetPlusV12/base/org1/import/Банки.xml. В результате открывается окно импорта, показанное на рис.22.
3. Если имена столбцов в источнике такие же как в примере (рис.21), можно жать кнопку «Импорт». В противном случае (если имена столбцов отличаются) нужно внести изменения в настройку (см. раздел “Настройка импорта”).
Рис. 21. Файл-источник для импорта банков
Рис. 22. Импорт банков
Для импорта можно использовать файл со структурой, показанной на рис.23. Здесь имеет значение порядок размещения столбцов в файле. В нашем случае в первом столбце содержится идентификатор контрагента, во втором код, в третьем наименование и т.д.
Рис. 23. Файл-источник для импорта контрагентов
Порядок действий:
1. Запускаем импорт (см. раздел “Запуск”).
2.Выбираем файл-настройки: /DebetPlusV12/base/org1/import/cl_12.xml.В настройке указан файл cl_12.xls. Можно изменить файл или внести изменения в настройку (см. раздел “Настройка импорта”).
<export subd="16" date="26.08.2008 17:34:17" database="DPBASE">
<tables>
<table name="MTR_CL_EDI">
<fields>
<field name="FWID" type="long" />
<field name="FCOD" type="long" />
…
</fields>
<rows>
<row>
<FWID>
<![CDATA[NTc3MQ== ]]>
</FWID>
<FCOD>
<![CDATA[ MQ== ]]>
</FCOD>
….
</row>
…
</rows>
</table>
…
</tables>
</export>
<import>
<tables>
<table conditionMode="==" delimiter="," encoding="cp866" groupCond="GROUP_FIELD"
groupRow="false" mode="add" name="COM_CL_BANKS" num="1" objCod="0"
objID="0" preview="false" replace="false"
source="F:\EclipseOrg\org1\import\Банки.DBF" type="tbl">
<links/>
<fields>
<field length="15" name="FMFO" newsource="false" objcod=""
source="=Number(HMFO)" type="text">МФО
</field>
<field length="0" name="FNAZV" newsource="false" objcod="" source="=allt(HNB)"
type="text">Название
</field>
…
</fields>
<rows />
</table>
…
</tables>
</import>
<import delimiter="," encoding="cp1251">
<tables>
<table encoding="cp1251" groupCond="GROUP_FIELD" groupRow="false" mode="add"
name="MTR_CL_NMK" num="1" objCod="001." replace="false"
source="F:\EclipseOrg\org1\import\nmk.xls" type="nmk">
<links/>
<fields>
<field length="0" link="" name="FTXTS" newsource="false" objcod="" objsource=""
param="F:\EclipseOrg\org1/import/nmk.xml" source="2" type="text">Назва
</field>
<field length="0" link="" name="F1CENA" newsource="false" objcod=""
objsource="" param="F:\EclipseOrg\org1/import/nmk.xml" source="3"
type="double">Вартість
</field>
…
</fields>
<rows />
</table>
</tables>
</import>
Для импорта используется объект DbImporter. Для примера рассмотрим импорт файла nmk.xls во временную таблицу TMP_NMK. В результате импорта будет создана таблица с двумя полями FCOD и FTXT, и заполнена данными из файла-источника: в поле FCOD пойдут данные из первого столбца, в поле FTXT из второго.
Пример использования объекта DbImporter:
include("Objects/DbImporter.js");
var oImp = new DbImporter("C:\\nmk.xls", "TMP_NMK");
//oImp.source = "C:\\nmk.xls"; //источник
//oImp.recipient = "TMP_NMK"; //приемник - таблица TMP_NMK
//oImp.setRange(1, 5); //установка диапазона импортируемых строк
oImp.replace = true; //существующая таблица TMP_NMK будет удалена
oImp.preview = true; //перед загрузкой в получатель откроется буфер с данными, которые можно редактировать
oImp.addVar("FCOD", 1, "int"); //первый столбик пойдет в поле FCOD
oImp.addVar("FTXT", 2, "text(200)"); //второй столбик - в FTXT
oImp.run(); //пуск