Обмен между базами 1С 8.3. Доработка типового плана обмена (синхронизации) между конфигурациями 1С на примере обмена 1С: Зарплата и управление персоналом 3 и 1С: Бухгалтерия предприятия 3













Для чего нужно изучить данную статью и когда эти знания могут пригодиться?

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

Что же такое «План обмена»? План обмена в 1С – это объект, который входит в состав метаданных конфигурации и служит для синхронизации данных между информационными базами.

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

В «Макете плана» хранятся те самые правила, на основе которых работает синхронизация. Вот именно этот пакет конвертации (ПравилаРегистрации, ПравилаОбмена, ПравилаОбменаКорреспондента) нам и необходим для дальнейшего изучения.

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

 

Живой пример потребности в доработке типовых правил обмена

 

Например, заказчик обратился к нам с такой проблемой: при синхронизации между ЗУП и БП нет возможности передать данные справочника «Регистрации в налоговом органе», которые необходимы для заполнения документа «Отражение зарплаты в бухучете». Сейчас табличная часть этого документа на стороне приемника БП содержит пустую «Регистрацию…» и пользователям приходится вручную создавать такие записи в справочнике. Согласитесь, это неудобно.  Можем доработать этот момент.
 

  Решение проблемы: доработаем пакет конвертации из плана обмена ОбменЗарплата3Бухгалтерия3. Добавим в типовые «Правила обмена 1С» новое «Правило конвертации объектов» (ПКО) для справочника «Регистрации в налоговом органе» и соответственно «Конвертацию свойств» этого справочника (ПКС). Обязательно доработаем типовые «Правила регистрации объектов», т.к. возникла необходимость зарегистрировать изменения справочника на узле обмена. И пересмотрим «Правила обмена 1С» базы корреспондента.

Где все это будем редактировать? для написания и изменения правил нам потребуется конфигурация «1С:Конвертация данных 2».

 

  Доработка типовых правил конвертации из Плана обмена ЗУП – БП

 

Итак, доработку правил обмена 1С начнем с того, что в конфигураторе для плана обмена ОбменЗарплата3Бухгалтерия3 в состав добавим новый элемент – справочник РегистрацииВНалоговомОргане. Данное изменение сделаем в обоих конфигурациях «1С:Зарплата и управление предприятием 3» и «1С:Бухгалтерия предприятия 3».

 

  Сохраним и обновим конфигурации.

В режиме предприятия для каждой базы выгрузим описание структуры метаданных с помощью обработки MD83Exp.epf для платформы «1С:Предприятие 8.3». Обработку можно найти в комплекте «1С:Конвертация данных».

На следующем этапе выгрузим пакет конвертации из ЗУП и БП. Пакет должен состоять из 3 файлов: ПравилаРегистрации, ПравилаОбмена, ПравилаОбменаКорреспондента. 

В рамках данной статьи не будет описания как настраивается синхронизация данных, это можно прочитать на сайте компании «Кодерлайн» в разделе «Статьи экспертов»  либо посмотреть записи вебинаров. Сейчас в базах уже настроена данная опция. Поэтому переходим в настройку синхронизации (Администрирование –> Синхронизация данных –> Настройка синхронизации данных), нажимаем кнопку «Загрузить правила». Перед нами откроется форма «Правил для синхронизации». По кнопке «Еще» выберем пункт «Сохранить правила в файл».

 

  Вот такой пакет после выгрузки должен у нас получиться.

 
 

Аналогичные действия выполним и для другой информационной базы «1С:Бухгалтерия предприятия».
В итоге все подготовительные работы для редактирования правил готовы. У нас есть:

— описание структуры метаданных для загрузки в «1С:Конвертация данных 2» (для ЗУП и БП);

— пакет конвертации, который содержит правила обмена 1С и правила регистрации, необходимые для загрузки в «1С:Конвертация данных 2» (для ЗУП и БП).

Переходим в «1С:Конвертация данных 2» . Выполним следующие действия по порядку для обоих информационных баз:

— загружаем структуры метаданных наших конфигураций;

— создаем конвертации и загружаем правила обмена данными 1С из пакетов конвертации (файл правил называется ExchangeRules);

— создаем регистрации и загружаем правила регистрации из пакетов конвертации (файл правил называется RegistrationRules).
   

  
Переходим непосредственно к нашей доработке. В правила обмена 1С добавляем новое правило конвертации объектов (ПКО) – справочник «Регистрации в налоговом органе». Добавляем правило конвертации свойств (ПКС) для этого справочника и правило выгрузки данных (ПВД). Такого рода доработку необходимо выполнить как для правил из пакета ЗУП, так и для правил обмена из пакета БП. Выгружаем наши правила обмена в соответствующие файлы ExchangeRules.

 

  
Переходим к правилам регистрации нового элемента. Добавляем справочник «Регистрации в налоговом органе». Выгружаем правила регистрации в соответствующий файл из пакета RegistrationRules. Это действие также выполняем для обоих баз.

 

  Доработанные правила обмена и правила регистрации готовы. Теперь в правила корреспондента (CorrespondentExchangeRules) из пакета ЗУП копируем содержимое правил обмена (ExchangeRules) из пакета БП. В правила корреспондента (CorrespondentExchangeRules) из пакета БП копируем содержимое правил обмена (ExchangeRules) из пакета ЗУП.

В итоге должно получиться следующее: 

 
На этом работа в «1С:Конвертация данных 2» завершена. Доработанные пакеты правил конвертации готовы, осталось загрузить их обратно в информационные базы и проверить синхронизацию. 

Архивируем файлы из пакетов в Архив ZIP и загружаем в ЗУП и БП свои пакеты конвертации.

  Все готово. Осталось протестировать.

Вспомним условия задачи. Необходимо было зарегистрировать к выгрузке справочник «Регистрации в налоговом органе» и проверить, как заполняется ТЧ документа «Отражение зарплаты в бухучете» на стороне «1С:Бухгалтерия предприятия 3».

В источнике «1С:Зарплата и управление предприятием 3» регистрируем к выгрузке наш справочник. Выполняем синхронизацию. Переходим в базу приемник и тоже выполняем синхронизацию для получения данных. Обратим внимание, что теперь в плане обмена появился нужный справочник для регистрации изменений.
 

Проверяем на стороне «1С:Бухгалтерия предприятия 3»:
 
 


  Подведем итог. Результат поставленной задачи выполнен успешно. Мы доработали план обмена ЗУП – БП, добавив новый элемент для регистрации изменений и дописали правила конвертации для синхронизации данных.

