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

30.09.21

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

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

Скачать файл

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

Наименование SM По подписке [?] Купить один файл
Контроллер для Конвертации (Синхронизации) данных.:
.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 Файловый обмен (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    137996    759    292    

404

Перенос данных 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 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 руб.

04.08.2015    162650    368    273    

358

Перенос данных 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 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

45650 руб.

15.04.2019    70296    173    146    

116

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

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

28000 руб.

15.12.2021    21736    144    40    

104

Перенос данных 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 (правила конвертации данных)

45650 руб.

31.10.2014    234043    93    330    

301

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

Переход и перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:ERP Управление предприятием 2.5 и 1С:Комплексную автоматизацию 2.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.227.x), ERP 2.5 (2.5.16.x), КА 2.5 (2.5.16.x) .

28000 руб.

24.06.2020    62308    50    27    

80

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

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

28000 руб.

23.07.2020    48354    208    64    

170

Перенос данных 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, почту.

14580 руб.

18.02.2016    184459    572    509    

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