Контроллер для Конвертации (Синхронизации) данных

30.09.21

Интеграция - Обмен между базами 1C

Как-то раз надоело мне вручную контролировать успешность завершения синхронизаций. И решил запилить этот процесс как автоматический.

Скачать исходный код

Наименование Файл Версия Размер
Контроллер для Конвертации (Синхронизации) данных.:
.cf 6,18Mb
2
.cf 6,18Mb 2 Скачать

Что было в начале:

  1. Десяток различных баз с разными конфигурациями. Базы менялись данными. Было около 20 различных комбинаций баз в обменах
  2. Конфигурацию "Конвертация данных 2" для настройки правил обмена между ними.
  3. Полу-ручной процесс контроля за проведением синхронизаций. Было расширение модуля обработки КонвертацияОбъектовИнформационныхБаз, которое отсылало письмо в случае сбоя при обмене. Но это не всегда работало и не во всех базах было сделано. Поэтому приходилось периодически заглядывать в каждую базу и проверять синхронизацию. Что и надоело.

Что было сделано:

  1. Было проведено исследование баз. Выяснилось, что так как большая часть из них была сделана на БСП, то они содержали ВЕБ-сервис, который позволял запускать синхронизацию данных. В остальные БСП была внедрена.
  2. Было решено сделать единый центр, который бы контролировал все обмены между базами. За основу была взята конфигурация "Конвертация данных 2". В нее были включены нужные для работы автоматической синхронизации объекты.

Как это работает:

  1. У вас должны быть базы для обмена.
  2. Базы должны быть опубликованы на Веб-сервере. Должен быть опубликован сервис Exchange_2_0_1_6. Через него осуществляется обмен данными.
  3. Серверы 1С должны уметь работать с СОМ-контроллером comcntr.dll. Через него осуществляется обновление правил обмена.
  4. Надо создать правила обмена. Эта часть работы Конвертации данных не изменилась – смотрите документацию. Если правила уже есть, то необходимо их загрузить в Конвертацию.
    В любом случае далее я предполагаю, что Синхронизация данных (хотя бы через Сетевой каталог, а лучше в Прямом подключении) уже выполняется. Эта конфигурация для контроля этого процесса.
    Внимание! В обработчики конвертаций «Перед выгрузкой данных»  и «После загрузки данных» должны быть добавлены строки кода (см. ниже).

 

  1. Надо описать базы обмена. Это делается в справочнике «(МАС) Информационные базы».

    - Конфигурация – какая конфигурация используется.
    - Строка соединения – строка соединения с БД. Берется из 1С-стартера.
    - Строка соединение WSDL – строка соединения с ВЕБ-публикацией сервиса Exchange_2_0_1_6, включая параметр WSDL.
    - Пользователь – пользователь 1С базы. Я обычно даю таким пользователям полные права.
    - Пароль – пароль пользователя 1С.
    - Код узла общий – код узла синхронизации в базе. Он же «префикс информационной базы». Можно посмотреть на настройках синхронизации:

  2. Надо описать какие правила обмена (конвертации) и регистрации используются. Это делается в справочнике «(МАС) Пакеты правил обмена».

    - Конвертация – какие правила обмена используются при обмене из базы-А в базу-Б.
    - Обратная конвертация - какие правила обмена используются при обмене из базы-Б в базу-А.
    - Правила регистрации – какие правила регистрации используются для плана обмена в базе-А.
    - Обратные правила регистрации - какие правила регистрации используются для плана обмена в базе-Б.
  3. Надо описать работу для обмена. Это делается в справочнике «(МАС) Настройки обмена».

    - База-источник и База-приемник – описания баз которые обмениваются данными. Постфикс «источник» и «приемник» в названии полей условны. Происходит полный обмен данными между базами (см ниже).
    - Пакет правил – описание правил обмена.
    - Отдельный код узла источника, Отдельный код узла приемника – заполняется, если при настройки синхронизации в момент описания узлов ввели коды узлов, отличных от префикса ИБ (лучше так не делать…)
    - Не сохранять данные обмена – не используется.
    В случае необходимости можно задать расписание обмена данных.
    Разделение справочников «Пакеты обмена» и «Настройки обмена» обусловлена тем, что у меня есть несколько разных баз у которых конфигурация одинаковая. Т.е. можно на один пакет правил повесить несколько настроек обменов разных баз.
  4. Проверяем настройки:
    1. В настройке пакета данных нажимаем «Создать новый пакет». Создается новые правила обмена между узлами.
    2. Записываем элемент.
    3. Нажимаем «Обновить правила обмена». Произойдет обновление правил обмена в базах, связанных с обменом. О результатах этой работы можно судить по логу, который выдается после окончания работы процедуры:
      Правильный результат - должна быть строка «Правила установлены!». Если ее нет, значит произошли ошибки…
      Наиболее частая ошибка на этом шаге – сервер 1С не может работать через COM-контроллером comcntr.dll. Вторая ошибка – коды узлов синхронизации данных отличны от заданных в настройках ИБ или настроек обмена.
    4. В настройках обмена нажимаем «Запустить обмен». Запустится процедура обмена, о результатах которой можно судить по логу, который выдается после окончания работы процедуры.
  5. Обработка ошибок обмена. В случае неудачного обмена данными формируется информационное письмо и отправляется оператору, который следит за обменами. Настройки почтовой отправки находятся в константах Конвертации.

