gifts2017

Z-Integrator: интеграция с 1С на уровне данных

Опубликовал Дмитрий Жичкин (zhichkin) в раздел Обмен - Обмен с другими системами

Z-Integrator - это программный модуль для интеграции с прикладными решениями, разработанными на платформе 1С:Предприятие 8. При помощи этого модуля можно построить систему обмена данными практически любой сложности. Существует возможность расширять функциональность модуля своими решениями, разработанными на языке C#.
Z - это программа, которая состоит из облочки (shell) и подключаемых к ней модулей. Z основана на Microsoft Prism 5.
Основная цель Z: увеличение производительности и расширение функциональных возможностей приложений, разработанных на платформе 1С:Предприятие 8. Эти цели достигаются за счёт тесной интеграции Z и 1С на уровне структур хранения данных, а также использования в полной мере возможностей Microsoft SQL Server и .NET Framework 4.5.
Подробнее программа описана в документации по проекту.
Актуальный список модулей:
1. Z-Metadata - базовый независимый модуль.
Позволяет работать с метаданными приложений, разработанных на платформе 1С:Предприятие 8, а так же любых других приложений, хранение данных которых реализовано при помощи Microsoft SQL Server. Содержание метаданных: описание модели предметной области приложения (domain model) и структур хранения данных объектов этой модели.
2. Z-Integrator - зависимый от Z-Metadata модуль.
Модуль решает следующие задачи:
- регистрация изменений данных объектов 1С:Предприятие 8 (SQL Server Change Tracking);
- публикация изменений в виде сообщений (Microsoft Message Queuing);
- управление подписками на сообщения;
- сериализация/десериализация сообщений;
- трансляция сообщений при несовпадении схем данных источника и получателя;
- загрузка сообщений в базу данных приёмника (подписчика);
- двусторонний обмен данными;
- разрешение коллизий по умолчанию.
3. Z-REST-API (модуль находится в разработке).
Конструктор REST API интерфейса для произвольной конфигурации 1С:Предприятие 8.
4. Z-Archivator (модуль находится в разработке).
Архивация данных 1С:Предприятие 8 (свёртка данных) средствами SQL Server.
5. Z-Updator (модуль находится в разработке).
Обновление структур данных 1С:Предприятие 8 (выполнение реструктуризации) средствами SQL Server. Модуль решает проблему обновления без потери пользовательских индексов, триггеров и т.п.
Возможна доработка программы под заказ.
Технологические особенности:

Технология SQL Server Change Tracking позволяет минимизировать нагрузку на систему при одновременном увеличении производительности операций регистрации изменений. Технология была специально разработана для использования в сценариях синхронизации и интеграции данных с учётом обеспечения макимально возможной производительности. Использование Change Tracking полностью исключает возникновение ожиданий на блокировках при одновременном выполнении операций записи и чтения изменений.

Расширяемость Z-Integrator позволяет создавать высоко производительные решения по интеграции с 1С:Предприятие 8 любого уровня сложности, используя всю мощь .NET Framework и SQL Server.

Скачать файлы

Наименование Файл Версия Размер
Z-Integrator 7
.zip 1,89Mb
26.10.16
7
.zip 1.0 MSMQ 1,89Mb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Геннадий Жаркой (ifal) 23.10.16 15:20
Очень интересно решение для однотипных баз. Жаль требования 1С к свой лицензионной политике не разрешает такие вещи, что, конечно, не справедливо, когда у организации куплено такое ПО как MS SQL Server. Интересно, а как решаются коллизии данных? по тем же правилам, что и в 1С? В описании ничего такого не нашел, получается нельзя построить по правилу, когда подразделение меняется что-то в своих документах, то это в приоритете?
2. Дмитрий Жичкин (zhichkin) 23.10.16 16:10
(1) ifal,
Реализована следующая стратегия разрешения коллизий:

