Конвертация данных при загрузке параметры
Конвертация данных при загрузке параметры
Как мы уже знаем, правила конвертации свойств используются для сопоставления реквизитов обменивающихся объектов. Естественно, что в правиле конвертации задаются реквизит из объекта источника и объекта приемника.
Кроме того, для ссылочных реквизитов можно указать правило конвертации объектов, которое необходимо применить для переноса значения данного реквизита.
Функционал, позволяющий передавать дополнительные параметры в информационную базу приемник из источника.
Доступ к этим данным возможен в событии правила конвертации объекта «После загрузки». Например, так:
Выгружать элементы группы через промежуточный файл — флаг определяет как выгружать объекты данного типа, через промежуточный файл (экономично с точки зрения оперативной памяти) или напрямую через память (оптимально по скорости, но при больших объемах передаваемых данных оперативная память может закончится).
На закладке «Дополнительно» можно редактировать вхождение правила в определенную группу, а так же его описание. Наименование правила формируется автоматически и недоступно для изменения.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Конвертация данных при загрузке параметры
Мы знаем что такое правила обмена и зачем они нужны. Познакомимся более подробно с дополнительным функционалом работы с правилами обмена. Откроем настройки правил обмена данными (конвертации):
В правилах обмена задаются конфигурации источника и приемника для данных, кроме того:
Можно указать имя файла по умолчанию для сохранения правил обмена, модулей выгрузки и загрузки данных для 7.7, наименование правил обмена.
Допустим, офис принимает заказы исключительно на товары, поэтому желательно установить запрет на выгрузку услуг. Если для элемента справочника Номенклатура реквизит Услуга установлен Истина, то он гарантированно не должен выгружаться. Контроль выгрузки услуг лучше всего сразу сделать опциональным, чтобы не менять правила, в случае, если удаленный офис станет принимать заказы и на услуги.
Параметры – это специализированная структура данных в алгоритмах выгрузки, с помощью которой можно обращаться к переменным обработки. Настройка структуры параметров для правил конвертации осуществляется в конфигурации «Конвертация данных», а установка значений параметров возможна в форме обработки выгрузки и загрузки данных.
Для редактирования параметров откроем форму элемента справочника Конвертации для редактируемых правил обмена и перейдем на закладку параметры. Создадим новый элемент справочника Параметры. Присвоим имя параметра – ВыгружатьУслуги. Имя параметра служит для обращения к нему в структуре Параметры при написании программного кода в обработчиках. Наименование будет отображаться в табличной части Параметров в форме обработки универсального обмена данными. Для того, чтобы параметр был виден в диалоге при настройке выгрузки нужно установить флажок «Устанавливать в диалоге» и выбрать тип значения параметра. Для работы с параметрами в диалоге необходимо также установить флажок «Выгружать параметры в формате версии 2.01» в форме элемента справочника Конвертации.
Недостаточно просто указать параметры, надо чтобы алгоритм выполнения выгрузки «понимал», в каком случаем выгружать элемент, а в каком нет. Для подобных (и многих других) случаев используется механизм обработчиков. Суть его заключается в том, что в ключевых точках выполнения всех базовых алгоритмов выгрузки и загрузки данных обрабатывается код, написанный разработчиком при создании правил обмена. Естественно, что использование такого тонкого инструмента требует осторожности и продуманности. Мы рекомендуем перед написанием собственных обработчиков внимательно ознакомится со справкой к конфигурации «Конвертация данных 2.0», где описаны все доступные в обработчиках переменные и способы их использования, а также перечислены виды обработчиков и особенности их вызова в алгоритмах обмена данными.
Для нашей цели необходимо использовать обработчик правила выгрузки «Перед выгрузкой». Откроем правило выгрузки данных Номенклатура и поместим в поле «Перед выгрузкой» на закладке «События» следующий программный код:
Что же делает наш обработчик? При написании программного кода мы использовали переменные алгоритмов выгрузки данных. Структура Параметры служит для обращения к параметру ВыгружатьУслуги, который задается в форме обработки обмена данными. Переменная объект предоставляет доступ к выгружаемому объекту. А переменная Отказ позволяет контролировать отказ от выгрузки текущего объекта. Обработчик исполняется непосредственно перед началом выгрузки объекта, что и дает возможность отменить выгрузку объекта.
Наша задача решена, осталось только сохранить правила обмена в файле. После этого откроем универсальную обработку выгрузки и загрузки данных и посмотрим как изменилась ее логика работы:
Есть возможность передавать параметры из одной конфигурации в другую. Достаточно для этого на закладке «Параметры» установить флажок «Передавать параметр при выгрузке» и этот параметр будет помещен в файл обмена и к его значению можно будет обратиться при загрузке данных. Можно для параметра указать правило конвертации, согласно которому должны будут конвертироваться значения. При помощи флажка «Передавать параметр при выгрузке» можно передавать только те параметры, которые редактируются в диалоге при выгрузке данных. Если же нужно передать параметр, которые в этом диалоге не присутствует, то нужно вызвать процедуру:
На закладке Параметры выгрузки появился параметр, изменяя значения которого услуги либо выгружаются, либо не выгружаются.
На закладках Версии и Обновления можно посмотреть информацию о выгруженных и загруженных версиях правил обмена.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Организация конвертации данных и обмена данными с помощью конфигурации «Конвертация данных 2.0»
В этом методическом руководстве описаны принципы организации конвертации данных и обмена данными между типовыми конфигурациями на платформах «1С:Предприятие 8» и «1С:Предприятие 7.7» при помощи конфигурации «Конвертация данных 2.0». При написании данного материала мы решили пойти по пути демонстрации общей концепции конфигурации «Конвертация данных 2.0» и приемов работы посредством разбора типичных ситуаций, возникающих в практике конвертации данных между типовыми конфигурациями. Как показывает опыт, такой способ изложения наиболее эффективен, поскольку позволяет специалисту быстро приобрести навыки использования средств конфигурации в своей повседневной деятельности.
Для работы с методическим руководством вам понадобится конфигурация «Конвертация данных 2.0» версии 2.09.1, внешние обработки MD80Exp.epf и V8Exchan.epf, поставляемые с релизом конфигурации «Конвертация данных 2.0». Для реализации механизма обмена данными, описанного в руководстве, необходима конфигурация «Управление торговлей 10.2» версии 10.2.5 или выше.
Общие принципы конвертации данных
Конфигурация «Конвертация данных 2.0» является мощным средством для организации конвертации данных между конфигурациями любой структуры и сложности, функционирующими как на платформе «1С:Предприятие 7.7», так и на платформе «1С:Предприятие 8». Рассмотрим общую схему конвертации данных между конфигурациями, созданными на платформе «1С:Предприятие 8».
Ключевые задачи при подготовке правил обмена – настройка соответствий между объектами метаданных конфигураций источника и приемника и настройка соответствий между свойствами объектов (реквизитами объектов и табличных частей). Процесс подготовки файла обмена заканчивается генерацией XML-файла правил и условно разделяется на следующие этапы:
Содержание этих технологических этапов будет развернуто при разборе примера в следующих параграфах руководства. Поэтому для лучшего понимания рекомендуем в процессе изучения примера по созданию правил обмена обращаться к технологическим схемам.
Для первого знакомства с концепцией системы «Конвертация данных 2.0» рассмотрим решение задачи, с которой сталкивалось подавляющее большинство специалистов, работающих с типовыми конфигурациями: перенос данных справочника из одной информационной базы в другую.
Предположим, что для организации нового рабочего места на торговом предприятии необходимо из текущей базы данных предприятия в новую базу данных перенести информацию о товарах. Такая ситуация может возникнуть при создании отдельной информационной базы филиала компании, удаленной торговой точки, склада и пр.
Готовим описание метаданных
Для подготовки правил обмена необходимо получить информацию о структуре конфигураций источника и приемника данных. Для этих целей используется внешняя обработка MD80Exp.epf для конфигураций на платформе «1С:Предприятие 8» и MD77Exp.ert для конфигураций на платформе «1С:Предприятие 7.7». Напомним, что эти обработки входят в комплект дистрибутива конфигурации «Конвертация данных 2.0».
Формирование описания структуры метаданных займет некоторое время. После завершения обработки мы получили XML-файл, содержащий описание метаданных конфигурации «Управление торговлей 10.2» в формате конфигурации «Конвертация данных 2.0».
Теперь нам необходимо загрузить полученное описание метаданных в информационную базу конфигурации «Конвертация данных 2.0» для подготовки правил обмена. Для этого запустим конфигурацию «Конвертация данных 2.0» и откроем обработку Загрузка описания метаданных с помощью кнопки Загрузка описания структуры конфигурации на панели интерфейса. В поле Имя файла выберем файл описания метаданных, который мы только что подготовили. И нажмем Выполнить загрузку для запуска обработки.
В верхней части формы в виде дерева представлена структура метаданных. В табличной части на закладке Свойства показаны реквизиты, табличные части объектов метаданных. Для документов дополнительно показана структура записей регистров, движения по которым делает соответствующий документ.
Так как в рамках нашей задачи конфигурация-источник и конфигурация-приемник идентичны, подготовительный этап создания правил обмена закончен. В случае, когда нужно организовать обмен между конфигурациями разной структуры, весь процесс нужно повторить для второй конфигурации.
Создаем правила конвертации
Теперь, когда мы загрузили структуру метаданных конфигураций, используемых в обмене, можно начинать подготовку правил обмена. Обратите внимание, что на этом этапе работа будет проводиться исключительно в конфигурации «Конвертация данных 2.0», без обращения к конфигурациям
– участникам обмена. Это позволяет эффективно организовать работу даже в том случае, когда конфигурации источник и приемник для вас недоступны, а имеются только их описания в виде XML-файлов.
Обратите внимание, что для одной и той же пары конфигураций мы можем создавать и редактировать несколько правил обмена данными, предназначенных для разных целей.
Очевидно, для корректной перегрузки справочника Номенклатура нам нужно создать правило конвертации для этого справочника и правила конвертации свойств для каждого реквизита.
Теперь перейдем к формированию правил конвертации свойств. Воспользуемся обработкой автонастройки свойств (пункт Синхронизация свойств объектов подменю Обработки ). Так же как и для объектов, автонастройка проанализирует реквизиты источника и приемника и предложит нам вариант установления соответствий.
Оставим все флажки установленными. По нажатию кнопки Записать для всех выбранных соответствий реквизитов будут созданы правила конвертации.
Настраиваем правила конвертации свойств
Итак, всю «черную» работу за нас выполнили обработки автосинхронизации. Теперь рассмотрим более детально результат и внесем необходимые коррективы.
Если же в колонке Поиск не будет установленных флажков, то для справочника Номенклатура элемент при каждой загрузке будет создаваться заново. Это может иметь очень неприятные последствия, если вы по ошибке запустите загрузку вторично. Новые элементы будут дублироваться даже в случае, когда у справочника включена уникальность кодов и есть элементы с такими же кодами.
Воспользуемся еще раз обработкой автосинхронизации объектов. С ее помощью мы сможем создать сразу все нужные нам правила конвертации объектов.
В результате у нас появятся уже семь правил конвертации. Обратите внимание, что правило СтавкиНДС создано автоматически в процесс группового создания свойств. Эта обработка не только создает правила конвертации свойств, но и контролирует наличие правил конвертации для объектов ссылочного типа, поэтому при обработке реквизита СтавкаНДС было создано правило конвертации СтавкиНДС.
Теперь для каждого правила мы видим текущий и предлагаемый способ синхронизации. Нажмем кнопку Записать для установки синхронизации. В результате для всех выбранных правил будет установлены новые реквизиты синхронизации.
Перегружаем данные
Для выгрузки данных недостаточно установить соответствия объектов и реквизитов источника и приемника. Нужно еще указать, какие именно объекты и как выгружать. Для этого необходимо создать правила выгрузки данных.
На этом работа по редактированию правил завершена. Поскольку наша задача
Теперь можно перейти к генерации файла правил обмена.
С помощью кнопки Выгрузить данные запустим обработку выгрузки. Обратите внимание, что выгрузка данных может занять значительное время.
Дальнейшая доработка правил обмена
Параметры – это специализированная структура данных в алгоритмах выгрузки, с помощью которой можно обращаться к переменным обработки. Настройка структуры параметров для правил конвертации осуществляется в конфигурации «Конвертация данных», а установка значений параметров возможна в форме обработки V8Exchan.epf. Обратите внимание, что механизм установки параметров в форме реализован в обработках V8Exchan.epf, начиная с версии 2.01.
Недостаточно просто указать параметры, нужно, чтобы алгоритм выполнения выгрузки «понимал», в каком случае выгружать элемент, а в каком
– нет. Для подобных (и многих других) случаев используется механизм обработчиков. Суть его заключается в том, что в ключевых точках выполнения всех базовых алгоритмов выгрузки и загрузки данных обрабатывается код, написанный разработчиком при создании правил обмена. Естественно, что использование такого тонкого инструмента требует осторожности и продуманности. Мы рекомендуем перед написанием собственных обработчиков внимательно ознакомиться со справкой к конфигурации «Конвертация данных 2.0», где описаны все доступные в обработчиках переменные и способы их использования, а также перечислены виды обработчиков и особенности их вызова в алгоритмах обмена данными.
Если Параметры.ВыгружатьУслуги = ЛОЖЬ И Объект.Услуга = ИСТИНА Тогда
Отказ = ИСТИНА;
КонецЕсли;
Наша задача решена, осталось только сохранить правила обмена в файле.
Лайфхаки конвертации данных 2.1
Чтобы выгрузить один объект источника в несколько объектов приемника, можно использовать мощный инструмент расширения возможностей правил конвертации – «ВыгрузитьПоПравилу».
ВыгрузитьПоПравилу(Источник,
Приемник,
ВходящиеДанные,
ИсходящиеДанные,
ИмяПКО,
УзелСсылки,
ТолькоПолучитьУзелСсылки,
ПКО,
ЭтоПравилоСГлобальнойВыгрузкойОбъектов,
ВыборкаДляВыгрузкиДанных)
Пример реальной задачи. Необходимо выгрузить справочник – «НоменклатурныеГруппы» в три объекта на стороне приемника: «НоменклатурнаяГруппа» (справочник), «ЗаказНаПроизводство» (документ), «СтатусыЗаказов» (регистр сведений). Для решения данной задачи можно использовать функцию «ВыгрузитьПоПравилу».
В правилах выгрузки данных (далее-ПВД) в обработчике «ПередОбработкой» происходит выгрузка в объект приемника «НоменклатурнаяГруппа» по стандартной выгрузке (ИмяПКО), а в обработчике «ПослеВыгрузки» происходит выгрузка в объекты «ЗаказНаПроизводство» и «СтатусыЗаказов» с помощью функции «ВыгрузитьПоПравилу»:
Если необходимо выгрузить иерархический справочник (элементы и папки) с учетом иерархии и поиск в базе приемника будет осуществляться по внутреннему идентификатору объекта источника (по полям поиска не будет продолжен поиск), то для корректной выгрузки иерархии необходимо установить галочку – «Поиск» у реквизита «ЭтоГруппа» (см. рисунок 1).
Рисунок 1 – Выгрузка иерархического справочника.
Если не установить галочку «Поиск» у реквизита «ЭтоГруппа», то папки объекта будут выгружаться как элементы.
Объекты регистрируются по правилам регистрации объектов к выгрузке только при изменении реквизитов объекта, которые указаны в правилах конвертации свойств (далее-ПКС) объекта (правила обмена данными). При необходимости регистрировать объект к выгрузке и при изменении реквизитов, которые не указаны в ПКС, достаточно данные реквизиты добавить в ПКС и установить галочку – «отключить».
Это может потребоваться для задачи, когда у нас есть реквизиты на стороне базы источника, которых нет в базе приемника, и только при их изменении объекты должны регистрироваться к обмену.
Когда стоит задача выгружать вместо регистрируемого объекта другой объект, то при регистрации исходного объекта в правилах регистрации объектов в обработчике «ПослеОбработки» через метод «ЗарегистрироватьИзменения» плана обмена можно зарегистрировать необходимый объект на узлах плана обмена.
ЗарегистрироватьИзменения (Узлы, Данные)
Пример реальной задачи. Несколько документов «Списания с расчетного счета» по одному документу «Заявка на расходование ДС» необходимо выгружать из конфигурации источника в один документ «Списания с расчетного счета» конфигурации приемника. При изменении документа «Списания с расчетного счета» регистрируется к обмену документ «Заявка на расходование ДС», который при выгрузке собирает по определенным правилам данные со всех документов «Списания с расчетного счета».
В продолжение пункта 4. При выгрузке любого объекта происходит проверка, соответствует ли он существующим правилам регистрации. Если при регистрации вместо исходного объекта регистрируется к выгрузке другой объект, то новый объект также будет проходить проверку по своему типу правил регистрации объектов. В случае несоответствия правилам регистрации, объект будет выгружать, как «УдалениеОбъекта».
Для устранения данной нестыковки выгружаемого объекта и правил регистрации объекта, нужно использовать в правилах регистрации в обработчике «ПослеОбработки» параметр «Выгрузка».
Описание параметра Выгрузка:
Выгрузка (только чтение) – Булево – параметр определяет контекст выполнения правила регистрации. Истина – правило регистрации выполняется в контексте выгрузки объекта. Ложь – правило регистрации выполняется в контексте перед записью объекта.
Если по одному объекту источнику в правилах конвертации объектов присутствуют несколько правил, то система будет использовать по умолчанию правило, которое совпадает по наименованию с наименованием объекта источника (см. рисунок 2).
Рисунок 2 – Выбор правила конвертации объекта по умолчанию.
Пример реальной задачи. Данный подход может пригодиться при выгрузке субконто, когда система определяет правила выгрузки объекта по умолчанию.
При необходимости создавать на стороне приемника новые элементы документов (справочников) и подставлять их в исходный объект, можно применить следующий подход:
— определить правило заполнения нового документа (справочника) на стороне приемника (например, через входящие данные);
— описать заполнение реквизита нового документа (справочника) в исходном объекте (например, через исходящие данные);
— заполнять при выгрузке на стороне источника новый документ (справочник) уникальным значением (например, числом).
Пример реальной задачи. Необходимо на стороне приемника создавать новые документы «ДокументРасчетовСКонтрагентом» в документе ввод начальных остатков по счетам взаиморасчетов. На стороне источника заполняем реквизит «ДокументРасчетовСКонтрагентом» при выгрузке начальных остатков по счетам взаиморасчетов уникальным значением (числом):
В исходном объекте («ВводНачальныхОстатков») описываем правила выгрузки реквизита «ДокументРасчетовСКонтрагентом»:
Определяем правило заполнения «ДокументаРасчетовСКонтрагентом» на стороне приемника (см. рисунок 3).
Рисунок 3 – Правили выгрузки «ДокументРасчетовСКонтрагентов».
В конвертации данных нельзя создать параметр с типом «ТаблицаЗначений» на вкладке «Параметры» (см. рисунок 4).
Рисунок 4 – Допустимые типы для параметров конвертации данных.
Возможность создать параметр с типом «ТаблицаЗначений» при необходимости присутствует в системе, необходимо в общем обработчике «ПередЗагрузкойДанных» определить параметр.
Также необходимо в общем обработчике «ПослеЗагрузкиДанных» удалить данный параметр.
При выгрузке из базы источника можно указывать вместо элемента перечисления или предопределенного значения справочника текстовое значение, которое равно наименованию элемента перечисления или предопределенного значения справочника.
Пример реальной задачи. В базе приемника присутствует реквизит с типом «Перечисление». При выгрузке реквизита (обработчик: «Перед выгрузкой») можно указать текстовое значение равное наименованию элемента перечисления на стороне базы приемника (см. рисунок 5). Данный подход может ускорить процесс разработки в конвертации данных.
Рисунок 5 – Заполнение реквизита с типом «Перечисление».
Когда необходимо выгрузить большой объем данных и нет необходимости выгружать полностью ссылочные данные, то можно сократить объем выгружаемых данных с помощью параметров «ВыгрузитьОбъект» («ВыгрузитьТолькоСсылку») в обработчике «ПриВыгрузке» правил конвертации свойств (ПКС):
Пример реальной задачи. Данное ускорение может потребоваться, когда все ссылочные объекты (нормативно-справочная информация) из базы источника ежедневно интегрируется в базу приемника, а документы должны транслироваться с определенным интервалом (раз в месяц). В таком случае при обмене документами между базами нет необходимости полностью передавать ссылочные объекты, а можно передавать только ссылку, что ускорит процесс выгрузки.
Рассмотренные приемы работы позволят повысить производительность и эффективность работы с программой конвертацией данных 2.1.