Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
ru:manual:cooperation:exchange [2012/08/15 16:17] admin [Принципы задания соответствий параметров] |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Обмен данными с другими системами ====== | ||
- | В Business Studio есть возможность обмена данными с другими программами. Настройка правил обмена осуществляется с помощью справочников Импорта (в интерфейсе администратора системы пункт меню «Администрирование --> Импорт/Экспорт --> Справочники импорта»). В справочнике «Пакет импорта» можно создавать и редактировать объекты -- собственно //Пакеты импорта//, которые описывают правила импорта/экспорта данных (Рис. 1). | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1315.png?nolink |Рисунок 1. Схема обмена данными с другими программами}}] | ||
- | |||
- | Пакеты импорта предназначены для настройки правил обмена Business Studio с другими программами, которые имеют возможность обмена с помощью файлов MS Excel. | ||
- | |||
- | Также возможен импорт и экспорт самих //Пакетов импорта// с использованием встроенного пакета импорта //ИмпортИмпорта//. | ||
- | |||
- | Кроме того, задача автоматического обмена данными с другими приложениями может быть осуществлена с использованием технологии OLE. Описание обеспечения возможности работы с приложением Business Studio через OLE дано в [[ru/technical_manual/work_via_ole]]. | ||
- | |||
- | ===== Вид файла импорта ===== | ||
- | |||
- | Файл импорта MS Excel содержит несколько листов. Каждый лист файла -- это отдельная таблица, обычно характеризующая справочник системы. Таким образом, в одном файле MS Excel можно загружать сразу несколько таблиц. Первая строка таблицы -- перечень наименований полей. Затем идут собственно значения этих полей, количество записей равно количеству загружаемых объектов. | ||
- | |||
- | <startTableBox> | ||
- | ^ Лист 1 ^^^^^ | ||
- | | Фамилия | Имя | Отчество | Дата рождения | Комментарий | | ||
- | | Иванов | Иван | Иванович | 29.09.1969 | Кандидат … | | ||
- | | Петров | Петр | Петрович | 04.05.1978 | | | ||
- | ^ Лист 2 ^^^^^ | ||
- | | Фамилия | Имя | Отчество | Тип контакта | Контакт | | ||
- | | Иванов | Иван | Иванович | Этаж/Кабинет | 3 этаж, комната 122 | | ||
- | | Иванов | Иван | Иванович | Домашний телефон | 444333 | | ||
- | | Петров | Петр | Петрович | Этаж/Кабинет | 3 этаж, комната 122 | | ||
- | | Петров | Петр | Петрович | Сотовый телефон | 4 434 434 342 234 | | ||
- | | Петров | Петр | Петрович | Электронная почта | petr@mail.ru | | ||
- | <endTableBox|Таблица 1. Файл импорта MS Excel> | ||
- | |||
- | Например, первый лист файла -- это таблица физических лиц, в которой указаны поля //Фамилия, Имя, Отчество//, //Дата рождения, Комментарий// (данные справочника //Физические лица//). Второй лист файла -- это таблица контактов физических лиц, в которой указаны поля //Тип контакта, Контакт// (собственно данные справочника //Контакты ФизЛиц//) и поля //Фамилия, Имя, Отчество// (для определения физического лица, к которому относится данный контакт), см. Таблица 1. | ||
- | |||
- | ===== Виды данных ===== | ||
- | |||
- | Импортируемые классы бывают 3--х видов: Линейные справочники, Иерархические справочники, Списки объектов. | ||
- | |||
- | ==== Линейные справочники ==== | ||
- | |||
- | Линейным справочником является обычный справочник-таблица, например «Физические лица». При импорте линейного справочника обязательным является задание ключа. | ||
- | |||
- | //Ключ// -- это совокупность параметров класса, позволяющих однозначно идентифицировать запись. В Business Studio ключом любого справочника является GUID (глобальный уникальный идентификатор). Но задание таких ключей во внешних программах не всегда удобно, тогда ключом может выступать набор параметров. Например, для класса //Физические лица// ключевыми параметрами могут быть //Фамилия, Имя, Отчество//. Если по указанному ключу будет обнаружено несколько объектов, в процессе импорта будет выдана ошибка. В таком случае, необходимо расширить набор ключевых параметров. | ||
- | |||
- | ==== Иерархические справочники ==== | ||
- | |||
- | Иерархический справочник -- это справочник с древовидной структурой, например «Объекты деятельности». При импорте иерархического справочника обязательным является задание двух ключей -- ключа собственно объекта, и ключа родителя. | ||
- | |||
- | //Ключ родителя// -- это ключ, позволяющий однозначно идентифицировать родителя объекта. Если по указанному ключу родителя будет обнаружено несколько объектов--родителей или не обнаружено ни одного, в процессе импорта будет выдана ошибка. Поэтому в таблице импорта строки объектов-родителей должны идти раньше строк объектов-потомков. | ||
- | |||
- | ==== Списки объектов ==== | ||
- | |||
- | Списки объектов -- это списки, принадлежащие определенному объекту (в системе значения хранятся в классах Элементов списков). При импорте списка объектов обязательным является задание двух ключей -- ключа собственно объекта и ключа владельца. | ||
- | |||
- | //Ключ владельца// -- это ключ, позволяющий однозначно идентифицировать объект--владелец строки списка. Если по указанному ключу владельца будет обнаружено несколько объектов-владельцев или не обнаружено ни одного, в процессе импорта будет выдана ошибка. Поэтому этап импорта справочника-владельца должен идти раньше, чем этап импорта элементов списков. | ||
- | |||
- | ===== Принципы задания соответствий параметров ===== | ||
- | |||
- | На примере данных, которые содержит Таблица 1, рассмотрим принципы задания соответствий параметров. | ||
- | |||
- | Сначала необходимо импортировать физических лиц, то есть первым этапом будет импорт строк из листа «Лист 1» в справочник //БизнесМодель.Физлица//. Пусть в данном файле импорта по колонкам //Фамилия, Имя, Отчество// можно однозначно определить импортируемый объект. Тогда ключевыми параметрами объекта //Физлица// будут поля //Фамилия, Имя, Отчество//. Каждое из этих полей можно представить в виде конечной строки. Параметры //Дата рождения, Комментарий// -- не будут являться в данном случае ключевыми. Каждое из этих полей также можно представить в виде конечной строки (Рис. 14.5.2). | ||
- | |||
- | В случае, если уникальность по названию не соблюдается, и ключ получается слишком сложный, можно использовать одно поле в качестве ключевого. Например, это может быть созданный для этих целей пользовательский параметр, или параметр «guid». | ||
- | |||
- | **Внимание!** Параметр «guid» формируется системой автоматически при создании нового объекта. Можно использовать его в качестве ключевого только в том случае, если импорт элементов происходит «с нуля», то есть не нужно обновлять существующие элементы в базе. | ||
- | |||
- | **Внимание!** Параметр «guid» должен быть уникальным для всех Объектов системы. | ||
- | |||
- | **Внимание!** Длина строкового параметра «guid» ограничена 40 символами. | ||
- | |||
- | Для ознакомления со структурой данных Business Studio предназначена Объектная модель (см. [[ru/manual/report/object_model]]). | ||
- | |||
- | **Внимание:** Импортировать можно только в хранимые параметры классов. | ||
- | |||
- | На Рис. 2 представлена схема импорта физических лиц на основе рассматриваемого примера. | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1317.png?673x473&nolink |Рисунок 2. Схема импорта в справочник «БизнесМодель.ФизЛица»}}] | ||
- | |||
- | В процессе импорта (Рис. 3) по ключевым параметрам //Фамилия, Имя, Отчество// в справочнике //БизнесМодель.Физлица// ищется объект. В случае если такой объект существует, произойдет обновление неключевых параметров //Дата рождения, Комментарий//. В случае если по ключевым параметрам объект не найден -- будет создан новый объект. | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1319.png?nolink |Рисунок 3}}] | ||
- | |||
- | Далее необходимо импортировать список контактов физических лиц. То есть вторым этапом будет импорт строк листа «Лист 2» в класс элементов списков //БизнесМодель.КонтактыФизЛиц// из листа «Лист 2» файла импорта. Владельцем списка //БизнесМодель.КонтактыФизЛиц// является справочник //БизнесМодель.Физлица//. Ключ объекта справочника //БизнесМодель.Физлица// -- набор простых параметров //Фамилия, Имя, Отчество//. Таким образом, на данном этапе задается ключ Владельца импортируемого объекта. | ||
- | |||
- | Однозначно определить контакт в файле импорта позволяет набор колонок //Фамилия, Имя, Отчество, Тип контакта//. Одним из ключевых параметров контакта является объектное поле //Владелец//, но его нельзя представить в виде конечной строки. Ключом поля //Владелец// является набор параметров //Фамилия, Имя, Отчество//, каждый из которых можно представить в виде конечной строки. Другим ключевым параметром контакта является объектное поле //ТипКонтакта//, которое также нельзя представить в виде конечной строки. Однозначным идентификатором объекта //ТипКонтакта// является поле //Название//, его можно представить в виде конечной строки. | ||
- | |||
- | Таким образом ключом импортируемого объекта будет являться набор двух сложных параметров //Владелец\{Фамилия}{Имя}{Отчество} и ТипКонтакта\Название//. | ||
- | |||
- | То есть любому сколь угодно сложному объектному параметру можно поставить в соответствие набор текстовых полей, указав «путь» до каждого. Дополнительные параметры у сложного параметра всегда являются ключевыми полями (позволяющими однозначно его идентифицировать). Также дополнительным параметром может являться объектный параметр, в свою очередь содержащий набор полей (опять же, ключевых). | ||
- | |||
- | Параметр //Контакт// -- не будет являться в данном случае ключевым. Поле //Контакт// можно представить в виде конечной строки. | ||
- | |||
- | На Рис. 4 представлена схема импорта контактов физических лиц на основе рассматриваемого примера. | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1321.png?672x564&nolink |Рисунок 4. Схема настройки пакета импорта для элементов списков «БизнесМодель.КонтактыФизЛиц»}}] | ||
- | |||
- | В процессе импорта из листа «Лист 2» в элементы списков //БизнесМодель.КонтактыФизЛиц// по ключевым параметрам //Фамилия, Имя, Отчество// в справочнике //БизнесМодель.Физлица// ищется владелец объекта импорта. В случае если владелец не найден -- будет выдана ошибка и объект импортирован не будет. Обязательно соблюдение порядка этапов импорта. Для списков сначала импортируются справочники, являющиеся их владельцами. В случае если владелец найден, будет произведен поиск объекта справочника //БизнесМодель.КонтактыФизЛиц// по ключевым параметрам. Далее импорт идет аналогично импорту справочников. То есть, если объект по ключевым параметрам найден -- будет произведено обновление неключевых параметров (//Контакт// в данном случае). Если объект не найден, будет создан новый. | ||
- | |||
- | При импорте иерархических справочников, правила настройки ключа родителя аналогичны правилам настройки ключа владельца для элементов списков. Поэтому первым этапом должны импортироваться объекты-родители, потом объекты-потомки. В процессе импорта иерархического справочника ищется родитель объекта импорта. В случае если родитель не найден -- будет выдана ошибка и объект импортирован не будет. | ||
- | |||
- | Пример создания пакета импорта с настройкой соответствий для сложных параметров описан в [[ru/manual/sample_questions/example_packet_import]]. | ||
- | |||
- | ===== Пакеты импорта ===== | ||
- | |||
- | Создание и редактирование пакетов импорта осуществляется из справочника «Пакеты импорта». | ||
- | |||
- | Справочник пакетов импорта можно открыть в режиме администрирования (см. [[ru/manual/administration]]), из меню «Администрирование --> Импорт/Экспорт --> Справочники импорта», выбрать справочник «Пакет импорта». | ||
- | |||
- | Гиперссылки //__Выполнить экспорт__// и //__Выполнить импорт__// служат соответственно для экспорта и импорта данных по выбранному пакету импорта. | ||
- | |||
- | Свойства пакета импорта описываются в окне «Редактирование объекта из: Объекты импорта» (Рис. 5). | ||
- | |||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1323.png?nolink |Рисунок 5}}] | ||
- | |||
- | В поле «Пакет импорта» вводится произвольное название пакета импорта. | ||
- | |||
- | **Внимание:** Название пакета импорта должно быть уникальным. | ||
- | |||
- | Кнопка «Импорт/Экспорт» открывает окно «Выполнение импорта» (см. [[ru/manual/cooperation/exchange#выполнение_импорта|Bыполнение импорта]]). | ||
- | |||
- | ===== Выбор файла для генерации пакета импорта ===== | ||
- | |||
- | При создании пакета выдается диалоговое окно с предложением «Выбрать файл для генерации пакета импорта». | ||
- | |||
- | При согласии открывается диалоговое окно для выбора файла MS Excel. Далее будут автоматически заполнены Этапы импорта по названиям листов выбранного файла; будет предложено выбрать классы приемники для каждого этапа; также будет заполнены списки колонок листа по первым строкам листов. В дальнейшем для ввода этапа импорта, названия колонки можно будет использовать заполненные списки. | ||
- | |||
- | При отказе откроется пустое окно редактирования пакета импорта. В этом случае добавление этапов импорта и заполнение полей колонок возможно только вручную. | ||
- | |||
- | **Внимание:** При создании собственного пакета импорта рекомендуется выбирать файл для генерации. | ||
- | |||
- | ===== Этапы импорта ===== | ||
- | |||
- | Этапы импорта разделяют импорт параметров по классам и устанавливают порядок импорта (Рис. 6). | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1325.png?nolink |Рисунок 6}}] | ||
- | |||
- | //№// -- порядок выполнения этапа импорта. | ||
- | |||
- | **Внимание:** Порядок выполнения этапов важен: в первую очередь необходимо загружать справочники, потом ссылающиеся на них списки и справочники. | ||
- | |||
- | //Имя листа// //MS ////Excel// -- название листа в файле MS Excel. | ||
- | |||
- | **Внимание:** Имена листа чувствительны к регистру. Например, имена «Физлица» и «физлица» не являются идентичными. | ||
- | |||
- | //Имя класса приемника// -- класс, в который будут импортироваться объекты на данном этапе. | ||
- | |||
- | Добавление нового этапа происходит из контекстного меню. При этом откроется окно выбора источника (список листов, которые содержались в файле генерации, если он был выбран при создании пакета), затем окно выбора класса приемника. Поле //№// заполняется автоматически, при необходимости его можно изменить. | ||
- | |||
- | ===== Описание этапа импорта ===== | ||
- | |||
- | Описание этапов импорта служит для настройки соответствий параметров импорта. В зависимости от вида класса приемника описание этапов импорта содержит несколько закладок. | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1327.png?nolink |Рисунок 7}}] | ||
- | |||
- | Закладка «Ключ» обязательная для заполнения, показывается для всех видов справочников (Рис. 7). На ней задаются ключевые параметры класса. | ||
- | |||
- | Закладка «Параметры» отображается для всех видов справочников, не является обязательной для заполнения. На ней задаются дополнительные (неключевые) параметры класса. | ||
- | |||
- | Закладка «Ключ владельца» появляется только для элементов списков, является обязательной для заполнения. На ней задаются ключевые параметры класса-владельца списка. Например, для списка //БизнесМодель.КонтактыФизЛиц// классом владельцем является класс //БизнесМодель.ФизическиеЛица//. Владельца класса можно узнать из объектной модели, выбрав в контекстном меню Элементов списков пункт «Перейти к владельцу». | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1329.png?nolink |Рисунок 8}}] | ||
- | |||
- | Закладка «Ключ родителя» появляется только для иерархических справочников (Рис. 8). На ней задается имя колонки с признаком группы, и задаются ключевые параметры объекта--родителя для объекта импорта. Если ключ родителя не будет задан, то родителем для всех импортируемых объектов будет считаться корневой объект. | ||
- | |||
- | На закладке «Ключ родителя» поле //Имя колонки// //Excel с признаком группы// -- это заголовок колонки, в котором будет признак группы, т.е. является ли импортируемый объект папкой или же конечным объектом, не имеющим потомков. Возможные варианты заполнения полей колонки признака группы для импорта объекта см. [[ru/manual/sample_questions/macros_in_report]]. | ||
- | |||
- | Если //Имя колонки с признаком группы// не будет задано, то все объекты будут импортироваться как группы. | ||
- | |||
- | ===== Настройка соответствий между столбцами файла и параметрами класса ===== | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1331.png?nolink |Рисунок 9}}] | ||
- | |||
- | //Параметр класса// -- параметр класса импорта. Выбирается по кнопке {{ ru/manual/cooperation/exchange/exchange_702.jpg?nolink}} или вводится вручную с клавиатуры (Рис. 9). | ||
- | |||
- | **Внимание:** При вводе с клавиатуры, необходимо учитывать, что используется системное название параметра. | ||
- | |||
- | Пример ввода объектного параметра: | ||
- | |||
- | // «НазваниеОбъектногоПараметра/НазваниеПараметра».// | ||
- | |||
- | //Колонка листа// //MS ////Excel// -- заголовок колонки листа. Выбирается по кнопке {{ru/manual/cooperation/exchange/exchange_702.jpg?nolink}} или вводится вручную с клавиатуры. Выбор колонок листа из списка возможен только в случае, когда при создании пакета импорта был выбран файл генерации. | ||
- | |||
- | **Внимание:** При вводе с клавиатуры необходимо учитывать, что название чувствительное к регистру. | ||
- | |||
- | Пример ввода названия колонки для параметра: | ||
- | |||
- | // «ЗаголовокКолонки».// | ||
- | |||
- | Добавление, редактирование и удаление параметров происходит из контекстного меню. | ||
- | |||
- | |||
- | <startTableBox> | ||
- | ^ Название пункта ^ Описание ^ | ||
- | | Добавить параметр | Открывает окно выбора параметра. Если при загрузке был выбран файл для генерации, затем откроется окно выбора колонки листа. Добавляет новую строку в список параметров. | | ||
- | | Добавить сложный параметр | Открывает окно выбора параметра, затем редактор колонки импорта, добавляет новую строку в список. Описание задания соответствий см. [[ru/manual/cooperation/exchange#принципы_задания_соответствий_параметров|Принципы задания соответствий параметров]]. | | ||
- | | Свойства | Открывает окно «Редактор колонки импорта». | | ||
- | | Удалить параметр | Удаляет выделенную строку из списка параметров. | | ||
- | <endTableBox|Таблица 2. Контекстное меню параметров описания этапа импорта> | ||
- | ===== Редактирование колонки импорта ===== | ||
- | |||
- | Колонка импорта -- часть механизма настройки соответствий между параметром класса и колонкой листа MS Excel. В случае простого параметра колонка импорта напрямую связывает Параметр класса с Колонкой листа импорта (Рис. 2). В случае сложного параметра в колонке импорта указывается объектный параметр класса для настройки соответствий для параметров класса, которому он принадлежит (Рис. 4). | ||
- | |||
- | С помощью редактора колонки импорта производится настройка дополнительных параметров для сложного параметра. Открывается выбором пункта «Свойства» в контекстном меню строки списка параметров импорта (Рис. 10). | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1333.png?nolink |Рисунок 10}}] | ||
- | |||
- | В поле //Название// указан уникальный идентификатор колонки импорта. | ||
- | |||
- | Путь до корневого параметра указан: | ||
- | |||
- | *для ключевых параметров в поле //Ключ//; | ||
- | *для неключевых параметров в поле //Параметр//; | ||
- | *для ключей родителей в поле //Ключ родителя//; | ||
- | *для ключей владельцев в поле //Ключ владельца//. | ||
- | |||
- | Чтобы добавить новый параметр, нужно установить курсор в ячейке «Параметр класса» и нажать кнопку {{ru/manual/cooperation/exchange/exchange_702.jpg?nolink}} для выбора параметра из списка параметров класса, либо ввести с клавиатуры системное название параметра. Затем установить курсор в колонку листа и нажать кнопку {{ru/manual/cooperation/exchange/exchange_702.jpg?nolink}} для выбора колонки из списка колонок, либо ввести название колонки вручную с учетом регистра. | ||
- | |||
- | Кнопка «Редактировать колонку» открывает окно «Редактор колонки импорта» для выделенного параметра. Таким образом, можно создавать сложные параметры любой степени вложенности. | ||
- | |||
- | ===== Выполнение импорта ===== | ||
- | |||
- | Чтобы выполнить импорт или экспорт из режима администрирования (см. [[ru/manual/administration]]), нужно выбрать пункт меню «Администрирование --> Импорт/Экспорт --> Импорт» или соответственно «Администрирование --> Импорт/Экспорт --> Экспорт». При этом откроется сначала окно выбора пакета импорта, затем -- диалоговое окно выбора файла для импорта или соответственно экспорта. Откроется окно «Выполнение импорта». | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1335.png?nolink |Рисунок 11}}] | ||
- | |||
- | Параметр //Пакет импорта// -- пакет, по которому будет производиться импорт или экспорт. | ||
- | |||
- | Поля списка этапов импорта: | ||
- | |||
- | * //№// -- определяет очередность выполнения этапа импорта; | ||
- | * //Объект импорта// -- уникальное название этапа импорта; | ||
- | * //Выбран// -- устанавливает активность этапа импорта; | ||
- | * //Имя листа// //MS ////Excel// -- название листа файла, из которого происходит импорт на данном этапе; | ||
- | * //Имя класса приемника// -- системное наименование класса, в который происходит импорт на данном этапе; | ||
- | * //Ошибки критические// -- текст критических ошибок, возникавших в процессе прохождения этапа импорта; | ||
- | * //Состояние этапа// -- результат прохождения этапа импорта: не выполнялся, тест не прошел, тест прошел с ошибками, успешно. | ||
- | |||
- | Кнопка «Включить всё» включает активность всех этапов импорта. Такая операция доступна, если активность хотя бы одного из этапов отключена. Если активность всех этапов включена, название кнопки меняется на «Выключить всё» и ее нажатие отключает активность всех этапов импорта. | ||
- | |||
- | ==== Импорт файла ==== | ||
- | |||
- | Файл импорта выбирается на закладке «Импорт» (Рис. 12) в графе //Имя файла// по кнопке {{ru/manual/cooperation/exchange/exchange_1337.png?nolink}} или вводом с клавиатуры. | ||
- | |||
- | Опция //Проверка уникальности при первом запуске// -- включает проверку существования объекта при загрузке файла импорта по ключевым полям, это ускоряет загрузку больших массивов информации. | ||
- | |||
- | **Внимание:** Отключение опции //Проверка уникальности при первом запуске// нужно производить с большой осторожностью, только для пустых баз и при полной уверенности в отсутствии повторяющихся объектов по ключевым параметрам, иначе при импорте возможны ошибки. | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1339.png?nolink |Рисунок 12}}] | ||
- | |||
- | Кнопка «Выполнить импорт» запускает процесс импорта. Если в процессе импорта возникнут ошибки -- будет выдано окно «Ошибки критические». | ||
- | |||
- | **Внимание:** Рекомендуется производить резервное копирование базы данных перед выполнением импорта из файла. | ||
- | |||
- | ==== Экспорт файла ==== | ||
- | |||
- | Файл экспорта выбирается на закладке «Экспорт» (Рис. 13) в графе //Имя файла// по кнопке {{ru/manual/cooperation/exchange/exchange_1337.jpg?nolink}} или вводом с клавиатуры. | ||
- | |||
- | [{{ ru/manual/cooperation/exchange/exchange_1341.png?nolink |Рисунок 13}}] | ||
- | |||
- | Кнопка «Выполнить экспорт» запускает процесс экспорта. Если в процессе экспорта возникнут ошибки -- будет выдано окно «Ошибки критические». | ||
- | |||
- | В итоговой строке отображается состояние и результат процесса выполнения импорта или экспорта. |