Show/Hide Toolbars

Руководство администратора

Функционал импорта данных позволяет загружать в "Первую Форму" данные, выгруженные из внешних систем в файлы форматов CSV, XLS или непосредственно из таблиц SQL. Это могут быть, например, справочники контрагентов и контактных лиц, списки подразделений и пользователей, различные классификаторы, используемые в организации, и т.п. Также может быть настроен импорт данных из другого приложения "Первая Форма".

В "Первую Форму" могут загружаться данные о задачах, значениях ДП, а также учетные записи пользователей или орг. единицы.

data_import

Список импортов данных

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

Автоматический запуск

Автоматический запуск импорта в "Первой Форме" настраивается смарт-автоматизацией — смарт-действием Выполнить импорт данных. Обычно такая автоматизация выполняется с заданной периодичностью — с помощью глобальных расписаний или расписаний в категориях.

Для запуска импорта из внешней системы можно использовать HTTP запрос.

Вызвать импорт можно через POST запрос вида:

~/app/v1.0/api/DataSync/Import/NNNN?UserID=NN

где ~ — адрес приложения "Первая Форма", NNNN — алиас, указанный в настройках импорта, а NN — ID пользователя от имени которого запускается импорт (обычно это служебный пользователь Systemrobot с ID=3).

Ручной запуск

Для ручного импорта из интерфейса администратора нажмите кнопку Начать импорт.

import_exe-01

Начать импорт

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

import_exe-02

Начать импорт

По завершению импорта появится уведомление.

import_exe-3

Импорт завершен

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

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

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

Остановка зависшего импорта

Зависший импорт можно остановить или перезапуском пула, или через БД следующим образом:

1. Найдите зависший процесс:

select * from [dbo].[DataImportFinishLogs]
where FinishTime is null
order by id desc

2. В журнале DataImportFinishLogs заполните колонку FinishDate текущей датой, что остановит все зависшие импорты.

Если вы хотите остановить все зависшие импорты:

update [dbo].[DataImportFinishLogs] set FinishTime = GETDATE() where FinishTime is null

Если вы хотите остановить конкретный зависший импорт:

update [dbo].[DataImportFinishLogs] set FinishTime = GETDATE() where (FinishTime is null) AND (ImportSettingsId = <ID_настроек_импорта>)

3. Проверьте, что зависших импортов не осталось. Для этого повторите запрос из п. 1 и убедитесь, что он возвращает пустой результат или что в результатах нет строки с ID настроек вашего импорта.

Добавление и редактирование настройки импорта

С технической точки зрения в реализации импорта данных участвуют модуль чтения (считывает данные из источника) и модуль записи (записывает данные в "Первую Форму"). Модуль чтения передает в модуль записи три массива: Created, Updated, Deleted. В каждом массиве находятся объекты со строковым идентификатором UniqueID. В зависимости от внутренней реализации модуль записи разрешает конфликты уникальности данных и выполняет необходимые действия.

Для добавления новой настройки импорта нажмите кнопку Создать. Откроется окно создания новой настройки:

data_import-1

Окно настроек импорта данных

Параметры настройки импорта данных:

Название

Описание

Имя

Название настройки в системе (любой текст. включая латинские и кириллические символы, цифры и пр.)

Алиас

Адрес для вызова внешними системами (включает только латинские буквы без пробелов).

Вызвать импорт можно через POST запрос вида

~/app/v1.0/api/DataSync/Import/NNNN?UserID=NN

где ~ — адрес приложения "Первая Форма", NNNN — алиас, указанный в настройках импорта, а NN — ID пользователя от имени которого запускается импорт (обычно это служебный пользователь Systemrobot с ID=3)

Тип данных*

Тип данных, которые импортируются в систему.

Возможные значения:

Task (задачи),

OrgStructureUnit (орг. единицы),

User (пользователи),

File (файлы).

В заказных модулях импорта могут использоваться:

ExtParam (ДП),

TableColumn (колонка ДП "Таблица"),

None

Стратегия импорта

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

Модуль чтения*

Выбор одного из реализованных модулей. Возможные значения:

CSV

SQL

Excel

HookService Reader (для импорта из другого приложения "Первая Форма")

