Оптимизация новой типовой схемы обмена через синхронизацию

26.09.15

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

В новых типовых конфигурациях УТ11 и БП3 вместо прошлой схемы обмена данными используется синхронизация данных. Однако у неё есть свои недостатки. В статье - краткое описание некоторых нюансов новой схемы и приемы для оптимизации работы с ней.

Код синхронизации содержится в обработке "КонвертацияОбъектовИнформационныхБаз".

Отложенное проведение документов

Синхронизация не использует регистр "Отложенные движения документов". Вместо этого она сохраняет документы к проведению в таблице значений в памяти.

Недостаток такого решения очевиден - если обмен слетает, то загруженные документы остаются, а информации о том, какие документы надо провести, нет.

Я нашел обходной вариант этой проблемы - дублирую помещение в таблицу значений записью в типовой регистр " РезультатыОбменаДанными", синоним которого называется "Предупреждения при синхронизации данных".

 

Для этого в процедуру "ПрочитатьОбъект" нужно вставить запись в этот регистр:

Если ЗаписатьОбъект
       И Объект <> Неопределено
       И Объект.Ссылка <> Неопределено Тогда
      
       СтрокаТаблицы = ДокументыДляОтложенногоПроведения().Добавить();
                                                      СтрокаТаблицы.ДокументСсылка = Объект.Ссылка;
                                                      СтрокаТаблицы.ДатаДокумента  = Объект.Дата;
                                                     
       ДополнительныеСвойстваДляОтложенногоПроведения().Вставить(Объект.Ссылка, Объект.ДополнительныеСвойства);
                                                     
       //Производим сразу отложенное проведение документов...
       ОбменДаннымиСервер.ЗарегистрироватьОшибкуПроведенияДокумента(Объект, УзелОбменаЗагрузкаДанных, "Сохранение отложенных в обмене документов");
КонецЕсли;

 

 

Если обмен закончится нормально, то записи этого регистра очистятся.

 

Если будет ошибка, можно провести документы из этого регистра, открыв форму регистра и нажимая кнопку "Провести":

 

Правда, если выделить несколько строк и нажать "Провести", то при первой же ошибке проведения проведение останавливается.

Можно взять код проведения в попытку-исключение:

 

&НаСервере
Процедура ПровестиДокументы(Знач ВыделенныеСтроки)
      
...         
             Если ДокументОбъект.ПроверитьЗаполнение() Тогда
                   
        
                    //Продолжаем проведение, если ошибка
                    Попытка
                           ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
                    Исключение
                    КонецПопытки;
      
            
             КонецЕсли;
      
...
      
КонецПроцедуры

 

Или написать свою обработку проведения документов.

 

Также нужно добавить в процедуру проведения отложенных движений документов забор для проведения зафиксированных в регистре документов, чтобы они провелись отложенно.

 

В начало процедуры "ВыполнитьОтложенноеПроведениеДокументов" добавить код:

       

