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

30.09.21

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

  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\» нужно поменять на путь, который указан в константе «(МАС) Каталог логов обмена»

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

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

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

58000 руб.

04.08.2015    188348    451    305    

456

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 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" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    188621    361    290    

420

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    161320    971    321    

482

SALE! 10%

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

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 37800 руб.

15.12.2021    34513    258    64    

195

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

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

50600 руб.

21.05.2019    58506    81    132    

73

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

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

58000 руб.

29.10.2018    63054    82    133    

81

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

85400 руб.

05.10.2022    13627    15    8    

16
Для отправки сообщения требуется регистрация/авторизация