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

Обмен - Перенос данных из 1C8 в 1C8

Для чего нужно изучить данную статью и когда эти знания могут пригодиться? В первую очередь приведенная ниже информация потребуется программистам 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»:
 
 


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

См. также

Комментарии
1. Александр Колесников (avk72) 44 10.11.17 09:58 Сейчас в теме
2. Андрей Осин (anosin) 27 10.11.17 10:05 Сейчас в теме
Интересно было всё тоже самое повторить на КД3
nikivr; IvanovAV; Dmitri93; +3 Ответить
5. Екатерина Н (katenok86) 241 10.11.17 13:00 Сейчас в теме
(2)В 2 х словах. Сначала ищем объект в XDTO пакете. Если нет то добавляем. Добавляем в план обмена, меняем правила регистрации. По том на КД 3 меняем правила выгрузки и загрузки.
9. Андрей Осин (anosin) 27 13.11.17 22:43 Сейчас в теме
(5) Екатерина, в 2х словах так просто на КД3 увы не получится
3. Андрей Петров (andypet) 10.11.17 11:27 Сейчас в теме
Мне кажется, забыли упомянуть про добавление справочника РегистрацииВНалоговомОргане в качстве источника события для подписки "ОбменЗарплата3Бухгалтерия3Регистрация"?
monkbest; +1 Ответить
4. Валентин Виноградов (guy_septimiy) 10.11.17 11:59 Сейчас в теме
отличное пособие для тех кто не разобрался или нет времени это сделать
6. John Irwin (Irwin) 60 10.11.17 13:58 Сейчас в теме
Хотелось бы еще почитать про то, как быстро обновлять доработанные правила КД.
7. Игорь Фелькер (Brawler) 336 10.11.17 20:50 Сейчас в теме
Если я не ошибаюсь, то в данном документе никакой регистрации в налоговом органе указывать не нужно.
Там главное чтобы ОКТМО, КПП и вроде код налогового органа были заданы.
Регистрация в налоговом органе колонка не существующая физически.

Как пример статья вполне канает!
8. Сергей (Prepod2003) 232 13.11.17 15:30 Сейчас в теме
Я думал, что обмен между ЗУП 3 и БУХ 3 сделан только по новому формату через КД 3, а оказывается это можно доработать и через КД 2... Не понимаю как это возможно - это же разные вообще системы? Может кто-то объяснить это дело мне или где об этом можно почитать?
10. Антон Антонов (monkbest) 29 15.11.17 07:58 Сейчас в теме
(8) КД3 не применяется сейчас совсем в типовых обменах 1С-1С. КД3 подразумевает обмен в едином формате, т.е. выгрузка происходит не сразу в формат приёмника как в КД2, а в некий промежуточный универсальный формат, поэтому и нужны фабрики-х*ябрики ИКСДТО.
12. Владимир Глебов (vowg) 33 15.11.17 08:14 Сейчас в теме
(10) Сейчас все типовые обмены, постепенно переводят на универсальный формат обмена, т.к. по КД3
15. Антон Антонов (monkbest) 29 15.11.17 08:39 Сейчас в теме
(12) а я вот думаю, что КД3 создан для обмена в формате Enterprise Data. а он придуман для обмена со сторонними системами. Как раз при обмене со сторонними системами удобно, кода есть единый уже задокументированный формат. обе стороны обмена не парятся о другой системе, а только о своей. КД3 трудоемкая, я тут попробовал простенький обмен одного справочника реализовать на ней с нуля - плюнул и передумал :)

Хотя в нынешней версии БСП это тоже жесть, чтобы свой обмен с нуля приделать на КД2. Я обычно добавляю универсальную обработку в обе базы, к ней приляпываю в макете правила и пишу свое регламентное задание в 10 строчек кода и свой план обмена с авторегистрацией объектов. Все типовые модули, подписки остаются на поддержке без изменений.
17. Андрей Осин (anosin) 27 15.11.17 13:55 Сейчас в теме
(15) формат "предопределенных структур Enterprise Data навязывается 1С-ом" и просто так стороннюю систему не подключить необходимо подстраиваться под 1Сные "предопределнные структуры" и самое интересное, что модули "типовых обменов" редактируются вручную а не генерируются из КД3, т.е. эти правила нельзя импортировать и экспортировать повторно.
11. Антон Антонов (monkbest) 29 15.11.17 08:04 Сейчас в теме
Вопрос автру, зачем вносить изменения в обе базы? Это не упрек, я действительно не знаю :)

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

Но насколько я понял механизм, то ЗУП по КОМ соединению лезет в Бух выгружает туда, а потом загружает оттуда используя правила корреспондента. Потом Бух по КОМ лезет в ЗУП выгружает туда и загружает оттуда. Получается не двухсторонний обмен, а двусторонний в квадрате. Зачем? Можно ли обойтись настройкой синхронизации на одной стороне? Я пробовал, но всегда начинались глюки, что что-то куда-то не выгружается. Есть знания на эту тему?
13. Владимир Глебов (vowg) 33 15.11.17 08:19 Сейчас в теме
(11) Насколько я понял, хотя я и не автор данной статьи :) при загрузке выполняются правила корреспондента, если в них прописаны обработчики "ПослеЗагрузкиОбъекта", если этих событий нет в правилах корреспондента, то все нормально выгружается/загружается.
14. Антон Антонов (monkbest) 29 15.11.17 08:29 Сейчас в теме
(13)
при загрузке выполняются правила корреспондента, если в них прописаны обработчики "ПослеЗагрузкиОбъекта", если этих событий нет в правилах корреспондента, то все нормально выгружается/загружается

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

поэтому и вопрос мой возник, технически все должно работать при настройках в одной базе, тем более зачем нам два фоновых задания делающих одно и тоже, они запросто могут попасть во взаимную блокировку, если расписания совпадут
16. Владимир Глебов (vowg) 33 15.11.17 10:04 Сейчас в теме
(14) Просто при тестировании, выявил опытным путем, что если нет обработчиков событий "ПослеЗагрузкиОбъекта", то выгрузка проходит, даже если правила отличаются. Стоит только добавить эти события, так в этом случае нужен синхрон между правилами
18. Maxim Kolkin (the1) 287 15.11.17 22:55 Сейчас в теме
Жирный минус. Не нужно конфигурации снимать с поддержки.

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