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

30.09.21

Интеграция - Перенос данных 1C

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Контроллер для Конвертации (Синхронизации) данных.:
.cf 6,18Mb
2
2 Скачать (1 SM) Купить за 1 850 руб.

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

  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%

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

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

55778 50200 руб.

04.08.2015    166489    333    277    

373

SALE! 20%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141531    798    297    

419

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

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

35000 руб.

15.12.2021    24028    169    51    

128

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

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

35000 руб.

23.07.2020    51273    228    69    

185

SALE! 10%

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

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56210    59    105    

61

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171178    303    257    

378

SALE! 15%

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186886    589    509    

526

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    80677    311    250    

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