Расширенная аналитика из Контур.Фокус

Экспресс-отчет по контрагенту из Контур.Фокус

Показатели бухгалтерской отчетности из Контур.Фокус

Контакты из Контур.Фокус

Выписка из ЕГРЮЛ/ЕГРИП из Контур.Фокус

Финансовый анализ бухгалтерской отчетности из Контур.Фокус

Актуализация реквизитов из Контур.Фокус

Модуль записи*

Выбор одной из стратегий записи. Возможные значения:

Задачи по номеру

Задачи по ключевым доп. параметрам

Задачи по GUID

DisposableTaskWriter

OrgStructureWriter

UsersWriter

Маппинг

Соответствия между импортируемыми данными и объектами "Первой Формы", в которые эти данные записываются

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

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

В зависимости от стратегии импорта и от выбранного модуля чтения или записи настройки имеют свои особенности.

Модули чтения

CSV

Настройки модуля чтения. Импорт из CSV:

data_import-2

Настройки модуля чтения. Импорт из CSV

Пользовательские настройки:

Название

Описание

Разделитель

Символ-разделитель при перечислении значений

Особенности импорта из CSV:

1. Файл с данными должен содержать только те колонки, которые используются при импорте, и только в том порядке, как они настроены в маппинге.

2. Ключевое поле должно быть первой колонкой в исходном файле и первой строкой в настройка маппинга.

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

Excel

Настройки модуля чтения. Импорт из Excel:

data_import-3

Настройки модуля чтения. Импорт из Excel

Пользовательские настройки:

Название

Описание

Отступ строк*

Число строк вверху страницы, которые будут игнорироваться при импорте данных (например, "шапка" с названиями колонок)

Номер листа*

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

Включить маппинг LookUp

Возможные значения: true/false (по умолчанию)

Если в поле не задано значение или задано false, то предполагается, что в таблице Excel для ДП типа LookUp содержатся ID задач, на которые они ссылаются.

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

warning_icon  В настройках ДП LookUp должны быть включены все статусы задач

Пример импорта задач из Excel

SQL

Настройки модуля чтения. Импорт из SQL:

data_import-4

Настройки модуля чтения. Импорт из SQL

Пользовательские настройки:

Название

Описание

Строка подключния

Строка подключения к БД вида:

Data Source= <адрес сервера БД>,<порт>;Initial Catalog=<имя каталога>;Persist Security Info=True;User ID=<логин пользователя>;Password=<пароль пользователя>;Max Pool Size=2500;MultipleActiveResultSets=true

Таблица

Имя таблицы, из которой импортируются данные

Запрос

Текст SQL-запроса для отбора данных для импорта

Фильтр

Дополнительное условие отбора, например: object_id='123456'

HookService Reader

Используется для импорта из другого приложения "Первая Форма". Настройки модуля чтения, импорт из "Первой Формы":

data_import-5

Настройки модуля чтения. Импорт из "Первой Формы"

Пользовательские настройки:

Название

Описание

ExcludeHooks

Список названий сервисов отсылки событий, которые не должны реагировать на получение события по этому импорту (разделители списка — символы "," или ";" или ":"). Список указывается для предотвращения бесконечного цикла синхронизации между приложениями

Формат*

Формат принимаемого сообщения (xml или json)

UserMapping

Список параметров для сопоставления пользователей (разделители списка — символы "," или ";" или ":")

GroupMapping

Список параметров для сопоставления групп (разделители списка — символы "," или ";" или ":")

UnitMapping

Список параметров для сопоставления орг. единиц (разделители списка — символы "," или ";" или ":")

В полях UserMapping, GroupMapping и UnitMapping параметры перечисляются в том порядке, в котором они используются для поиска подходящей записи в БД. Например, при сопоставлении пользователей (поле UserMapping) сначала выполняется поиск по Guid; если подходящий пользователь найден, то поиск останавливается, а если не найден, то выполняется поиск по имени (Name), и так далее.

Импорт данных из Контур.Фокус

При интеграции с Контур.Фокус могут быть использованы следующие модели записи импорта: Расширенная аналитика из Контур.Фокус, Экспресс-отчет по контрагенту из Контур.Фокус, Показатели бухгалтерской отчетности из Контур.Фокус, Контакты из Контур.Фокус, Выписка из ЕГРЮЛ/ЕГРИП из Контур.Фокус, Финансовый анализ бухгалтерской отчетности из Контур.Фокус, Актуализация реквизитов из Контур.Фокус

data_import-6

Настройки модуля чтения. Импорт расширенной аналитики из Контур.Фокус

Пользовательские настройки:

Название

Описание

Ключ доступа

Key (string). Ключ доступа к Контур.Фокусу

Id ДП содержащий ИНН

InnExtParamId (int). ID параметра в "Первой Форме", в котором находится значение ИНН

Id ДП содержащий ОГРН

OgrnExtParamId (int). ID параметра в "Первой Форме", в котором хранится значение ОГРН

Примеры импорта из Контур.Фокус

Модули записи

Задачи по номеру, Задачи по GUID

Настройки модуля записи, поиск задачи по номеру:

data_import-7

Настройки модуля записи. Поиск задачи по номеру или по GUID

Пользовательские настройки:

Название

Описание

Категория

ID категории для импортируемых задач

Текст задач по умолчанию

Текст, который проставляется для импортируемых задач (например, Договор)

warning_icon  Поиск задачи по GUID используется в том случае, если синхронизация данных с внешней системой происходит регулярно (т.е. повторяется не один раз) и необходимо обновлять ранее загруженные задачи. Использование номера задачи в этом случает невозможно, т.к. значение TaskID генерируется только при создании задачи в "Первой Форме", а во внешней системе этого параметра нет.

Задачи по ключевым доп. параметрам

Настройки модуля записи. Поиск задачи по ключевым ДП:

data_import-8

Настройки модуля записи. Поиск задачи по ключевым ДП

Пользовательские настройки:

Название

Описание

Категория

ID категории для импортируемых задач

Текст задач по умолчанию

Текст, который проставляется для импортируемых задач (например, Договор)

Многопоточность

Доступные значения: True\False. При включенном режиме многопоточности обработка импортируемых задач будет производиться параллельно в произвольном порядке. Поэтому многопоточность необходимо отключать, если нужно сохранить оригинальный порядок данных. Количество потоков никак не ограничивается и определяется количеством доступных ресурсов. (Для разработчиков — используется метод Parallel.ForEach.)

OrgStructureWriter (Импорт орг.единиц)

Используются для импорта орг. единиц из внешней системы в "Первую Форму". В зависимости от источника данных, маппинг настраивается на колонки файла Excel или поля таблицы БД.

data_import-9

Настройки модуля записи, импорт орг.единиц

Пользовательские настройки:

Название

Описание

Id корневой орг. единицы

ID орг. единицы, в рамках которой выполняется синхронизация. Если не указан — синхронизация выполняется для всей орг.структуры

Помечать не пришедшие орг. единицы, как не актуальные

True\False. По умолчанию False. Режим True позволяет помечать неакутальными те орг. единицы, которые не пришли из внешнего источника данных.

Если для существующей орг. единицы не найдено соответствие в данных, пришедших из внешнего источника, то при включенном режиме (True) такая орг. единица помечается как неактуальная, а при выключенном режиме (False) сохраняет свое текущее состояние

Особенности синхронизации:

Маппинг орг.единицы выполняется по полю ExternalId. Если соответствие с орг.единицей найдено, то она обновляется, если не найдено — создается

Маппинг родительской орг.единицы выполняется по полю ParentExternalId, внутри ветки с указанной корневой орг.единицей (родительская орг.единица также должна находиться внутри этой ветки)

Если родительская орг.единица указана и найдена, то она устанавливается как родительская для обновляемой\создаваемой орг. единицы

Если родительская орг. единица указана, но не найдена — у обновляемой орг. единицы родительская орг. единица не меняется (остается как было)

Если родительская орг. единица не указана, а в настройках указан Id корневой орг. единицы, то эта корневая орг. единица назначается родительской для текущей

Если родительская орг. единица не указана и Id корневой орг. единицы не указан в настройках, то текущая орг. единица остается без родительской орг. единицы

Возможные поля для маппинга при загрузке орг. единиц:

Поле

Тип

Описание

Обязательность

