конвертация конфигурации что это
Конфигурация Конвертация данных на базе 1С 8.3
Конвертация данных 2.0 и 2.1 — технологическая конфигурации фирмы 1С, реализованная на версии платформы от 8.1 до 8.3.
Главная задача инструмента — написание правил обмена между прикладными решениями 1С 8 и 7. Актуальная версия конвертации данных сегодня — 3.0.
Конвертация данных — очень полезная конфигурация, с помощью неё можно решить не только вопрос переноса информации из одной информационной базы в другую, но и, например, преобразование информации внутри одной базы.
Конфигурацию очень удобно использовать при переносе остатков в 1С.
Конвертация данных будет полезна любому программисту: наличие навыков создания правил обмена — это серьезный плюс к профессиональным навыкам.
Скачать конфигурацию «Конвертация данных» бесплатно по ссылке (или на партнерском диске ИТС).
Обучение 1C Конвертация данных 2.0
Для обучения работы с конфигурации лучше всего подойдет решение практических задач. Попробуйте придумать себе задачи, например: перенести какую-либо информацию из одной базы в другую, превратить документ реализации в документ поступления, «загнать» текущие остатки по бухгалтерскому учету в документ «ввода остатков» и другие задачки.
Очень полезно будет разобраться в «типовых» правилах обмена 1С 8.3, там зачастую можно найти интересные примеры реализации задач.
Для постижения основ вам потребуются материалы, рассмотрим их ниже.
Видео инструкция по конвертации
Азы настройки обмена данными в 1С с помощью конфигурации «1С Конвертации данных» на примере смотрите в видео:
Материалы, учебники для изучения 1С Конвертации данных 2.0
Материалов и документации в сети не слишком большое множество, я попробовал собрать самые важные и интересные материалы:
0. Первым делом советую бесплатный видеокурс Ильи Леонтьева, он доступен по ссылке.
1. Я бы посоветовал прежде всего пользоваться встроенной справкой в конфигурацию. Она действительно неплохо написана и грамотно реализована технически:
2. Второй по важности источник информации — сайт http://www.mykod.info/ (сайт закрылся), специализированный как раз на конвертации данных. Там Вы сможете скачать большое количество материалов по конвертации.
3. Отдельно хотелось бы выделить методичку учебник — Конвертация_данных._Методика_работы_и_примеры (автор — Ольга Кузнецова).
Другие статьи по 1С:
Видеокурс по 1С конвертации данных:
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Использование 1С:Конвертация данных 2.1 для загрузки данных из любого источника
Итак начнем.
Цель: загрузить данные из внешнего источника (в нашем примере это будет результат запроса к БД MS SQL) в базу 1С (в нашем случае, это будет 1С:ERP). Загружать будем справочник Номенклатура.
Для этого заходим в программу Конвертация данных 2.1, загружаем структуру конфигурации 1С:ERP 2 и создаем новые правила обмена данными (из 1С:ERP в 1С:ERP).
Далее создаем ПКО (правила конвертации объектов) и ПВД (правила выгрузки данных) для конвертации и, соответственно, выгрузки справочника Номенклатура.
В ПВД указываем способ выборки «Произвольный алгоритм», правило конвертации «Номенклатура».
Код обработчика «Перед обработкой»:
Тут я не буду расписывать модуль функции МодульИнтеграции.ВыполнитьЗапросНаСервере(). Предположим, что эта функция по указанному SQL запросу и параметрам подключения возвращает ТаблицуЗначений, соответствующую ожидаемому результату запроса.
Например структуру данных для конвертации реквизита ВидНоменклатуры заполняем в обработчике ПКС ПередВыгрузкой:
ТипНоменклатуры определяем так же в обработчике ПередВыгрузкой, значением перечисления:
Остальное аналогичным образом. (нюансы могу пояснить в комментариях, чтобы не засорять статью).
Мы получили XML-файл правил обмена.
Но мы пойдем дальше.
Есть такое понятие как Online-обмен. Суть его в том, что обработка создает COM-экземпляр обработки в базе-получателе данных.
Данные в обработку-получатель передаются при записи обработкой-отправителем каждого узла XML в создаваемый файл данных (даже если это online-обмен, файл данных все же создается, пусть и неявно). Т.е. как только обработка-отправитель записывает очередной узел в файл с данными, этот же узел передается для загрузки обработке-получателю (не файл, а именно узел).
Но зачем же нам городить огород с COM-объектами?! Создадим еще один экземпляр объекта типовой обработки локально и укажем механизму конвертации использовать его так, как если бы это был COM-объект в случае online-обмена.
Собственно код, который делает эту замену:
Этот код нужно добавить в правила обмена в глобальный обработчик конвертации ПередВыгрузкойДанных (например так:). Пишу здесь, т.к. я этот обработчик добавляю программно при заполнении реквизитов Обработки.УниверсальныйОбменДаннымиXML, чтобы оставить возможность отладки.
Пример заполнения текста глобального обработчика ПередВыгрузкойДанных правил обмена при программном создании и запуске обработки обмена:
Собственно все.
Остается только ВыполнитьВыгрузку(), которая обработает включенные ПВД, загрузит данные из БД SQL, сформирует XML и сразу же выполнит его загрузку в эту же базу.
Ниже приведу код, которым я пользуюсь для программной загрузки данных с использованием правил конвертации:
P.S.
Всем спасибо за чтение, комментарии, плюсы!
Конвертация конфигурации что это
Мы знаем что такое правила обмена и зачем они нужны. Познакомимся более подробно с дополнительным функционалом работы с правилами обмена. Откроем настройки правил обмена данными (конвертации):
В правилах обмена задаются конфигурации источника и приемника для данных, кроме того:
Можно указать имя файла по умолчанию для сохранения правил обмена, модулей выгрузки и загрузки данных для 7.7, наименование правил обмена.
Допустим, офис принимает заказы исключительно на товары, поэтому желательно установить запрет на выгрузку услуг. Если для элемента справочника Номенклатура реквизит Услуга установлен Истина, то он гарантированно не должен выгружаться. Контроль выгрузки услуг лучше всего сразу сделать опциональным, чтобы не менять правила, в случае, если удаленный офис станет принимать заказы и на услуги.
Параметры – это специализированная структура данных в алгоритмах выгрузки, с помощью которой можно обращаться к переменным обработки. Настройка структуры параметров для правил конвертации осуществляется в конфигурации «Конвертация данных», а установка значений параметров возможна в форме обработки выгрузки и загрузки данных.
Для редактирования параметров откроем форму элемента справочника Конвертации для редактируемых правил обмена и перейдем на закладку параметры. Создадим новый элемент справочника Параметры. Присвоим имя параметра – ВыгружатьУслуги. Имя параметра служит для обращения к нему в структуре Параметры при написании программного кода в обработчиках. Наименование будет отображаться в табличной части Параметров в форме обработки универсального обмена данными. Для того, чтобы параметр был виден в диалоге при настройке выгрузки нужно установить флажок «Устанавливать в диалоге» и выбрать тип значения параметра. Для работы с параметрами в диалоге необходимо также установить флажок «Выгружать параметры в формате версии 2.01» в форме элемента справочника Конвертации.
Недостаточно просто указать параметры, надо чтобы алгоритм выполнения выгрузки «понимал», в каком случаем выгружать элемент, а в каком нет. Для подобных (и многих других) случаев используется механизм обработчиков. Суть его заключается в том, что в ключевых точках выполнения всех базовых алгоритмов выгрузки и загрузки данных обрабатывается код, написанный разработчиком при создании правил обмена. Естественно, что использование такого тонкого инструмента требует осторожности и продуманности. Мы рекомендуем перед написанием собственных обработчиков внимательно ознакомится со справкой к конфигурации «Конвертация данных 2.0», где описаны все доступные в обработчиках переменные и способы их использования, а также перечислены виды обработчиков и особенности их вызова в алгоритмах обмена данными.
Для нашей цели необходимо использовать обработчик правила выгрузки «Перед выгрузкой». Откроем правило выгрузки данных Номенклатура и поместим в поле «Перед выгрузкой» на закладке «События» следующий программный код:
Что же делает наш обработчик? При написании программного кода мы использовали переменные алгоритмов выгрузки данных. Структура Параметры служит для обращения к параметру ВыгружатьУслуги, который задается в форме обработки обмена данными. Переменная объект предоставляет доступ к выгружаемому объекту. А переменная Отказ позволяет контролировать отказ от выгрузки текущего объекта. Обработчик исполняется непосредственно перед началом выгрузки объекта, что и дает возможность отменить выгрузку объекта.
Наша задача решена, осталось только сохранить правила обмена в файле. После этого откроем универсальную обработку выгрузки и загрузки данных и посмотрим как изменилась ее логика работы:
Есть возможность передавать параметры из одной конфигурации в другую. Достаточно для этого на закладке «Параметры» установить флажок «Передавать параметр при выгрузке» и этот параметр будет помещен в файл обмена и к его значению можно будет обратиться при загрузке данных. Можно для параметра указать правило конвертации, согласно которому должны будут конвертироваться значения. При помощи флажка «Передавать параметр при выгрузке» можно передавать только те параметры, которые редактируются в диалоге при выгрузке данных. Если же нужно передать параметр, которые в этом диалоге не присутствует, то нужно вызвать процедуру:
На закладке Параметры выгрузки появился параметр, изменяя значения которого услуги либо выгружаются, либо не выгружаются.
На закладках Версии и Обновления можно посмотреть информацию о выгруженных и загруженных версиях правил обмена.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Конвертация данных 3.0. Новый подход к обменам данными
О чем эта статья?
В данной статье разберем основы технологии обмена данными с помощью 1С:Конвертации данных 3.0 – как это работает, какие преимущества, актуальны ли старые технологии обмена.
Многие специалисты работали с обменами данных в КД 2.0/2.1. Конвертация 3.0 представляет совершенно новую технологию. Сейчас мы расскажем её суть.
В чем суть Конвертации данных 3.0
Конфигурация «Конвертация данных» впервые была выпущена фирмой 1С для платформы 7.7, и с тех пор механизмы обменов данными развивались в рамках одного подхода.
Все обмены между различными по структуре базами 1С требовали написания правил обмена.
При таком подходе в базе-Источнике каждый объект проходит ряд преобразований, которые описаны в правилах, созданных для этой пары баз.
Xml-узел, в который выгружается этот объект, по структуре аналогичен объекту в базе-Приемнике. При загрузке его остается только преобразовать в объект информационной базы.
Для того, чтобы создать правила, нужно знать структуру метаданных базы-Источника и базы-Приемника, и описать преобразование объектов всех нужных типов. Правила выгружаются во внешний xml-файл, который используется каждый раз при выгрузке.
Одна из проблем этого подхода заключается в том, что после каждого изменения конфигурации баз Источника или Приемника необходимо проверять правила на актуальность, что является долгим и не всегда простым процессом.
Тем более, что, если обмен выполняется в обе стороны, то таких правил двое.
В октябре 2014 года была выпущена первая версия «Конвертации данных», редакция 3.0, предназначенная для тестирования.
Новая технология, реализованная в «Конвертации данных 3.0», призвана обособить процессы выгрузки и загрузки, сделать их независимыми. Для этого создана совершенно другая концепция обмена.
Данные будут выгружаться в формат EnterpriseData, который не зависит напрямую от структуры баз Источника и Приемника.
Формат EnterpriseData – это xml-формат, который создан, чтобы стать универсальным для всех обменов как между базами 1С, так и со сторонними базами.
Он предоставляется в виде xsd схемы, на основании которой формируется механизм преобразования объектов между этим форматом и любыми объектами информационных баз. Для упрощения этих преобразований формат EnterpriseData содержит объекты, аналогичные объектам метаданных типовых конфигураций.
При обмене через универсальный формат в каждой из баз содержится только код для преобразования объектов из базы в универсальный формат EnterpriseData и обратно.
При выгрузке не используется информация о том, какую структуру имеют базы-получатели. Поэтому при изменении конфигурации каждой из баз, участвующих в обмене, нужно будет изменить этот код только в этой базе.
Этот код находится в общем модуле МенеджерОбменаЧерезУниверсальныйФормат. Там же находятся и все обработчики событий, и весь механизм преобразования объектов, благодаря чему значительно упрощается процесс отладки. Там же могут быть описаны параметры, с помощью которых можно использовать единожды описанную там логику преобразования объектов для обмена с разными базами.
При необходимости разработчик может изменить структуру формата EnterpriseData для решения более широкого круга задач.
В процессе настройки обмена сама конфигурация «Конвертация данных 3.0» выполняет на данный момент только одну функцию — на базе структуры метаданных баз, участвующих в обмене, и схемы универсального формата она формирует тексты общих модулей МенеджерОбменаЧерезУниверсальныйФормат для каждой из баз.
Удобным будет сформировать эти модули на начальных этапах настройки обмена, а дальнейшие доработки выполнять непосредственно в тексте модулей в конфигураторе.
Новый механизм обмена не исключает также использования правил регистрации. Их настройка в настоящий момент выполняется с помощью конфигурации «Конвертация данных 2.0».
Таким образом, новая технология имеет ряд преимуществ:
В ближайшей перспективе планируется постепенный перевод всех обменов между типовыми конфигурациями на новый стандарт.
Однако обмен через Универсальный формат не рассматривается как полная замена технологии обменов по правилам. «Конвертация данных» редакции 2.0/2.1 будет поддерживаться и дальше, так как для решения определенного круга задач она остается более удобным и гибким механизмом.
Чтобы узнать, как КД 3.0 выполняет обмен данными, переходите к следующей статье – Конвертация данных 3.0. Новая технология.
Лайфхаки конвертации данных 2.1 (часть 2)
Конвертация строки в справочник (перечисления) и обратно
Конвертация строки в справочник
Если в базе источника реквизит имеет тип «Строка», а в базе приемника тип «Справочник», то необходимо разработать отдельное правило конвертации объектов. Обязательно в правиле оставить Объект-источник пустым, иначе при выгрузке будет выдаваться ошибка. В конвертации объекта описать поля поиска, а также реквизит, в который будет грузиться значения реквизита объекта источника, и при необходимости описать заполнение остальных реквизитов справочника. В правиле в обработчике «Перед выгрузкой» реквизита написать следующий алгоритм (см. рисунок 1).
Рисунок 1 – Описание обработчика «Перед Выгрузкой».
Конвертация строки в перечисление
Если в базе источника реквизит имеет тип «Строка», а в базе приемника тип «Перечисление», то отдельное правило конвертации объектов разрабатывать не нужно, все действия описываются в конвертации свойств. Необходимо в обработчике «Перед выгрузкой» свойства описать алгоритм заполнения перечисления объекта приемника от значений реквизита объекта источника, то есть:
Конвертация справочника в строку
Если в базе источника реквизит имеет тип «Справочник», а в базе приемника тип «Строка», то отдельное правило конвертации объектов разрабатывать не нужно, все действия описываются в конвертации свойств. Необходимо в обработчике «Перед выгрузкой» свойства описать алгоритм заполнения реквизита объекта приемника от реквизита справочника объекта источника, то есть:
Конвертация перечисления в строку
Если в базе источника реквизит имеет тип «Перечисление», а в базе приемника тип «Строка», то отдельное правило конвертации объектов разрабатывать не нужно, все действия описываются в конвертации свойств. Необходимо в обработчике «Перед выгрузкой» свойства описать алгоритм заполнения реквизита объекта приемника от перечисления объекта источника, то есть:
Конвертация справочника в перечисление (перечисление в справочник)
Конвертация справочника в перечисление
Данная задача становится актуальной с учетом изменения перечисления «Ставки НДС» на справочник в новых конфигурациях. Теперь при конвертации объектов из новых конфигураций (тип: справочник) в конфигурации, где ставки НДС еще являются перечислением, необходимо будет разрабатывать соответствующее правило конвертации объектов.
Рисунок 2 – Не запоминать выгруженные объекты.
Иначе система будет перезаписывать выгрузку одного и того же значения перечисления.
Будет использоваться обработчик «При выгрузке», а при использовании данного обработчика конвертация значений не отрабатывает.
То есть нам необходимо в переменную «УзелСсылки» присвоить значение метаданных перечисления, которое соответствует базе приемника, тогда система автоматически при загрузке определит нужное значение.
Конвертация перечисления в справочник
Отключение проверки полей поиска
В созданных правилах конвертации объектов, по которым не заполнена колонка «Поля поиска» при сохранении правил, система предложит указать автоматически поля поиска (см. рисунок 3).
Рисунок 3 – Предупреждение – не указаны поля поиска.
При каждом сохранении правил, система будет выдавать данное сообщение. Если при достаточно большом количестве правил случайно нажать «Да», то система создаст поля поиска по всем правилам, и может потребоваться достаточно большое время восстанавливать обратно. Чтобы избежать таких неприятных ситуаций, данную проверку можно отключить (путь: Сервис – Настройки пользователя) (см. рисунок 4).
Рисунок 4 – Отключение проверки полей поиска.
Не регистрировать документы к обмену при определенных действиях
Документы регистрируются к обмену по правилам регистрации объектов при любых действиях (проведение, выполнение различных обработок и т.д.). Если необходимо не регистрировать документы при определенных действиях (например: при выполнении обработки по перепроведению документов), то можно использовать функционал дополнительные свойства.
В месте изменения документа, который не должен регистрироваться к обмену, нужно установить дополнительное свойство. В правилах регистрации объектов по документу в обработчике событий «После обработки» добавить:
В таком случае документ при групповом перепроведении не будет регистрироваться к обмену.
Общий алгоритм для всех объектов одного типа метаданных
Если необходимо учитывать один алгоритм для всех объектов одного типа метаданных (например: не выгружать помеченные на удаления справочники), то можно воспользоваться глобальными обработчиками, в них прописать один раз алгоритм, который будет действовать для всех существующих и новых объектов. Такой подход позволяет избежать дублирования кода и не забыть написать необходимый алгоритм для новых справочников.
Например, для задачи – не выгружать помеченные на удаления справочники, необходимо в глобальном обработчике «Перед выгрузкой объекта» написать следующий алгоритм:
Перенос субконто по своим правилам
У одного типа субконто могут присутствовать несколько правил выгрузки объекта, и система в таком случае будет по умолчанию выбирать одно определенное правила согласно приоритету и наименованию. Если же необходимо выгрузить субконто не по выбранному по умолчанию правилу, то можно воспользоваться следующим алгоритмом:
Рисунок 5 – Перенос плана видов характеристик.
Описывается последовательность действий для каждого типа субконто.
Важный момент. Обязательно нужно прописать алгоритм выгрузки для каждого возможного типа субконто. После того, как добавлен код в обработчик «При выгрузке», типовое определение правила от типа субконто не срабатывает.
Поиск элементов на стороне приемника
Конвертация данных позволяет разрабатывать собственные алгоритмы поиска элементов на стороне приемника, для этого предназначен обработчик «Поля поиска».
В обработчике «Поля поиска» могут участвовать только те реквизиты, у которых установлен признак «Поиск» в конвертации свойств. Данные реквизиты не обязательно должны участвовать в поиске нужного элемента, они могут присутствовать в различной другой логике алгоритма (например: в условиях алгоритма обработчика «Поля поиска»).
Пример обработчика «Поля поиска»:
В обработчике мы можем задать до 10 итераций через переменную «НомерВариантаПоиска». В каждой итерации в зависимости от условий задать поля поиска элемента через переменную «СтрокаИменСвойствПоиска» (наименование полей задаются, как они заданы у приемника). Получить значение поля поиска можно через структуру «СвойстваПоиска» (наименование полей задаются, как они заданы у приемника). Для прекращения поиска нужно использовать переменную «ПрекратитьПоиск».
Реквизиты узлов источника и приемника
В конвертации данных можно обращаться к реквизитам плана обмена. Это может быть необходимо, например, при тиражировании правил обмена на несколько баз и некоторые особенности функционала отличаются между базами (данные особенности будут учитываться с помощью реквизитов плана обмена).
На стороне источника, чтобы обратиться к узлу плана обмена, необходимо использовать переменную: «УзелДляОбмена».
Например, в правилах обмена на стороне источника можно обратиться к ИНН выбранной организации в плане обмена:
На стороне приемника, чтобы обратиться к узлу плана обмена, необходимо использовать переменную: «УзелОбменаЗагрузкаДанных».
Например, в правилах обмена на стороне приемника можно обратиться к ИНН выбранной организации в плане обмена:
Протокол (лог) синхронизации между базами
Важным элементом обмена между базами является протокол (лог) синхронизации. Данный протокол должен показывать в удобном виде всю необходимую информацию об обмене (количество выгруженных элементов; список выгруженных элементов; ошибки обмена и т.д.). Чем сложнее алгоритмы обмена, тем более расширенный должен быть лог (например: у нас несколько документов на стороне источника объединяются в один документ на стороне приемника, в таком случае протокол должен показывать, как документы объединялись). Лог должен содержать значимую информацию, которая оперативно поможет разобраться с вопросами связанными с синхронизацией.
Можно выделить три наиболее частых варианта создания протокола (лога) синхронизации между базами без кастомизации баз источника и приемника:
1) Записывать всю необходимую информацию в журнал регистрации. Данный подход имеет существенные недостатки. Чаще всего журнал регистрации имеет большой объем информации, это влияет на скорость анализа нужной информации (журнал регистрации может работать медленно), и предоставление данных в журнале регистрации не всегда удобно для анализа данных.
2) Отправлять все необходимые данные на электронную почту. После каждой синхронизации записывать данные в регистр сведений (ОтправкаEmail) для последующей отправки необходимым адресатам. В данном случае недостаток в том, что может возникнуть большое количество писем за день, и в них будет сложно проводить анализ.
3) Записывать всю необходимую информацию во внешний источник (файлы excel и т.д.). Данный подход является наиболее предпочтительный, т.к. можно создать 1 файл в день, в него дописывать всю нужную информацию за день в удобном виде для анализа.
Можно выбрать любой из данных подходов или кастомизировать базы источника и приемника для хранения лога в самих базах, но наличие подробного протокола (лога) может помочь во многих вопросах, связанных с синхронизацией между базами.
Передача параметра из источника в табличную часть приемника
При возникновении задач заполнения на стороне приемника в табличной части колонок, отсутствующих на стороне источника по данным колонок, которые отсутствуют на стороне приемника. Можно воспользоваться функционалом передачи значений отсутствующих колонок на стороне приемника в параметры табличной части и на основании этих данных заполнять нужную колонку.
Передача значений табличной части из источника в параметры табличной части приемника имеет ряд особенностей:
Рисунок 6 – Создание параметра в конвертации свойств табличной части приемника.
Рисунок 7 – Заполнение параметра в конвертации свойств табличной части.
— если параметр был создан в табличной части, то обращение будет типа: [Наименование табличной части] + ТабличнаяЧасть (например: «ТоварыТабличнаяЧасть»);
— если параметр был создан в наборе движений регистра, то обращение будет типа: [Наименование набора движений регистра] + Набор записей (например: «ХозрасчетныйНаборЗаписей»);
Рассмотренные приемы работы позволят повысить производительность и эффективность работы с программой «Конвертация данных 2.1». Описанные приемы в данной статье и в первой статье затрагивают наиболее частые нетривиальные задачи использования конвертации данных, изучив обе статьи, подобные задачи уже не будут вызывать сложностей.