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

26.09.15

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

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

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

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

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

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

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

 

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

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

 

 

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

 

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

 

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

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

 

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

 

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

 

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

 

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

       

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

 

 

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

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

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

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

 

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

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

 

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

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

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

См. также

SALE! 20%

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

45650 36520 руб.

04.08.2015    159689    363    267    

345

SALE! 15%

[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 22572 руб.

12.06.2017    134940    723    291    

388

SALE! 20%

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

34650 27720 руб.

15.04.2019    68420    178    138    

111

SALE! 20%

Перенос данных из 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С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34169    80    58    

78

SALE! 10%

Перенос данных из УТ 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 25200 руб.

23.07.2020    46301    196    64    

158

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    231412    124    327    

296

Перенос данных из Парус 10 в ЗГУ ред.3

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

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

60000 руб.

05.10.2022    9208    9    8    

10

SALE! 10%

Перенос данных из УПП 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.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20252    132    38    

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

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