//Добавляем из регистра
       ТЗДО = ДокументыДляОтложенногоПроведения();
       З = Новый Запрос(
       "ВЫБРАТЬ
       |      РезультатыОбменаДанными.ПроблемныйОбъект КАК ДокументСсылка,
       |      РезультатыОбменаДанными.Причина,
       |      РезультатыОбменаДанными.ДатаДокумента КАК ДатаДокумента
       |ИЗ
       |      РегистрСведений.РезультатыОбменаДанными КАК РезультатыОбменаДанными
       |      ГДЕ ПОДСТРОКА(РезультатыОбменаДанными.Причина, 1, 1024) = &Причина");
       З.УстановитьПараметр("Причина", "Сохранение отложенных в обмене документов");
       ТЗ = З.Выполнить().Выгрузить();
      
       Для Каждого Строка ИЗ ТЗ Цикл
             НСтр = ТЗДО.Добавить();
             ЗаполнитьЗначенияСвойств(НСтр, Строка);
       КонецЦикла;

 

 

Очистка регистрации изменений при обмене через COM

Часто настраивается обмен через внешнее соединение.

При этом хотелось бы, чтобы как только объект был передан в базу-приемник, очищалась регистрация по нему.

Вероятность того, что объект как раз в этот момент поменяется, крайне мала, поэтому схема приемлема.

 

Для этого достаточно вставить удаление регистрации изменений:

Процедура ВыполнитьВыгрузкуЗарегистрированныхДанных(ЗаписьСообщения, СтрокаСообщенияОбОшибке, ТаблицаПравилВыгрузкиИспользуемые)
             Пока ВыборкаИзменений.Следующий() Цикл
 
             Если ЭтоОбменЧерезВнешнееСоединение Тогда
                   
                    Если ЗагрузкаДанныхВыполняетсяВоВнешнемСоединении Тогда
                          
                           Если ОбработкаДляЗагрузкиДанных().ИспользоватьТранзакции
                                  И ОбработкаДляЗагрузкиДанных().КоличествоОбъектовНаТранзакцию > 0
                                  И ОбработкаДляЗагрузкиДанных().СчетчикЗагруженныхОбъектов() % ОбработкаДляЗагрузкиДанных().КоличествоОбъектовНаТранзакцию = 0 Тогда
                                 
                                  //ВСТАВКА Сразу удаляем, если обмен прошел удачно...
                                  ПланыОбмена.УдалитьРегистрациюИзменений(УзелДляОбмена, Данные);
                                 
                                 
                                  ...                              
                           КонецЕсли;
                          
                          
                    Иначе
                          
                                 ...                       
                    КонецЕсли;
                   
             КонецЕсли;
            
       КонецЦикла;
       ...
КонецПроцедуры

 

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

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

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

обмены данными

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

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

См. также

Перенос данных 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    190906    372    294    

428

Перенос данных 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    192583    462    308    

462

SALE! 10%

Перенос данных 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 24870 руб.

12.06.2017    163330    993    329    

487

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

50200 руб.

24.04.2015    209589    179    253    

298

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

Продукт "Интеграция с 1С:Документооборот" позволяет использовать функции программы "1С:Документооборот 8" напрямую из учетной системы (1С:УПП; 1С:КА, 1С:УТ 10.3, 1С:БГУ 1.0, 1С:ЗБУ 1.0, 1С:УПП для Казахстана и отраслевых решений, разработанных на их основе) на платформе "1С:Предприятие 8": выполнять и ставить задачи, просматривать документы, скан-копии и прочие файлы, штрих-кодировать документы отправлять письма, вести учет рабочего времени - не входя в "1С:Документооборот 8", работая в одной программе, что значительно сокращает время и делает работу более комфортной и эффективной. Продукт прошел сертификацию 1С-Совместимо

135530 руб.

11.06.2015    63363    39    20    

51

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

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

27572 руб.

18.02.2016    206546    681    548    

564

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Платные (руб)

Что же Вы получаете? 2 способа обмена объектами – с ОДИНАКОВОЙ структурой и с ОТЛИЧАЮЩЕЙСЯ! Забудьте о том, что не могли ранее перенести данные между базами, из-за того, что изменилась структура объектов в одной из них с обновлением конфигурации – теперь это в прошлом! Теперь не помеха для обмена изменение состава реквизитов объекта (измерений, ресурсов)/состава табличных частей/реквизитов табличных частей/типов реквизитов! А так же получаете быстрый алгоритм обмена, с возможностью указания уровня выгрузки объектов по ссылкам! 2 способа обмена - ФАЙЛ, HTTP: Система слежения за дублями предопределенных элементов при загрузке; Система поиска связей объектов для выгрузки; Отборы для каждого объекта конфигурации в отдельности; Динамическая замена произвольных ссылок при обмене; Выбор регистров движений для выгрузки. (Обновление от 13.08.2026, версия 11.3.2, фоновая выгрузка-загрузка версия 1.4)

21960 руб.

28.08.2012    227261    342    289    

683

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

Не хочется настраивать штатный механизм переноса между УТ 11 и Бухгалтерией 3.0 после каждого обновления? Предлагаем удобное решение для одностороннего переноса данных из Управления торговлей 11 в Бухгалтерию 3.0.

30000 руб.

22.04.2015    101201    223    188    

203
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ardn 856 29.09.15 16:45 Сейчас в теме
Регистр "РезультатыОбменаДанными" предназначен для вывода ошибок обмена и их дальнейшей обработки.
Ситуацию с вылетевшим обменом и документами, оставшимися непроведенными, сложно считать ошибкой - ведь обмен так и не завершился, в следующую попытку обмена те же самые документы опять загрузятся.
Zhilyakovdr; +1 Ответить
2. fixin 4344 29.09.15 16:48 Сейчас в теме
(1) в комплексе воспринимайте статью, в комплексе. При передаче через СОМ я сразу же удаляю регистрацию объекта, чтобы он повторно не передавался. Отсюда и необходимость запоминать проведенные документы.
3. drkhaired 51 29.09.15 16:58 Сейчас в теме
Что то не пойму пользу от этого решения...
4. fixin 4344 29.09.15 17:19 Сейчас в теме
(3) значит, оно вам не нужно. Представьте, что в плане обмена зарегистрировано 20 000 объектов и понимание снизойдет на вас.
5. KapasMordorov 429 29.09.15 18:46 Сейчас в теме
Гений на новой работе начал со старых велокостылей?
"Мастерство" не пропьешь.
Ждем повторных статей о том "откуда при обмене битые ссылки".
6. fixin 4344 30.09.15 00:25 Сейчас в теме
(5) ты просто не вкуриваешь, как работают планы обмена.
7. Zhilyakovdr 148 30.09.15 10:05 Сейчас в теме
(6) Может для Вас это неплохое решение, но это решение частного случая, а что вы будите делать с кодом в глобальном обработчике после загрузки данных? В типовых довольно много в документах допиливается именно оттуда.... Ваш метод применим только при ситуации когда документы к Вам в принимающую систему придут полностью готовыми и им будет требоваться только проведение, но в таком случае откуда взяться ошибке? Вы ссылаетесь на большое количество объектов, с этой неприятностью можно бороться просто задав максимальное количество элементов на один сеанс обмена, кодом разумеется, это будет более корректно. На сколько я понимаю Вы используете COM обмен, с какой периодичностью вы его делаете? Например у меня обмены идут с периодикой в час, если обмен по каким то причинам не работал в течении суток или же требуется повторно передать данные из одной системы в другую, то количество объектов легко может превысить Ваши, но таких проблем почему то не возникает....
10. fixin 4344 30.09.15 21:06 Сейчас в теме
(7) где в обмене настраивается обьем порции. Имхо этого нет, т.к. ломает всю 1совсуую логику обмена. Но буду рад, если не прав.

Не путать с количеством обьектов в транзакции
8. lvictor58 139 30.09.15 15:37 Сейчас в теме
Годы идут десятками а fixin не меняется: "Создадим себе трудности, что бы потом было чего героически преодолевать!". Зачем вообще обмены через КОМ-соединение юзать, если это столь проблематично?!
9. KapasMordorov 429 30.09.15 17:40 Сейчас в теме
Ну да, если обмен слетел из-за ошибки проведения документа, то документы можно провести вручную(!), предварительно записав их в отдельный регистр. А если и эти документы не проводятся, то их нужно в попытку.
Так их можно и сразу в попытку и не устраивать ИБД с проведением вручную.
Только нафига такой кривой обмен?
11. fixin 4344 30.09.15 21:07 Сейчас в теме
(9) в чем кривизна то? Это 1с кривит, отказавшись от отложенного проведения, надежного механизма
12. Andrekaa 13.06.19 17:05 Сейчас в теме
а сейчас только руками не проведенные документы можно проводить? не появилось ни какого рег задания?
13. fixin 4344 13.06.19 21:08 Сейчас в теме
(12) не знаю, пока год как отошел от темы обменов. сам напиши регл задание.
Для отправки сообщения требуется регистрация/авторизация