Используемая процедура обмена:

  1. При запуске процедуры происходит проверка доступности веб-сервисов Exchange_2_0_1_6. Если они не доступны, то процедура прерывается.
  2. Базе источнику по веб-сервису дается команда на создание файла выгрузки данных. Этот файл (точнее его содержимое) является результатом выполнения команды. Если возникла ошибка, то обмен прерывается, и мы смотрим файл лога.
  3. Базе приемнику по веб-сервису дается команда принять файл данных (из источника). Если возникла ошибка, то обмен прерывается, и мы смотрим файл лога.
  4.  Базе приемнику по веб-сервису дается команда на создание файла выгрузки данных. Если возникла ошибка, то обмен прерывается, и мы смотрим файл лога.
  5. Базе источнику по веб-сервису дается команда принять файл данных (из приемника). Если возникла ошибка, то обмен прерывается, и мы смотрим файл лога.
  6. В файл лога добавляются данных о сообщениях при обмене.
  7. После обмена (не важно с ошибками или без) лог-файл сохраняется в регистре (МАС) Пакеты обмена.

Обработка результатов обмена

При обработке результатов обмена используются лог-файл, который генерируется в процессе обмена данными. При получении данных из базы к данному логу добавляется сообщения 1С, которые выходят клиенту обмена. Для того, чтобы наладить трансфер этих сообщений между базами и базой Конвертация существует каталог, куда сохраняются эти сообщения. Каталог настраивается в константе «(МАС) Каталог логов обмена» Конвертации. Каталог должен оканчиваться на «\» (обратный слеш)!

Об общих результатах работы можно судить, просто посмотрев данные регистра «(МАС) пакеты обмена»:

Красные – прерванные по каким-то причинам обмены.
Желтые – в результате приема данных вышли предупреждения.

Доработка правил обмена.

В обработчике «Перед выгрузкой данных» можно (по желанию) добавить программный код 

//ЮМС++ для шины данных

текСеанс = НомерСеансаИнформационнойБазы();
сеансыИБ = ПолучитьСеансыИнформационнойБазы();

Для Каждого сеансИБ Из сеансыИБ Цикл
                Если сеансИБ.НомерСеанса = текСеанс Тогда
                               чНомерСоединения = сеансИБ.НомерСоединения;
                               Прервать;
                КонецЕсли;
КонецЦикла;

