Опыт настройки Navision + SQL Server для консолидации финансовой отчетности по стандартам МСФО
Хочу поделиться опытом настройки репликации на основе MS SQL Server , который я в свое время нигде не нашел и вымучивал по шагам, спотыкаясь буквально на каждом =)
Описывать буду основные моменты, чтобы быть хоть как-то лаконичным…
Сразу опишу ту задачу, которую необходимо было решить.
Постановка задачи
Задача: Существует много филиалов компании в разных странах, с индивидуальными планами счетов в каждой. Также существует единый международный план счетов, принятый в головной компании. Задача стоит в создании базы данных, куда бы сливалась финансовая информация со всех филиалов компании в формате международного плана счетов.
Предлагаемое решение
С технической точки зрения задача решается следующим образом.
В каждой стране, где существуют филиалы компании, ставится база Navision формата SQL.
В этой базе создается столько фирм, сколько юридических лиц зарегистрировано в конкретной стране + 1.
Одна дополнительная фирма создается для сливания в нее финансовых операций в международном формате из фирм, в рамках текущей БД.
Пишется процедура, которая посредством NAS раз в определенный промежуток времени собирает данные и делает мэппинг плана счетов на международный. Принадлежность конкретной операции к конкретной компании ведется в разрезе измерений. Эти действия нужно проделать для каждой страны.
В головной организации создается база Navision формата SQL, предназначенная исключительно для целей сбора в себе финансовых данных из баз отдельных стран.
Внимание! В этой базе нужно создать компании, названия которых в точности повторяют названия дополнительных компаний из БД отдельных стран + 1 дополнительная компания, которая служит для сливания данных из фирм, в рамках текущей БД.
Запускается процедура, которая посредством NAS раз в определенный промежуток времени собирает данные.
Схема решения
Всю сложность организации опишем схематично:

- В красных квадратах – базы данных.
- В красных овалах – фирмы.
- Связь между фирмами с одинаковыми названиями – репликация на основе SQL.
- Связь между фирмами в рамках одной БД – процедура, которая посредством NAS раз в определенный промежуток времени собирает данные.
Теперь о самом интересном.
Настройка SQL репликации
1) Таблица в которую переливаем данные должна:
- минимальное требование, не иметь полей, которых нет в таблице, из которой переливаем данные;
- максимальное требование, иметь все поля, которые есть в таблице, из которой переливаем данные;
2) Существует три понятия, о которых нужно иметь представление. Подробно про них можно почитать в справке по SQL («SQL Server Books Online»), а в двух словах:
- дистрибуция: отвечает за отслеживание всех изменений в базе данных;
- публикация: отвечает за выкладывание баз данных для скачивания данных;
- подписка (субскрипция): отвечает за скачивание данных.
3) Для начала на SQL Server’е, на котором стоит международная единая база, настраиваем дистрибуцию. Replication -> Distribution. В этой настройке нужно обозначить все сервера в каждой конкретной стране.
4) Настраиваем Публикацию на серверах отдельных стран. Replication -> New Publication. Тип – Transactional. Почему именно такой? На самом деле методом как раз собственных проб и ошибок. Для сливания данных он подходит идеально.
- выбираем те таблицы, которые будем реплицировать;
- выбираем те поля, которые будем реплицировать.

Напоминаю требования к таблицам: обязательно нужно выбрать все поля, которые есть в итоговой таблице, и нельзя выбирать поля, которых нет в итоговой таблице.
5) Настраиваем Subscription на SQL Server’е, на котором стоит международная единая база:
- запускаем с Дистрибутора этого сервера (чтобы все подписки запускались с одного места);
- настраиваем по времени, допустим, раз в час.
Вот, пожалуй, все, что вспомнилось. Если вдруг возникли какие-то вопросы, постараюсь помочь.
Другие статьи на тему репликации — «К вопросу о репликации Navision средствами SQL Server» и «Построение репликации в Navision»

Автор: Андрей Стрельников
В области Navision - с 2003 года. Профессиональные интересы: NAV, MS SQL, .NET, BPMN, IT-менеджмент. Предметная область: логистика, финансы, склады, 3PL.
Количество статей, опубликованных автором: 86.
[…] статьи на тему репликации – «Опыт настройки Navision + SQL Server для консолидации финансово…» и «К вопросу о репликации Navision средствами SQL Server» […]