1. Всегда применяется правило "кто последний, тот и выиграл". То есть, если в базу приёмник приходит сообщение обновления, то версия записи в приёмнике не анализируется, она просто перезаписывается. Таким образом считается, что источник всегда последний и он всегда прав. Какой из узлов обмена А или В в данный момент является источником или приёмником определяется по направлению движения для конкретного сообщения обмена, которое обрабатывается в данный момент времени. Если сообщение движется из А в В, то А - это источник, а В - приёмник и, соответственно, наоборот.

2. Если из источника в приёмник приходит сообщение вставки новой записи (insert), а в приёмнике запись с такими ключевыми полями уже есть, то источник снова считается последним и, соответственно, победителем в разрешении коллизии - insert превращается в update. Такая ситуация может возникнуть, например, тогда, когда в приёмнике завели цену в регистр сведений "Цены номенклатуры", а в источнике тоже завели по тем же ключевым значениям (новым в этом момент для источника) цену. В приёмник "летит" insert, но там уже есть такая запись - ошибка дублирования ключа превращается в обновление.

3. Если из источника в приёмник "летит" update, но там нет такой записи, например её удалили или её там вообще никогда не существовало (такую коллизию называют update-delete), то update превращается в insert - запись успешно добавляется в приёмник.
3. Дмитрий Жичкин (zhichkin) 23.10.16 16:16
(1) ifal,
Правила разрешения коллизий бывают очень сложными. Зачастую они сильно зависят от бизнес-логики прикладного решения. В каждом случае нужно разбираться отдельно. Предложения по добавлению настроек какой-то более или менее типовой логики разрешения коллизий приветствуются =)
4. Евгений Маляров (unpete) 24.10.16 09:47
(0), Изобретение велосипедов - деятельность вполне достойная. Зачастую - необходимая.
Без этого сложно понять условия задачи и математику альтернативных решений, но зачем результаты лабораторной работы помещать в production?
Почитайте про репликацию couchdb - это позволить направить вашу энергию в мирное русло.
В 2014-15 годах, я потратил более 2 тыс. человекочасов на собственный движок обмена, но познакомившись с couchdb - выкинул бОльшую часть проделанной работы на помойку, задействовав простые, изящные и современные технологии.
5. Константин Соболевский (Константин С.) 24.10.16 10:20
(бесплатная версия для ознакомления)

Вот интересно было узнать, цену вопроса не для ознакомления)

А то от количества нулей можно !!!!
6. Дмитрий Жичкин (zhichkin) 24.10.16 12:02
(5) Константин С.,
Выпуска платной версии не планируется. Планируется создание более или менее удобного инструмента для реализации проектов по интеграции на стыке технологий 1С:Предприятие 8 + .NET Framework (C#) + MS SQL Server. В том числе с учётом SOA (service-oriented architecture). Соответственно ответ такой: присылайте свои требования по проекту - дам оценку.
7. Дмитрий Жичкин (zhichkin) 24.10.16 12:09
(4) unpete,
Я прошу прощения, но я совсем не понял Ваш комментарий. PR couchdb ? Сравнение тёплого с мягким ? По моему упоминание SQL Server Integration Services было бы более к месту. Кроме того, моя публикация больше про интеграцию, чем про репликацию.
8. Артур Аюханов (artbear) 02.11.16 19:55
9. Maratimus Arslan (maratimus) 30.11.16 23:19
А есть такая же, но сделанная по технологии "Temporal Tables", а не "Change Tracking"?
10. Дмитрий Жичкин (zhichkin) 01.12.16 00:44
(9) Какой у Вас use case ?
Мне кажется, что именно для обмена данными temporal tables ... как узнавать что данные по строке изменились ? Запрашивать все строки таблицы на предмет наличия версий в исторической таблице ? Тяжёлый может быть запрос ...
Или есть какой-то простой и достаточно лёгкий способ получить именно изменённые на какой-то момент времени строки ?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа