Лайфхаки конвертации данных 2.1 (часть 2)

14.09.20

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

В данной статье будут рассмотрены десять приемов работы с конвертацией данных 2.1. Указанные приемы явно не описываются в документации (справке), но их полезно знать и применять. Для наглядности приёмы работы сопровождаются описанием реализации и практическими примерами.

Данная статья является продолжением статьи: //infostart.ru/1c/articles/1247340/.

 

Конвертация строки в справочник (перечисления) и обратно

Конвертация строки в справочник

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

 

Рисунок 1 – Описание обработчика «Перед Выгрузкой».

 

Конвертация строки в перечисление

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

 

Конвертация справочника в строку

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

 

Конвертация перечисления в строку

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

 

Конвертация справочника в перечисление (перечисление в справочник)

Конвертация справочника в перечисление

Данная задача становится актуальной с учетом изменения перечисления «Ставки НДС» на справочник в новых конфигурациях. Теперь при конвертации объектов из новых конфигураций (тип: справочник) в конфигурации, где ставки НДС еще являются перечислением, необходимо будет разрабатывать соответствующее правило конвертации объектов.

  1. Необходимо в правиле конвертации объектов на вкладке «Настройки», включить свойство «Не запоминать выгруженные объекты» (см. рисунок 2).

Рисунок 2 – Не запоминать выгруженные объекты.

 

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

  1.  Не использовать конвертацию значений (предопределенные значения справочника в значения перечисления).

Будет использоваться обработчик «При выгрузке», а при использовании данного обработчика конвертация значений не отрабатывает.

  1. В конвертации объекта в обработчике «При выгрузке» необходимо прописать следующий код:

     

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

 

Конвертация перечисления в справочник

Для конвертации перечисления в справочник, потребуется отдельное правило конвертации объектов. В данном правиле можно воспользоваться конвертацией значений (конвертация значений перечисления в предопределенные значения), и необходимо описать поля поиска, а также реквизит, в который будет грузиться значение перечисления (например: реквизит - наименование), и при необходимости описать заполнение остальных реквизитов справочника. В правиле в обработчике «Перед выгрузкой» реквизита написать следующий алгоритм (см. рисунок 1).

 

Отключение проверки полей поиска

В созданных правилах конвертации объектов, по которым не заполнена колонка «Поля поиска» при сохранении правил, система предложит указать автоматически поля поиска (см. рисунок 3).

Рисунок 3 – Предупреждение – не указаны поля поиска.

 

При каждом сохранении правил, система будет выдавать данное сообщение. Если при достаточно большом количестве правил случайно нажать «Да», то система создаст поля поиска по всем правилам, и может потребоваться достаточно большое время восстанавливать обратно. Чтобы избежать таких неприятных ситуаций, данную проверку можно отключить (путь: Сервис – Настройки пользователя) (см. рисунок 4).

Рисунок 4 – Отключение проверки полей поиска.

 

Не регистрировать документы к обмену при определенных действиях

Документы регистрируются к обмену по правилам регистрации объектов при любых действиях (проведение, выполнение различных обработок и т.д.). Если необходимо не регистрировать документы при определенных действиях (например: при выполнении обработки по перепроведению документов), то можно использовать функционал дополнительные свойства.

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

В таком случае документ при групповом перепроведении не будет регистрироваться к обмену.

 

Общий алгоритм для всех объектов одного типа метаданных

Если необходимо учитывать один алгоритм для всех объектов одного типа метаданных (например: не выгружать помеченные на удаления справочники), то можно воспользоваться глобальными обработчиками, в них прописать один раз алгоритм, который будет действовать для всех существующих и новых объектов. Такой подход позволяет избежать дублирования кода и не забыть написать необходимый алгоритм для новых справочников.

Например, для задачи – не выгружать помеченные на удаления справочники, необходимо в глобальном обработчике «Перед выгрузкой объекта» написать следующий алгоритм:

 

Перенос субконто по своим правилам

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

  1. Для реквизита «Субконто» в обработчике «Перед выгрузкой»:

  1. Перенос плана видов характеристик «Виды Субконто Хозрасчетные» (см. рисунок 5):

Рисунок 5 – Перенос плана видов характеристик.

 

  1. Для реквизита «Субконто» в обработчике «При выгрузке»:

Описывается последовательность действий для каждого типа субконто.

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

 

Поиск элементов на стороне приемника

Конвертация данных позволяет разрабатывать собственные алгоритмы поиска элементов на стороне приемника, для этого предназначен обработчик «Поля поиска».

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

 

            Пример обработчика «Поля поиска»:

            В обработчике мы можем задать до 10 итераций через переменную «НомерВариантаПоиска». В каждой итерации в зависимости от условий задать поля поиска элемента через переменную «СтрокаИменСвойствПоиска» (наименование полей задаются, как они заданы у приемника). Получить значение поля поиска можно через структуру «СвойстваПоиска» (наименование полей задаются, как они заданы у приемника). Для прекращения поиска нужно использовать переменную «ПрекратитьПоиск».

 

Реквизиты узлов источника и приемника

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

На стороне источника, чтобы обратиться к узлу плана обмена, необходимо использовать переменную: «УзелДляОбмена».

Например, в правилах обмена на стороне источника можно обратиться к ИНН выбранной организации в плане обмена:

На стороне приемника, чтобы обратиться к узлу плана обмена, необходимо использовать переменную: «УзелОбменаЗагрузкаДанных».

Например, в правилах обмена на стороне приемника можно обратиться к ИНН выбранной организации в плане обмена:

 

Протокол (лог) синхронизации между базами

Важным элементом обмена между базами является протокол (лог) синхронизации. Данный протокол должен показывать в удобном виде всю необходимую информацию об обмене (количество выгруженных элементов; список выгруженных элементов; ошибки обмена и т.д.). Чем сложнее алгоритмы обмена, тем более расширенный должен быть лог (например: у нас несколько документов на стороне источника объединяются в один документ на стороне приемника, в таком случае протокол должен показывать, как документы объединялись). Лог должен содержать значимую информацию, которая оперативно поможет разобраться с вопросами связанными с синхронизацией.

Можно выделить три наиболее частых варианта создания протокола (лога) синхронизации между базами без кастомизации баз источника и приемника:

1) Записывать всю необходимую информацию в журнал регистрации. Данный подход имеет существенные недостатки. Чаще всего журнал регистрации имеет большой объем информации, это влияет на скорость анализа нужной информации (журнал регистрации может работать медленно), и предоставление данных в журнале регистрации не всегда удобно для анализа данных. 

2) Отправлять все необходимые данные на электронную почту. После каждой синхронизации записывать данные в регистр сведений (ОтправкаEmail) для последующей отправки необходимым адресатам. В данном случае недостаток в том, что может возникнуть большое количество писем за день, и в них будет сложно проводить анализ.

3) Записывать всю необходимую информацию во внешний источник (файлы excel и т.д.). Данный подход является наиболее предпочтительный, т.к. можно создать 1 файл в день, в него дописывать всю нужную информацию за день в удобном виде для анализа.

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

 

Передача параметра из источника в табличную часть приемника

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

            Передача значений табличной части из источника в параметры табличной части приемника имеет ряд особенностей:

  1. Необходимо в конвертации свойств табличной части приемника создать необходимый параметр. Если параметр имеет не примитивный тип, то указать также правило конвертации (см. рисунок 6).

Рисунок 6 – Создание параметра в конвертации свойств табличной части приемника.

 

  1. Важный момент! Заполнение параметра должно всегда происходить в переменную «Значение» в обработчике «Перед выгрузкой». Из входящих данных параметр не сможет заполниться (будет выдаваться сообщение об ошибки) (см. рисунок 7).

Рисунок 7 – Заполнение параметра в конвертации свойств табличной части.

 

  1. На стороне приемника обращение к параметрам табличной части происходит в обработчике «После загрузки» через соответствие «ПараметрыОбъекта» по следующему правилу:

- если параметр был создан в табличной части, то обращение будет типа: [Наименование табличной части] + ТабличнаяЧасть (например: «ТоварыТабличнаяЧасть»);

- если параметр был создан в наборе движений регистра, то обращение будет типа: [Наименование набора движений регистра] + Набор записей (например: «ХозрасчетныйНаборЗаписей»);

Например:

 

Заключение

Рассмотренные приемы работы позволят повысить производительность и эффективность работы с программой «Конвертация данных 2.1». Описанные приемы в данной статье и в первой статье затрагивают наиболее частые нетривиальные задачи использования конвертации данных, изучив обе статьи, подобные задачи уже не будут вызывать сложностей.

конвертация данных 2.1

См. также

SALE! 20%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141458    798    297    

419

SALE! 10%

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

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

55778 50200 руб.

04.08.2015    166418    332    277    

373

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.234.x) и БП 3.0 (3.0.161.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    23984    169    51    

127

SALE! 10%

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

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    51175    228    69    

185

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    36568    94    66    

89

SALE! 10%

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

48278 43450 руб.

25.02.2015    171154    303    257    

378

SALE! 15%

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

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

15300 13005 руб.

18.02.2016    186854    589    509    

526

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    80629    312    250    

264
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. pavelru4 3 14.09.20 12:55 Сейчас в теме
Добрый день. Измените заголовок статьи. Буквы х не хватает на мой взгляд.
2. Shining_ninja 2189 14.09.20 15:29 Сейчас в теме
3. васисубатор 68 16.09.20 08:44 Сейчас в теме
Заголовок "Поиск полей" не соответствует содержанию поиска - Поиск объектов будет точнее
9. Shining_ninja 2189 17.09.20 19:51 Сейчас в теме
(3) Спасибо, название пункта немного уточнил: Поиск элементов на стороне приемника
4. blindcat2006 92 16.09.20 11:47 Сейчас в теме
5. user615043_alexey.zhookov 16.09.20 11:50 Сейчас в теме
Рисунков и вправду не хватает.
6. umberto_nobile 5 17.09.20 08:26 Сейчас в теме
7. a.varkov 17.09.20 09:06 Сейчас в теме
+1 картинки отсутствуют
8. davlen 62 17.09.20 11:22 Сейчас в теме
10. Shining_ninja 2189 17.09.20 19:53 Сейчас в теме
Коллеги, сильно извиняюсь, что не было картинок - картинки восстановлены.
11. sashocq 193 18.09.20 11:20 Сейчас в теме
Обратил внимание на вызов "Сообщить" в обработчике. Так, конечно же, делать не надо. Для этого в модуле обработки обмена есть специальная функция:
ЗаписатьВПротоколВыполнения("Не найдена  организация", СвойстваПоиска);


Тогда это сообщения будет записано и в файл лога обмена. Если это просто информационное сообщение, то в 3-м параметре укажите Ложь.
Student1C; m.s.moiseev; Shining_ninja; +3 Ответить
12. Shining_ninja 2189 31.03.21 06:45 Сейчас в теме
(11) Спасибо за полезную информацию.
13. пользователь 21.06.21 19:29
Сообщение было скрыто модератором.
...
14. mrTony2030 26.10.21 20:43 Сейчас в теме
Спасибо за материал! Передача из источника в табличную часть приемника вообще не понятно было где искать. То что при обращении нужно дописать "ТабличнаяЧасть" вообще не очевидный финт со стороны разрабов.

Небольшое замечание.
Врем_Параметр = ПараметрыТовары[Объект.Товары.Индекс(Строка)]; Это код с последней картинки.
Строго говоря, он сам параметр, как мы его записывали не вернет, а вернет коллекцию (вроде). Параметр то в табличной части может быть не один.
Врем_Параметр = ПараметрыТовары[Объект.Товары.Индекс(Строка)]["Врем_Параметр"];
Судя по картинкам так как-то надо.
15. lvictor58 137 16.03.22 09:43 Сейчас в теме
(14) Кажется для передачи табличных частей есть такие термины как "КоллекцияЗначений" и "ОбъектКоллекции".
19. wild83 06.02.23 18:06 Сейчас в теме
(14)
Врем_Параметр = ПараметрыТовары[Объект.Товары.Индекс(Строка)]["Врем_Параметр"]


Подтверждаю, это правильный ответ

Автор писал статью судя по всему под веществами, и даже не исправил
16. iBykovsky 28.07.22 10:51 Сейчас в теме
Касательно "Конвертация справочника в перечисление (перечисление в справочник)"
А ничего так, что не упомянуты следующие обязательные условия:
1. В конфе источнике (с новым подходом к хранению ставок в справочнике) должно все же существовать Пересечение.СтавкиНДС
2. У "нового" справочника СтавкиНДС должен быть реквизит ссылающийся на соответствующее ставке значение вышеуказанного перечисления.
3. В конфе приемнике строковое представление элемента перечисления должно совпадать со строковым представлением соответствующего значения в конфе источнике.

Т.е по факту имеем решение для частного случая.
Leeeeroy; +1 Ответить
20. BiTwaR 9 17.02.23 12:40 Сейчас в теме
(16) Выгрузку справочника в перечисление реализовал так. Неудобно, что в каждое ПКС нужно добавлять
Прикрепленные файлы:
user2028083; +1 Ответить
17. UNIT68RUS 01.08.22 07:48 Сейчас в теме
Вот моя реализация. Может кому-нибудь поможет.
Прикрепленные файлы:
18. PbI4 2 25.10.22 17:59 Сейчас в теме
Что будет в ПКО - ПоляПоиска СвойстваПоиска, если поиск по единственному ПКС строки в справочник?
СвойстваПоиска["Источник"]?
21. evn-zorin 33 18.07.24 15:02 Сейчас в теме
Автор, вы просто волшебник, чистый, добрый Человек!
Спасибо вам!
Оставьте свое сообщение