_соединенияИБ = ПолучитьСоединенияИнформационнойБазы();
Для Каждого _соединениеИБ Из _соединенияИБ Цикл
                Если _соединениеИБ.НомерСоединения = чНомерСоединения Тогда
                               Если _соединениеИБ.ApplicationName = "COMConnection" Тогда
                                               ВызватьИсключение("Данный обмен можно запускать только из базы Srvr=""srvr-68"";Ref=""conversion2"";");
                               КонецЕсли;
                КонецЕсли;
КонецЦикла;

//ЮМС--

 

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

 

В обработчике «После загрузки данных» НУЖНО добавить следующий код:
 

//ЮМС++ Для шины данных
Лог = Новый ТекстовыйДокумент();

//чтение соообщений
мсСообщения = ПолучитьСообщенияПользователю();
Лог.ДобавитьСтроку(">>>>>>>>>>>>>>>>>>> Сообщения пользователю");
Для каждого сообщение Из мсСообщения Цикл
                Лог.ДобавитьСтроку(сообщение.Текст);
КонецЦикла;
Лог.ДобавитьСтроку("<<<<<<<<<<<<<<<<<<< Сообщения пользователю");

//чтение ошибок и предупреждений из журнала регистрации
Лог.ДобавитьСтроку(строка(ТекущаяДата())+": Получение данных сеансов");
чНомерСеанса = НомерСеансаИнформационнойБазы();
текСеанс = Неопределено;
мсСеансы = ПолучитьСеансыИнформационнойБазы();

Для каждого сеанс Из мсСеансы Цикл
                Если сеанс.НомерСеанса = чНомерСеанса Тогда
                               текСеанс = сеанс;
                               Прервать;
                КонецЕсли;
КонецЦикла;

Если текСеанс<>Неопределено Тогда
                Лог.ДобавитьСтроку(строка(ТекущаяДата())+": Получение данных журнала регистрации");
                тз = Новый ТаблицаЗначений();
                стОтбор = Новый Структура();
                стОтбор.Вставить("ДатаНачала", текСеанс.НачалоСеанса);
                стОтбор.Вставить("Сеанс", текСеанс.НомерСеанса);
                ВыгрузитьЖурналРегистрации(тз, стОтбор);

                Лог.ДобавитьСтроку(строка(ТекущаяДата())+": Обработка данных журнала регистрации");
                Лог.ДобавитьСтроку(">>>>>>>>>>>>>>>>>>> Журнал регистрации");

                Для каждого стртз Из тз Цикл
                               Если стртз.Уровень = УровеньЖурналаРегистрации.Ошибка Тогда
                                               Лог.ДобавитьСтроку("Ошибка! "+стртз.Дата+"; "+стртз.Событие+"; "+стртз.Комментарий);
                               ИначеЕсли стртз.Уровень = УровеньЖурналаРегистрации.Предупреждение Тогда
                                               Лог.ДобавитьСтроку("Предупреждение! "+стртз.Дата+"; "+стртз.Событие+"; "+стртз.Комментарий);
                               КонецЕсли;
                КонецЦикла;
                             

                Лог.ДобавитьСтроку("<<<<<<<<<<<<<<<<<<< Журнал регистрации");
Иначе
                Лог.ДобавитьСтроку("Ошибка! Сеанса не найден (номер "+чНомерСеанса+")! Данные журнала регистрации не получены!");
КонецЕсли;

имяИБ = ВРЕГ(НСтр(СтрокаСоединенияИнформационнойБазы(), "Ref"));
имяФайла = "\\192.168.90.25\ExchangeLogs\"+Конвертация.Ид+"_"+имяИБ+".txt";
Лог.Записать(имяФайла);

//ЮМС--


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

Путь «\\192.168.90.25\ExchangeLogs\» нужно поменять на путь, который указан в константе «(МАС) Каталог логов обмена»

Конвертация синхронизация автоматизация рутины.

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

50722 45650 руб.

04.08.2015    160412    357    268    

349

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135701    730    291    

392

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    68956    181    139    

111

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    232053    126    327    

297

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20689    136    38    

95

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34512    83    58    

81

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46884    200    64    

162

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67858    41    123    

46
Оставьте свое сообщение