Что может содержать

Name

string

Название

обязательно

строка

Description

string

Описание


строка

ExternalId

string

Внешний идентификатор

обязательно

строка

ParentExternalId

string

Внешний идентификатор родительской орг. единицы


строка

TypeId

int

Id типа орг. структуры в "Первой Форме"


число

IsDirector

bool

Является руководителем


"true", "yes", "да" / "false", "no", "нет"

UsersWriter (Импорт пользователей)

Используются для импорта пользователей  из внешней системы в "Первую Форму". В зависимости от источника данных, маппинг настраивается на колонки файла Excel или поля таблицы БД.

data_import-10

Настройки модуля записи, импорт пользователей

Возможные поля для маппинга при загрузке пользователей:

Поле

Тип

Описание

Обязательность

Что может содержать

Nick

string

Логин

обязательно

строка

LastName

string

Фамилия

обязательно

строка

FirstName

string

Имя


строка

MiddleName

string

Отчество


строка

Phone

string

Телефон


строка

Phone2

string

Телефон


строка

Phone3

string

Телефон


строка

IsFired

bool

Уволен


"true", "yes", "да" / "false", "no", "нет"

SignsAllOwnedTasks

bool

Требует акцепта всех своих задач для перехода в статусы с акцептом заказчика


"true", "yes", "да" / "false", "no", "нет"

Email

string

Email

обязательно

строка

ExternalEmail

string

Внешний email


строка

ComputerName

string

Имя компьютера


строка

RoomID

int

Id комнаты


целое число

DisplayName

string

Псевдоним (рус)

обязательно

строка

EnglishDisplayName

string

Отображаемое имя на английском


строка

ExternalDisplayName

string

Внешнее отображаемое имя


строка

Password

string

Пароль


строка

LanguageID

int

Id языка интерфейса (1 — русский, 0 — английский)


целое число

CellPhone

string

Мобильный


строка

HomePhone

string

Домашний


строка

Fax

string

Факс


строка

Skype

string

Скайп


строка

ICQ

string

ICQ


строка

LiveJournal

string

Живой Журнал


строка

Twitter

string

Twitter


строка

IsEmployee

bool

Cотрудник компании


"true", "yes", "да" / "false", "no", "нет"

CanEditWorkInfo

bool

Mожет редактировать блок Рабочее


"true", "yes", "да" / "false", "no", "нет"

CanEditGeoInfo

bool

Mожет редактировать блок География


"true", "yes", "да" / "false", "no", "нет"

CanEditContactsInfo

bool

Mожет редактировать блок Контакты


"true", "yes", "да" / "false", "no", "нет"

BirthDate

datetime

День рождения


dd.MM.yyyy HH:mm

WorkStartDate

datetime

Дата начала работы в компании


dd.MM.yyyy HH:mm

Country

string

Страна


строка

City

string

Город


строка

DisableMail

bool

Отключить почту


"true", "yes", "да" / "false", "no", "нет"

Gender

bool

Пол (1 — мужчина, 0 — женщина)


"true", "yes", "да" / "false", "no", "нет"

SIP

string

SIP номер


строка

SIP_Password

string

SIP пароль


строка

SIP_Host

string

SIP домен


строка

SIP_Port

string

SIP порт


строка

SIP_Host_Reserve

string

SIP резервный домен


строка

SIP_Port_Reserve

string

SIP резервный порт


строка

SIP_Account

string

SIP аккаунт


строка

Notes            

string

Заметки


строка

SID

string

SIP в Active Directory


строка

GuidFrom1C

string

Guid в 1С


GUID

DoSyncWithExchange

bool

Синхронизировать с Exchange


"true", "yes", "да" / "false", "no", "нет"

AutoReadCommentsInTask

bool

Автопрочтение сообщений при просмотре задачи


"true", "yes", "да" / "false", "no", "нет"

PhoneAdditional

string

Дополнительный телефон


строка

Phone2Additional

string

Дополнительный телефон


строка

Phone3Additional

string

Дополнительный телефон


строка

HomePhoneAdditional

string

Дополнительный телефон


строка

Guid

string

Guid


GUID

MaidenName

string

Девичья фамилия


строка

DomainController

string

Домен Active Directory


строка

TimeZoneId

string

Id временной зоны


строка

PrimaryOrgStructureUnitId

int

Основная орг. Единица


целое число

PrimaryOrgStructureUnitExternalId

string

Ключ основной орг.единицы для синхронизации


строка

CanEditAvatar

bool

Может менять аватар


"true", "yes", "да" / "false", "no", "нет"

CanEditPassword

bool

Может менять пароль


"true", "yes", "да" / "false", "no", "нет"

IsInMaternityLeave

bool

В декретном отпуске


"true", "yes", "да" / "false", "no", "нет"

RestrictCellPhoneView

bool

Ограничить видимость телефона


"true", "yes", "да" / "false", "no", "нет"

AllowChangeDisplayNameMode

bool

Может менять режим отображения имен


"true", "yes", "да" / "false", "no", "нет"

DisableMailWhenOnline

bool

Не присылать почтовые сообщения когда онлайн


"true", "yes", "да" / "false", "no", "нет"

DisableMailWhenWorkTime

bool

Не присылать почтовые сообщения в рабочее время


"true", "yes", "да" / "false", "no", "нет"

DisableMailWhenAbsence

bool

Не присылать почтовые сообщения когда отсутствует


"true", "yes", "да" / "false", "no", "нет"

AutoReadComments

bool

Автопрочтение сообщений


"true", "yes", "да" / "false", "no", "нет"

AutoReadCommentsInMTF

bool

Автопрочтение сообщений в МТФ


"true", "yes", "да" / "false", "no", "нет"

DoNotUseGeolocation

bool

Не использовать геолокацию


"true", "yes", "да" / "false", "no", "нет"

HideBirthYear

bool

Скрыть год рождения


"true", "yes", "да" / "false", "no", "нет"

UserText

string

Персональная информация


строка

UserNameModeId

int

Режим отображения имен


целое число

BusinessFunctions

string

Функционал


строка

Настройки маппинга

term_icon Маппинг — это описание соответствий между импортируемыми данными и объектами "Первой Формы", в которые эти данные записываются. Для каждого импортируемого элемента создается отдельная строка маппинга.

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

Маппинг настраивается в окне настроек импорта.

data_import-11

Маппинг в окне настроек импорта

Нажмите на кнопку Создать для добавления нового соответствия.

data_import-12

Форма создания маппинга

Настройки маппинга (шапка таблицы настроек):

Название

Описание

Внешний идентификатор

Имя поля во внешней системе:

Колонка CSV или Excel, поле в SQL;

Для импорта из другого приложения "Первая Форма":

oTaskId — ID задачи

oText — Текст задачи

oResponsibleId — ID ответственного исполнителя

oOwnerId — ID заказчика

oStepId  — ID перехода на маршруте задачи

oepXXX — Для ДП, где XXX — ID ДП

oepXXX_ZZZ — Для столбца ДП "Таблица", где XXX — ID ДП "Таблица", а ZZZ — ID столбца таблицы

warning_icon  Имя внешнего идентификатора чувствительно к регистру (например, TaskId правильно, TaskID — нет)

Идентификатор в "Первой Форме"

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

Для номера задачи указывается TaskId (вводится вручную)

ДП выбираются из выпадающего списка (по ID ДП)

При импорте пользователей и оргструктуры — поле таблицы БД в "Первой Форме" (выбирается из выпадающего списка, см. описание).

warning_icon  Значения не отображаются в списке доступных, если они уже были выбраны ранее в данном импорте

Тип поля

Сущность, к которой относятся данные:

Task — Для TaskId

ExtParam — Для ДП

GUID — Для ДП типа Lookup при импорте из CSV

OrgStructure — Для орг. единицы

User — Для пользователя

File — Для файла

TableColumn — Для колонки ДП "Таблица" (используется только в заказных модулях импорта)

Тип данных

Тип импортируемых данных (практически всегда можно указывать String)

Возможные значения:

String

Integer

Boolean

Date

DateTime

Double

Lookup

Address

File

Guid

Ключ

Признак, является ли поле ключом для импортируемой сущности

Пример настройки маппинга данных:

mapping_ex

Пример настройки маппинга данных

Полезные ссылки