36 Comments

  1. avk72

    Молодец!

    Reply
  2. anosin

    Интересно было всё тоже самое повторить на КД3

    Reply
  3. andypet

    Мне кажется, забыли упомянуть про добавление справочника РегистрацииВНалоговомОргане в качстве источника события для подписки «ОбменЗарплата3Бухгалтерия3Регистрация»?

    Reply
  4. guy_septimiy

    отличное пособие для тех кто не разобрался или нет времени это сделать

    Reply
  5. katenok86

    (2)В 2 х словах. Сначала ищем объект в XDTO пакете. Если нет то добавляем. Добавляем в план обмена, меняем правила регистрации. По том на КД 3 меняем правила выгрузки и загрузки.

    Reply
  6. Irwin

    Хотелось бы еще почитать про то, как быстро обновлять доработанные правила КД.

    Reply
  7. Brawler

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

    Там главное чтобы ОКТМО, КПП и вроде код налогового органа были заданы.

    Регистрация в налоговом органе колонка не существующая физически.

    Как пример статья вполне канает!

    Reply
  8. Prepod2003

    Я думал, что обмен между ЗУП 3 и БУХ 3 сделан только по новому формату через КД 3, а оказывается это можно доработать и через КД 2… Не понимаю как это возможно — это же разные вообще системы? Может кто-то объяснить это дело мне или где об этом можно почитать?

    Reply
  9. anosin

    (5) Екатерина, в 2х словах так просто на КД3 увы не получится

    Reply
  10. monkbest

    (8) КД3 не применяется сейчас совсем в типовых обменах 1С-1С. КД3 подразумевает обмен в едином формате, т.е. выгрузка происходит не сразу в формат приёмника как в КД2, а в некий промежуточный универсальный формат, поэтому и нужны фабрики-х*ябрики ИКСДТО.

    Reply
  11. monkbest

    Вопрос автру, зачем вносить изменения в обе базы? Это не упрек, я действительно не знаю 🙂

    Поясню, откуда вопрос. Самому приходилось протаскивать номенклатурную группу в ЗУП, для этого как и Вы правил оба набора правил и оба плана обмена и в ЗУП и в Бух. Галку «Синхронизация» ставил в обоих базах и в обоих базах настраивал синхронизацию со своим расписанием.

    Но насколько я понял механизм, то ЗУП по КОМ соединению лезет в Бух выгружает туда, а потом загружает оттуда используя правила корреспондента. Потом Бух по КОМ лезет в ЗУП выгружает туда и загружает оттуда. Получается не двухсторонний обмен, а двусторонний в квадрате. Зачем? Можно ли обойтись настройкой синхронизации на одной стороне? Я пробовал, но всегда начинались глюки, что что-то куда-то не выгружается. Есть знания на эту тему?

    Reply
  12. vowg

    (10) Сейчас все типовые обмены, постепенно переводят на универсальный формат обмена, т.к. по КД3

    Reply
  13. vowg

    (11) Насколько я понял, хотя я и не автор данной статьи 🙂 при загрузке выполняются правила корреспондента, если в них прописаны обработчики «ПослеЗагрузкиОбъекта», если этих событий нет в правилах корреспондента, то все нормально выгружается/загружается.

    Reply
  14. monkbest

    (13)

    при загрузке выполняются правила корреспондента, если в них прописаны обработчики «ПослеЗагрузкиОбъекта», если этих событий нет в правилах корреспондента, то все нормально выгружается/загружается

    обычно правила конвертации равны правилам корреспондента в противоположной базе, т.е. все обработчики одинаковы

    хотя, видимо из-за несинхронности выхода релизов, они немного отличаются, проверял простым сравнением текстовых файлов

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

    Reply
  15. monkbest

    (12) а я вот думаю, что КД3 создан для обмена в формате Enterprise Data. а он придуман для обмена со сторонними системами. Как раз при обмене со сторонними системами удобно, кода есть единый уже задокументированный формат. обе стороны обмена не парятся о другой системе, а только о своей. КД3 трудоемкая, я тут попробовал простенький обмен одного справочника реализовать на ней с нуля — плюнул и передумал 🙂

    Хотя в нынешней версии БСП это тоже жесть, чтобы свой обмен с нуля приделать на КД2. Я обычно добавляю универсальную обработку в обе базы, к ней приляпываю в макете правила и пишу свое регламентное задание в 10 строчек кода и свой план обмена с авторегистрацией объектов. Все типовые модули, подписки остаются на поддержке без изменений.

    Reply
  16. vowg

    (14) Просто при тестировании, выявил опытным путем, что если нет обработчиков событий «ПослеЗагрузкиОбъекта», то выгрузка проходит, даже если правила отличаются. Стоит только добавить эти события, так в этом случае нужен синхрон между правилами

    Reply
  17. anosin

    (15) формат «предопределенных структур Enterprise Data навязывается 1С-ом» и просто так стороннюю систему не подключить необходимо подстраиваться под 1Сные «предопределнные структуры» и самое интересное, что модули «типовых обменов» редактируются вручную а не генерируются из КД3, т.е. эти правила нельзя импортировать и экспортировать повторно.

    Reply
  18. the1

    Жирный минус. Не нужно конфигурации снимать с поддержки.

    Правила нужно доработать таким образом, чтобы при изменении документа «Отражение» дёргался справочник «Регистрации в налоговом органе»

    Reply
  19. monkbest

    (18) это минус не автору статьи, а автору БСП 🙂 не тронув план обмена новый объект в правила добавлять бесполезно.

    Reply
  20. monkbest

    (17) помимо того, что они «предопределнные структуры», они уже задокументированы, что на проекте снимает кучу вопросов. Вот были бы они не предопределенные, встретились две рабочих группы САПА и 1С:

    — ну что выгрузить вам отгрузки

    — давай. в каком формате?

    — XML хочу

    — годится

    … далее 100 часов согласования, какие реквизиты как называются, какой тип данных, вложенным тегом или атрибутом, как назвать теги, как обозначать ссылочные типы…

    а тут все уже придумано и годится под 99% случаев, максимум, если упрутся во что-то то согласовать пару нюансов за 5 минут

    Reply
  21. the1

    (19) Не скажите. Всё прекрасно выгружается без добавления в ПО. В ПКС документа Отражение добавить «Регистрац…» и все прекрасно выгрузится

    Reply
  22. monkbest

    (21) ну например Бух-ЗУП. Хочу номенклатурные группы в ЗУП. Они реквизит документа отражение ЗП в регл учете.

    Создаются элементы в бухгалтерии, т.к. буху потом фин результат считать, а используются в ЗУП в табеле, а данные табеля потом влияют на док отражение ЗП в регл учете.

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

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

    Reply
  23. anosin

    (20)

    Договориться за 5 минут это в случае если у группы САПА есть реализация ED, и боюсь что за реализацию всей структуры они захотят не одну 1000 часов

    Reply
  24. monkbest

    (23) сколько часов они будут писать свою часть и сколько это будет стоить не имеет значения, т.к. эти показатели равны что при наличии ED что без него. Все равно нет типововго обмена между этими системами 🙂

    а вот на составление документации (тех задания ) к будущему обмену можно сэкономить.

    Reply
  25. the1

    (22) Дописываем правила обмена так, чтобы при выгрузке из БП обязательно выгружались номенклатурные группы. То есть вообще в любом случае, были изменения, не было — пофиг.

    Например, в свойствах конвертиции, в разделе «После выгрузки данных» инициируем принудительную выгрузку справочника «Номенклатурные группы».

    Как-то так

    Reply
  26. milov.aleksey

    Стояла задача: перегружать свод проводок(документ Отражение зарплаты в бухучёте) из ЗУП3.1.2.462 в БП3.0.54 так, чтобы не менялась иерархия подразделений, различная в зарплате и бухгалтерии. В бухгалтерии много уровней подчинения. При перегрузке некоторые подразделения перемещаются в корень справочника.

    Решение:

    1) в бухгалтерии создал подписчик, откатывающий изменения подразделений при загрузке из зарплаты.

    2) в типовом правиле обмена изменил приоритет подразделения из ЗУП с «Выше» на «Ниже». Чтобы при разрешении конфликта синхронизации приоритет оставался за подразделением бухгалтерии.

    Reply
  27. bb1962

    (18) Верное замечание. Я добавлю, что в данном случае вообще можно и нужно отказаться от плана обмена. Для того, чтобы 1 — 2 раза в месяц переносить ведомости на выплату и отражение ЗП в БУ, никакая регистрация объектов не нужна. Правила обмена уже есть, можно использовать обработку Универсальный обмен данными в формате XML. Дорабатывается в любом направлении легко без снятия конфигурации с замка. Версия формата файла обмена будет другой, только и всего.

    Reply
  28. lenarha

    просьба уточнить пункт в «На следующем этапе выгрузим пакет конвертации из ЗУП и БП. Пакет должен состоять из 3 файлов: ПравилаРегистрации, ПравилаОбмена, ПравилаОбменаКорреспондента. »

    я так понимаю что должен получиться файл архив zip. только я не могу найти как это сделать. подскажите пожалуйста

    Reply
  29. zyzo

    (28) Та же самая ерунда, выгружается только один фай правил регистрации объектов в формате xml и на этом всё. Подскажите, что делать или это новый подход 1С?

    Reply
  30. 20tanush

    Большая благодарность автору. Хотя я не новичок в КД 2, но с помощью вашей статьи вырулила одну задачу, которая никак не получалась.

    Reply
  31. user964052

    (29)Решили вопрос?

    Reply
  32. e-9

    (28)(29)(31)

    Reply
  33. echo77

    (0) А есть ли статья о том как добавить НОВЫЙ план обмена в типовые на БСП?

    Reply
  34. Shefer

    (33) Видимо, не появилась? Тоже прилетела такая задача, пока не решена…

    Reply
  35. echo77

    (34) Начните смотреть с этого видео https://youtu.be/GJisV536NPk

    Здесь неплохо рассказывают. В свое время пользовался

    Reply
  36. Shefer

    (35)Спасибо, конечно, но тут совсем уж азы. У меня сейчас вот вопросы появились: как в планах обмена реализуется механизм «при необходимости»? Полагаю, никак. А еще, как выполнить соответствие предопределенных элементов, например видов отпусков и начислений.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *