Show/Hide Toolbars

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

Примеры работы на уровне БД

Ссылки Назад Вверх Вперед

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

Пример обмена данными с Microsoft Dynamics NAV

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

Пример односторонней синхронизации — получение данных о поступивших платежах из NAV.

Пример двусторонней синхронизации — выгрузка смет и загрузка данных по бюджетам, утвержденным для этих смет (в этом примере, помимо двустороннего обмена, рассматривается синхронизация ДП "Таблица").

Логирование при обмене данными на уровне SQL

Обмен данными между двумя системами на уровне БД выполняется с помощью запуска хранимых процедур SQL. Запуск хранимых процедур выполняется либо по триггеру (при наступлении определенного события), либо по расписанию. При работе по расписанию администраторам важно контролировать, когда состоялся последний запуск хранимой процедуры и сколько записей было обработано. Это поможет им выявить ошибки — если запуск процедуры по каким-то причинам не произошел или если количество записей, которое было обработано, существенно отличается от среднестатистического.

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

sql_log_table

Таблица с журналом обмена данными

Пример процедуры записи в журнал

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

Пример вызова процедуры записи в журнал

Данные из таблицы — журнала обмена — могут выводиться на портал администратора, например, в портальном блоке "Таблица".

Получение данных о платежах

Рассмотрим пример одностороннего обмена данными — данные о поступивших платежах регистрируются в NAV и передаются в "Первую Форму", в категорию "Платежи" (каждый платеж записывается в отдельную задачу).

1. В БД "Первой Формы" создается промежуточная таблица _NAVISION_PAY_NAV.

Поле

Тип

Описание

Row_ID

int

Номер записи в промежуточной таблице

NAV_ID

nvarchar(20)

Идентификатор платежа в NAV

1F_ID

nvarchar(20)

Идентификатор платежа в "Первой Форме" (ID задачи в категории "Платежи")

Status

tinyint

Статус синхронизации:

1 — новая запись,

2 — действует,

3 — отредактировано в 1Форме, ожидает синхронизации,

4 — запись удалена,

5 — не синхронизировано (ошибка)

Contragent,

Smeta,

State_bud,

Sum,

Curr,

Date_pay,

Comment


Любые необходимые данные о платеже, например:

Контрагент,

Номер сметы,

Статья бюджета,

Сумма платежа,

Валюта платежа,

Дата платежа,

Назначение платежа

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

1f_nav_pay_new

Смарт-расписание для синхронизации платежей

Пример процедуры для загрузки новых платежей

Пример процедуры для обновления существующих платежей

Обмен данными о сметах

Рассмотрим пример двустороннего обмена данными — сметы создаются и редактируются в "Первой Форме" и передаются в NAV; из NAV поступают данные по бюджетам, выделенным по сметам.  Работа ведется в категории "Сметы", в каждой задаче есть табличный ДП "Финансы" с колонками "Статья затрат", "Сумма к оплате", "Оплачено", "Дата оплаты" (при необходимости в таблицу могут быть добавлены и другие колонки — например, ссылка на договор, ссылка на контрагента, номер платежа и пр.).

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

1. В БД "Первой Формы" создаются две промежуточные таблицы.
Промежуточная таблица для синхронизации задач _NAVISION_Smeta_NAV:

Поле

Тип

Описание

Row_ID

int

Номер записи в промежуточной таблице

NAV_ID

nvarchar(20)

Идентификатор сметы в NAV

1F_ID

nvarchar(20)

Идентификатор сметы в "Первой Форме" (ID задачи в категории "Сметы")

Status

int

Статус синхронизации:

1 — новая запись,

2 — отредактирован в NAV, ожидает синхронизации,

3 — действует,

4 — отредактирован в 1Форме, ожидает синхронизации,

5 — не синхронизировано (ошибка)

 

Period,

Department


Любые необходимые данные о смете, например:

Период,

Подразделение

Промежуточная таблица для синхронизации табличного ДП "Финансы" _NAVISION_Smeta_table_NAV:

Поле

Тип

Описание

Row_ID

int

Номер записи в промежуточной таблице

NAV_ID

nvarchar(20)

Идентификатор сметы в NAV

1F_ID

nvarchar(20)

Идентификатор сметы в "Первой Форме" (ID задачи в категории "Сметы")

Status

int

Статус синхронизации:

1 — новая запись,

2 — отредактирован в NAV, ожидает синхронизации,

3 — действует,

4 — отредактирован в 1Форме, ожидает синхронизации,

5 — не синхронизировано (ошибка)

State_bud

int

Статья бюджета

Sum

decimal(38,2)

Сумма к оплате

Sum_pay

decimal(38,2)

Оплачено

Date_pay

datetime

Дата оплаты

2. В категории "Сметы" настраивается автоматизация на переходах:

на переходе "Отправить в NAV" выполняется отправка изменений в NAV,

на переходе "Внести изменения" изменения, внесенные в смету, отражаются в промежуточных таблицах.

1f_nav_smeta_onstep

Автоматизация на переходах

Пример процедуры записи изменений по сметам в промежуточную таблицу

Пример процедуры записи изменений ДП "Финансы" в промежуточную таблицу

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

1f_nav_smeta_ontime

Смарт-расписание для синхронизации смет

1f_nav_smeta_new

Пакет для отправки данных в NAV

1f_nav_smeta_upd

Пакет для получения данных из NAV

Пример процедуры для передачи новых смет в NAV

Пример процедуры для передачи в NAV ДП "Финансы" из новых смет

Пример процедуры для получения изменений из NAV

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