Организация конвертации данных и обмена данными с помощью конфигурации «Конвертация данных 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».
Обмен данными по технологии «Конвертация данных 2.0» можно разделить на две стадии – стадию подготовки правил обмена и стадию обмена данными. Самым сложным и ответственным этапом, безусловно, является подготовка правил обмена. Процесс подготовки правил обмена представлен на схеме 1 . Как видно на схеме, основным «сырьем» для подготовки правил выступает XML -описание структуры метаданных информационных баз, которые участвуют в обмене. Описание метаданных готовится с помощью внешней обработки MD80Exp.epf (для конфигураций на платформе «1С:Предприятие 8») в виде XML-файла. Затем этот файл обрабатывается средствами конфигурации «Конвертация данных 2.0». В базе конвертации создаются специализированные объекты для описания метаданных, на основе которых будут готовиться правила обмена данными.
Ключевые задачи при подготовке правил обмена – настройка соответствий между объектами метаданных конфигураций источника и приемника и настройка соответствий между свойствами объектов (реквизитами объектов и табличных частей). Процесс подготовки файла обмена заканчивается генерацией XML-файла правил и условно разделяется на следующие этапы:
- Установка конфигураций источника и приемника, общая настройка правил обмена.
- Настройка соответствий между объектами метаданных источника и приемника – создание правил конвертации объектов.
- Настройка соответствий между свойствами объектов в рамках правил конвертации объектов, в том числе установка соответствий значений перечислений – создание правил конвертации свойств и правил конвертации значений.
- Настройка принципов выборки объектов для выгрузки – создание правил выгрузки.
- Настройка операций, проводящихся перед загрузкой данных, – создание правил очистки данных.
- Дополнительная настройка обработчиков событий.
Содержание этих технологических этапов будет развернуто при разборе примера в следующих параграфах руководства. Поэтому для лучшего понимания рекомендуем в процессе изучения примера по созданию правил обмена обращаться к технологическим схемам.
Вторая стадия – собственно обмен данными. Это стадия использования подготовленных правил конвертации. Как видно из схемы 2 , с помощью внешней обработки V8Exchan.efd, которая использует файл правил обмена, в конфигурации-источнике формируется XML-файл данных. Выгрузка данных производится обработкой в соответствии с правилами обмена, поэтому в файле данных находятся уже сконвертированные данные, предназначенные для загрузки в источник, а также правила, содержащие обработчики, исполняемые при загрузке данных. Таким образом, при загрузке используется только один файл, который обрабатывается той же обработкой V8Exchan.efd.
Для первого знакомства с концепцией системы «Конвертация данных 2.0» рассмотрим решение задачи, с которой сталкивалось подавляющее большинство специалистов, работающих с типовыми конфигурациями: перенос данных справочника из одной информационной базы в другую.
Предположим, что для организации нового рабочего места на торговом предприятии необходимо из текущей базы данных предприятия в новую базу данных перенести информацию о товарах. Такая ситуация может возникнуть при создании отдельной информационной базы филиала компании, удаленной торговой точки, склада и пр.
Поскольку пример рассматривается в целях ознакомления с общей концепцией конфигурации «Конвертация данных 2.0», рассмотрим простейший случай, когда в конфигурации источник и приемник идентичны, учет ведется в типовой конфигурации «Управление торговлей 10.2». Наша задача, соответственно, состоит в том, чтобы корректно перенести в новую базу данных справочник Номенклатура .
Готовим описание метаданных
Для подготовки правил обмена необходимо получить информацию о структуре конфигураций источника и приемника данных. Для этих целей используется внешняя обработка MD80Exp.epf для конфигураций на платформе «1С:Предприятие 8» и MD77Exp.ert для конфигураций на платформе «1С:Предприятие 7.7». Напомним, что эти обработки входят в комплект дистрибутива конфигурации «Конвертация данных 2.0».
Для подготовки XML-файла, содержащего описание структуры метаданных конфигурации «Управление торговлей 10.2», нужно запустить внешнюю обработку MD80Exp.epf, указать путь для XML-файла и нажать кнопку Выгрузить . Флажки настроек позволяют отключать выгрузку некоторых объектов метаданных для ускорения выполнения обработки.
Формирование описания структуры метаданных займет некоторое время. После завершения обработки мы получили XML-файл, содержащий описание метаданных конфигурации «Управление торговлей 10.2» в формате конфигурации «Конвертация данных 2.0».
Теперь нам необходимо загрузить полученное описание метаданных в информационную базу конфигурации «Конвертация данных 2.0» для подготовки правил обмена. Для этого запустим конфигурацию «Конвертация данных 2.0» и откроем обработку Загрузка описания метаданных с помощью кнопки Загрузка описания структуры конфигурации на панели интерфейса. В поле Имя файла выберем файл описания метаданных, который мы только что подготовили. И нажмем Выполнить загрузку для запуска обработки.
Обратите внимание, что в форме обработки установлен флажок Новая конфигурация . При его отключении можно произвести обновление уже загруженного описания метаданных.
Для хранения описаний структуры метаданных в конфигурации «Конвертация данных 2.0» используются справочники Конфигурации , Объекты , Свойства и Значения . Справочник Конфигурации предназначен для хранения общей информации о конфигурации. Справочник Объекты хранит описания объектов метаданных и подчинен справочнику Конфигурации . Справочник Свойства нужен для регистрации реквизитов объектов и реквизитов табличных частей. Справочник Значения предназначен для хранения значений перечислений и предопределенных элементов объектов метаданных конфигураций. С помощью этих справочников полностью описывается структура метаданных любых конфигураций, созданных как на платформе «1С:Предприятие 8», так и на платформе «1С:Предприятие 7.7». Все справочники не предусматривают редактирования вручную.
Для просмотра структуры метаданных той или иной конфигурации предназначена обработка Объекты метаданных конфигурации . Запустим обработку нажатием кнопки Описание конфигурации на панели интерфейса и выберем для просмотра конфигурацию «Управление торговлей».
В верхней части формы в виде дерева представлена структура метаданных. В табличной части на закладке Свойства показаны реквизиты, табличные части объектов метаданных. Для документов дополнительно показана структура записей регистров, движения по которым делает соответствующий документ.
Так как в рамках нашей задачи конфигурация-источник и конфигурация-приемник идентичны, подготовительный этап создания правил обмена закончен. В случае, когда нужно организовать обмен между конфигурациями разной структуры, весь процесс нужно повторить для второй конфигурации.
Создаем правила конвертации
Теперь, когда мы загрузили структуру метаданных конфигураций, используемых в обмене, можно начинать подготовку правил обмена. Обратите внимание, что на этом этапе работа будет проводиться исключительно в конфигурации «Конвертация данных 2.0», без обращения к конфигурациям
– участникам обмена. Это позволяет эффективно организовать работу даже в том случае, когда конфигурации источник и приемник для вас недоступны, а имеются только их описания в виде XML-файлов.
Первое, что нам необходимо сделать, – это зарегистрировать в информационной базе новый элемент справочника Конвертации . Откроем справочник с помощью меню Справочники и создадим новый элемент. В качестве источника и приемника выберем «Управление торговлей», поскольку перенос данных мы планируем проводить в идентичную конфигурацию. Наименование конвертации определим с помощью кнопки Сформировать . В поле Имя файла правил обмена укажем путь к XML-файлу для выгрузки правил обмена.
Обратите внимание, что для одной и той же пары конфигураций мы можем создавать и редактировать несколько правил обмена данными, предназначенных для разных целей.
Для настройки правил перейдем к форме Настройка правил обмена . Она вызывается из панели интерфейса одноименной кнопкой. Выберем для редактирования правила обмена УправлениеТорговлей —> УправлениеТорговлей .
Теперь наша задача – определить, какие объекты в конфигурации-приемнике будут соответствовать объектам конфигурации-источника. Для этого предназначен справочник Правила конвертации объектов . Для каждого объекта реквизита и табличной части (свойства в терминологии «Конвертация данных 2.0») конфигурации приемника мы должны указать соответствие свойству объекта источника или способ заполнения. За эту функцию отвечает справочник Правила конвертации свойств , подчиненный элементам справочника Правила конвертации объектов . В форме Настройка правил обмена они показаны на закладках Правила конвертации и Свойства .
Очевидно, для корректной перегрузки справочника Номенклатура нам нужно создать правило конвертации для этого справочника и правила конвертации свойств для каждого реквизита.
Создать правило конвертации можно вручную, но проще воспользоваться сервисом конфигурации. С помощью пункта Синхронизация объектов подменю Обработки запустим обработку Автонастройка правил конвертации объектов . Мы видим, что обработка провела автоматическую синхронизацию всех объектов по наименованию, а нам предлагается воспользоваться результатом, устанавливая или снимая флажки. С помощью обработки можно создавать сразу множество правил. Для нашего случая оставим выбранным только справочник Номенклатура .
По кнопке Записать будет создано новое правило конвертации объекта. Закроем форму автосинхронизации и вернемся к настройке правил. Мы видим, что в дереве правил конвертации появилось правило Номенклатура . Данное правило описывает конвертацию данных справочника Номенклатура конфигурации-источника в конфигурацию-приемник.
Теперь перейдем к формированию правил конвертации свойств. Воспользуемся обработкой автонастройки свойств (пункт Синхронизация свойств объектов подменю Обработки ). Так же как и для объектов, автонастройка проанализирует реквизиты источника и приемника и предложит нам вариант установления соответствий.
Оставим все флажки установленными. По нажатию кнопки Записать для всех выбранных соответствий реквизитов будут созданы правила конвертации.
Настраиваем правила конвертации свойств
Итак, всю «черную» работу за нас выполнили обработки автосинхронизации. Теперь рассмотрим более детально результат и внесем необходимые коррективы.
Обратим внимание, что часть правил конвертации свойств может быть отключена с помощью флажка в колонке Отключить табличной части, на закладке Конвертация свойств . При отключении правила оно не будет исполнятся, а реквизиты источника, указанные в нем, выгружены не будут. Для того чтобы несколько облегчить себе задачу, отключим некоторые правила конвертации свойств. Поставим флажки Отключить в правилах ОтветственныйМенеджер , ОсновнойПоставщик , СтатьяЗатрат , НоменклатурнаяГруппаЗатрат , ВесовойКоэффициентВхождения , ТипШтрихКода и ОсновоеИзображение , предполагая, что учет закупок и затрат в базе-приемнике будет организован без использования данных из базы-источника, учет штрихкодов вестись не будет, а изображения товаров не зарегистрированы.
Если загрузка данных ведется в «пустую» базу, то все объекты создаются «заново». Однако если часть данных уже имеется, а нужно только обновить ряд реквизитов, то необходимо задать принцип, по которому будет устанавливаться соответствие объектов. Для этого можно воспользоваться флажками в колонке Поиск табличной части, на закладке Конвертация свойств . Если мы устанавливаем флажок, то перед обработкой объекта алгоритм загрузки будет искать объект по значению реквизита приемника, указанного в правиле. Установим флажок на правиле конвертации свойств Код . Теперь элементы справочника Номенклатура при загрузке будут синхронизированы по коду. Перед загрузкой будет проводиться поиск по коду, и, если элемент справочника найден, он будет перезаписан с новыми значениями реквизитов.
Если же в колонке Поиск не будет установленных флажков, то для справочника Номенклатура элемент при каждой загрузке будет создаваться заново. Это может иметь очень неприятные последствия, если вы по ошибке запустите загрузку вторично. Новые элементы будут дублироваться даже в случае, когда у справочника включена уникальность кодов и есть элементы с такими же кодами.
Реквизиты справочника Номенклатура имеют разные типы. Для реквизитов типа Число , Строка , Дата , Булево механизм установки значений очевиден — значение реквизита объекта-источника присваивается реквизиту объекта-приемника. Но как быть, если реквизит имеет ссылочный тип, как, например, реквизит БазоваяЕдиницаИзмерения справочника Номенклатура . Очевидно, что в том случае, если ссылка не обнаружена, должен быть создан новый объект в базе-приемнике. Для этого нам нужно описать новое правило конвертации для справочника КлассификаторЕдиницИзмерения , а потом указать в правиле конвертации свойств для реквизита БазоваяЕдиницаИзмерения это правило как «Правило конвертации».
Сложный по описанию механизм очень прост в реализации. Опыт создания правил конвертации нами уже накоплен при создании правила конвертации справочника Номенклатура . Поэтому, руководствуясь методикой предыдущего раздела, создаем новое правило конвертации объектов для справочника КлассификаторЕдиницИзмерения .
Теперь осталось назначить новое правило конвертации объектов для правила конвертации свойств БазоваяЕдиницаИзмерения . Это нужно сделать в форме элементы справочника, открыв ее двойным щелчком мыши на соответствующей строке таблицы правил конвертации свойств.
Но кроме реквизита БазоваяЕдиницаИзмерения у нас имеются еще реквизиты ссылочного типа. Проанализируем их по порядку. Для реквизита Родитель правило конвертации уже назначено при генерации обработкой. Для корректной перегрузки остальных реквизитов нам необходимо создать дополнительно правила конвертации объектов для справочников ЕдиницыИзмерения , НоменклатурнаяГруппа , КлассификаторСтранМира и НомерГТД . Конвертацию перечисления СтавкиНДС мы пока отложим.
Воспользуемся еще раз обработкой автосинхронизации объектов. С ее помощью мы сможем создать сразу все нужные нам правила конвертации объектов.
Для потокового создания правил конвертации свойств запустим обработку Групповое создание правил конвертации свойств/значений (пункт Групповое создание правил конвертации свойств/значений подменю Обработки ). В списке отключим правила Номенклатура и КлассификаторЕдиницИзмерения , для которых мы уже создали правила конвертации свойств.
В результате у нас появятся уже семь правил конвертации. Обратите внимание, что правило СтавкиНДС создано автоматически в процесс группового создания свойств. Эта обработка не только создает правила конвертации свойств, но и контролирует наличие правил конвертации для объектов ссылочного типа, поэтому при обработке реквизита СтавкаНДС было создано правило конвертации СтавкиНДС.
После этого нам необходимо установить вручную правила конвертации для реквизитов, имеющих ссылочные типы. Если бы мы воспользовались обработкой Групповое создание правил конвертации свойств/значений сразу, то это не потребовалось бы, так как соответствующие правила конвертации были бы созданы автоматически. Однако первый вариант создания правил был более нагляден для понимания структуры объектов конфигурации. Итак, мы должны заполнить правила конвертации для реквизитов ЕдиницаХраненияОстатков , СтавкаНДС , НоменклатурнаяГруппа , СтранаПроисхождения , НомерГТД .
Теперь вернемся к конвертации перечисления СтавкиНДС . Правило конвертации уже создано, поэтому остается только определить соответствия между значения приемника и источника. Это легко сделать с помощью обработки Автонастройка правил конвертации значений (пункт Синхронизация значений объектов подменю Обработки ).
На этом наша работа практически завершена. Осталось установить реквизиты синхронизации для правил конвертации объектов, которые мы создавали потоковой обработкой. Для этого перейдем к закладке Синхронизация и нажмем Обновить .
Теперь для каждого правила мы видим текущий и предлагаемый способ синхронизации. Нажмем кнопку Записать для установки синхронизации. В результате для всех выбранных правил будет установлены новые реквизиты синхронизации.
Перегружаем данные
Для выгрузки данных недостаточно установить соответствия объектов и реквизитов источника и приемника. Нужно еще указать, какие именно объекты и как выгружать. Для этого необходимо создать правила выгрузки данных.
Перейдем к закладке Правила выгрузки данных в форме Настройка правил обмена и создадим новое правило выгрузки. В качестве объекта выборки укажем СправочникСсылка.Номенклатура . Способ выгрузки определим как Стандартная обработка . В этом случае будут выгружать все объекты справочника Номенклатура . В качестве правила конвертации укажем правило Номенклатура .
На этом работа по редактированию правил завершена. Поскольку наша задача
– осуществить перенос справочника Номенклатуры , то полностью будет выгружаться только справочник Номенклатура , элементы других справочников будут выгружаться только при наличии на них ссылок в элементах справочника Номенклатура . Нужно отметить, что в алгоритмах выгрузки данных универсальной обработки V8Exchan.epf предусмотрен механизм предотвращения повторной выгрузки объектов. Каждый объект выгружается только один раз, если иное не предусмотрено настройками правил. Это сделано для того, чтобы сделать файл данных компактным и ускорить процесс выгрузки данных.
Теперь можно перейти к генерации файла правил обмена.
Для выполнения этой операции вызовем обработку Выгрузка правил обмена по кнопке Сохранить правила . В форме обработке укажем XML-файл для сохранения правил. По умолчанию это поле будет заполнено из элемента справочника Конвертации . Сохраним правила в файл с помощью кнопки Выполнить .
Теперь можно приступить к финальной стадии. Откроем базу-источник и запустим обработку V8Exchan.epf. В поле Имя файла данных нужно указать имя файла выгрузки. В поле Имя файла правил выберем только что созданный файл правил обмена и нажмем кнопку Загрузить правила .
С помощью кнопки Выгрузить данные запустим обработку выгрузки. Обратите внимание, что выгрузка данных может занять значительное время.
Итак, в результате использования обработки V8Exchan.epf мы получили XML-файл, подготовленный для загрузки в базу-приемник. Откроем теперь информационную базу-приемник и запустим ту же самую V8Exchan.epf. Только теперь нас интересует закладка Загрузка данных . В поле Имя файла данных выберем файл данных, созданный выгрузкой, и нажмем Загрузить данные . После некоторого ожидания – результат получен!
Дальнейшая доработка правил обмена
Через некоторое время наше торговое предприятие принимает решение открыть офис по приему заказов на продукты питания в пригороде. Для эффективной работы необходимо постоянно иметь в базе данных офиса актуальную версию справочника Номенклатура . Причем было решено каждый раз помечать на удаление те номенклатурные позиции, которых в настоящий момент нет на складе в центральном офисе. Загрузка справочника должна производиться еженедельно. При этом товары, зарегистрированные в базе данных офиса, заказ которых стал невозможен (например, нет на складе), должны быть помечены на удаление, или при восстановлении доступности номенклатурной позиции для заказа пометка удаления должна быть снята.
Реализовать такой механизм нам поможет использование правил очистки данных. Правила очистки выполняются в базе-приемнике перед загрузкой объектов. С помощью этого инструмента можно пометить на удаление или удалить непосредственно объекты данных. В нашем случае мы будем ставить пометки на удаление у элементов справочника Номенклатура . При синхронизации элемента справочника в момент загрузки пометка будет снята, поскольку загружаемые элементы номенклатуры не имеют пометки на удаление. Таким образом, все «лишние» элементы, отсутствующие в загружаемом файле, останутся помеченными на удаление.
Для создания правил очистки вернемся в знакомую нам форму настройки правил обмена. Выберем для редактирования элемент справочника Конвертации УправлениеТорговлей —> УправлениеТорговлей , перейдем к закладке Правила очистки данных и создадим новое правило.
В качестве объекта выборки укажем СправочникСсылка.Номенклатура , способ выборки – Стандартная выборка . Это означает, что при выполнении правила для всех элементов справочника Номенклатура будет поставлена пометка на удаление.
Наш офис принимает заказы исключительно на товары, поэтому желательно установить запрет на выгрузку услуг. Если для элемента справочника Номенклатура реквизит Услуга установлен Истина , то он гарантированно не должен выгружаться. Контроль выгрузки услуг лучше всего сразу сделать опциональным, чтобы не менять правила, если удаленный офис станет принимать заказы и на услуги.
Для этого случая нам придется освоить два новых приема работы с конфигурацией «Конвертация данных» — использование обработчиков и настройку параметров.
Параметры – это специализированная структура данных в алгоритмах выгрузки, с помощью которой можно обращаться к переменным обработки. Настройка структуры параметров для правил конвертации осуществляется в конфигурации «Конвертация данных», а установка значений параметров возможна в форме обработки V8Exchan.epf. Обратите внимание, что механизм установки параметров в форме реализован в обработках V8Exchan.epf, начиная с версии 2.01.
Для редактирования параметров откроем форму элемента справочника Конвертация для редактируемых правил обмена и перейдем на закладку Параметры . Создадим новый элемент справочника Параметры . Присвоим имя параметра – ВыгружатьУслуги . Имя параметра служит для обращения к нему в структуре Параметры при написании программного кода в обработчиках. Наименование будет отображаться в табличной части параметров, в форме обработки универсального обмена данными. Для того чтобы параметр был виден в диалоге при настройке выгрузки, нужно установить флажок Устанавливать в диалоге и выбрать тип значения параметра. Для работы с параметрами в диалоге необходимо также установить флажок Выгружать параметры в формате версии 2.01 в форме элемента справочника Конвертация .
Недостаточно просто указать параметры, нужно, чтобы алгоритм выполнения выгрузки «понимал», в каком случае выгружать элемент, а в каком
– нет. Для подобных (и многих других) случаев используется механизм обработчиков. Суть его заключается в том, что в ключевых точках выполнения всех базовых алгоритмов выгрузки и загрузки данных обрабатывается код, написанный разработчиком при создании правил обмена. Естественно, что использование такого тонкого инструмента требует осторожности и продуманности. Мы рекомендуем перед написанием собственных обработчиков внимательно ознакомиться со справкой к конфигурации «Конвертация данных 2.0», где описаны все доступные в обработчиках переменные и способы их использования, а также перечислены виды обработчиков и особенности их вызова в алгоритмах обмена данными.
Для нашей цели необходимо использовать обработчик правила выгрузки Перед выгрузкой . Откроем правило выгрузки данных Номенклатура и поместим в поле Перед выгрузкой , на закладке События следующий программный код:
Если Параметры.ВыгружатьУслуги = ЛОЖЬ И Объект.Услуга = ИСТИНА Тогда
Отказ = ИСТИНА;
КонецЕсли;
Что же делает наш обработчик? При написании программного кода мы использовали переменные алгоритмов выгрузки данных. Структура Параметры служит для обращения к параметру ВыгружатьУслуги , который задается в форме обработки обмена данными. Переменная Объект предоставляет доступ к выгружаемому объекту. А переменная Отказ позволяет контролировать отказ от выгрузки текущего объекта. Обработчик исполняется непосредственно перед началом выгрузки объекта, что и дает возможность отменить выгрузку объекта.
Наша задача решена, осталось только сохранить правила обмена в файле.
Запустим базу-источник, откроем обработку V8Exchan.epf и загрузим правила. Перейдем к закладке Параметр выгрузки . Мы видим, что в табличной части появилась строка Выгружать услуги . Теперь мы можем без редактирования правил обмена изменять настройки выгрузки.
Безусловно, нам необходимо выгрузить не все элементы справочника Номенклатура , а только отобранные по условию, например, входящие в определенную группу. Это легко сделать, используя настройку отбора для правил выгрузки. По двойному клику правой кнопки мыши на соответствующей строке в колонке Отбор данных откроется форма настроек отбора.
Как задать значение приемнику в конвертации 2
Как мы уже знаем, правила конвертации свойств используются для сопоставления реквизитов обменивающихся объектов. Естественно, что в правиле конвертации задаются реквизит из объекта источника и объекта приемника.
Кроме того, для ссылочных реквизитов можно указать правило конвертации объектов, которое необходимо применить для переноса значения данного реквизита.
Поиск объекта при загрузке по данному свойству — флаг определяющий нужно ли по данному свойству производить поиск объектов в информационной базе приемнике. Если сразу у нескольких реквизитов установлено свойство поиска данных, то условия поиска объединяются по «И». В этом случае правило поиска звучит следующим образом: Найти объект у которых все реквизиты поиска совпадают с источником. (ВНИМАНИЕ. Поиск по уникальному идентификатору, который может быть установлен у правила конвертации объектов более приоритетный, то есть если он установлен то поиск будет выполнен по этому идентификатору).
Отключить обработку данного правила — флаг, позволяет отключить обработку данного свойства, не удаляя его из правил конвертации объектов.
Не замещать значение данного свойства у существующих объектов ИБ — флаг, позволяет отключить обработку данного для объектов информационной базы приемника, которые были найдены по уникальному идентификатору или по полям поиска.
Автоматически приводить значение к длине приемника — флаг, позволяет включить автоматическое приведение Номера или Кода справочника соответствующему значению в приемнике по длине. При этом префиксы сохраняются, а числовые части преобразуются под длину поля в приемнике.
ТОЛЬКО ДЛЯ ОБМЕНА V8 — V8
Функционал, позволяющий передавать дополнительные параметры в информационную базу приемник из источника.
Передавать данные в приемник — флаг определяет куда будут помещены данные при загрузке. Непосредственно в найденный для изменения объект.
Передавать данные в параметр — флаг определяет куда будут помещены данные при загрузке. В отдельное соответствие для данного объекта, но не в сам объект. Этот подход удобен когда нужно передать какое либо значение в приемник, но нет реквизита куда нужно его поместить. Впоследствии анализируя дополнительные параметры можно изменить логику заполнения объекта приемника. В правилах необходимо указать имя параметра куда нужно поместить данные. Для табличных частей и наборов движений для каждой строки формируется отдельная структура в которой хранится информация.
Доступ к этим данным возможен в событии правила конвертации объекта «После загрузки». Например, так:
Выгружать элементы группы через промежуточный файл — флаг определяет как выгружать объекты данного типа, через промежуточный файл (экономично с точки зрения оперативной памяти) или напрямую через память (оптимально по скорости, но при больших объемах передаваемых данных оперативная память может закончится).
На закладке «Дополнительно» можно редактировать вхождение правила в определенную группу, а так же его описание. Наименование правила формируется автоматически и недоступно для изменения.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Задать в Приемнике своё значение, которого нет в Источнике. Конвертация данных 1С
Суть задачи: Нужно, чтобы при переносе документа «Отражение зарплаты в регламентированном учете» СубконтоДт1 (тип СправочникСсылка.Резервы) имело другое Значение, то есть значение не из Источника.
Нужно, чтобы при условии, когда СчетДт=»96″ и СчетКт = «69.03.1» тогда СубконтоДт было равно «Резерв на взносы в Федеральный ФОМС». (А не «На оплату предстоящих отпусков», как видно на картинке).
Уточнение: этого не видно на картинке, но на самом деле под СубконтоДт подразумевается СубконтоДт1, а значение «Резерв на взносы в Федеральный ФОМС» — это значение элемента из Приемника.
Ниже на картинке я покажу, как выглядят эти справочники в Источнике и в Приемнике.
Надеюсь, что пояснила понятно.
Теперь в Конвертации данных:
От обилия красного прямо рябит в глазах. Извините, я не специально!
Еще один способ. Код останется со значением из источника, если у вас подобная ситуация, обработку правила можно просто отключить.
Запрет выгрузки «Групп» справочников в конвертации данных.
Related Posts
21 Comments
Как пример задания конкретного значения в приёмнике имеет право на существование. А вообще, разве нельзя синхронизировать эти справочники переносом данных из БП 3.0 в ЗУП 2.5?
(1) kit, можно конечно
Но политика нашей организации такова, что Оценочные обязательства и резервы в системе ЗУП давно утверждены и централизованы. Центральный аппарат этим пользуется, им вполне хватает. А регионы только переходят на ЗУП (РИБ), причем в каждой отдельной системе проводки формируют по-разному, да еще и в разные Бухгалтерии (у кого-то 7-ка, у кого-то Бухгалтерия 8.2, у избранных — 8.3), и бухгалтерия требует, чтобы «было как раньше» до перехода.
В общем, они хотят, чтобы справочники в ЗУПе в ЦА и регионах совпадали, так что мы пока не можем из всех бухгалтерий синхронизировать справочники.
Возможно, когда Бухгалтерия так же станет общей, сделаем синхронизацию.
Аналогичную задачу решал добавлением параметра объекта в который записывал код, а свойство выводил в «отказ = истина». При загрузке объекта, если свойство не задано, а параметр существует — выполнял поиск элемента справочника по значению параметра.
А еще можно написать Выражение=…
Выполнится на стороне приемника
Ради одного элемента такое делать (создавать ПКО) нет необходимости.
Самый идеальный вариант это сделать элементы предопределенными и синхронизировать по значению. Использовать в коде конструкции с проверками кода или наименования элементов очень и очень плохое занятие.
Другой вариант (раз уж связываемся с кодом или наименованием) это передавать наименование значения реквизита как строку через параметр. И уже после загрузки данных анализировать значение параметра и в зависимости от него подставлять необходимое значение в реквизит.
Сам с аналогичным заданием «мучился», все же КД — «темная лошадка», или просто я «не умею ее готовить»…
Всем привет. А может кто подскажет?
Есть у меня Реквизит в табличной части Источника, но его нет в Табличной части Приемника. Как правильно его передать через параметр?
Источник это реквизит СубконтоНУ, тип справочник ФизЛицо.
Приемник должен быть СубконтоБУ и тип справочник Контрагент(Поиск по наименованиею). Но НЕ во всех местах. Где-то в СубконтоБУ, по определённому мной условию, должно остаться физ.лицо из реквизита Источника СубконтоБУ.
(7) pas86, возможно стоит пойти путём произвольного алгоритма?
Делаешь выборку в источнике, обходишь её и в случае (пример):
в твоей таблице значений для «СубконтоБУ» задаешь Выборка.Физлицо
У тебя ведь для каждого счета заданы свои субконто. Вот в зависимости от этого и можно сформировать полученную таблицу ВыборкиДанных.
Добрый день, подскажите, как мне можно перенести элемент из источника в приемник, если в источнике элемент непосредственно не задан, определяется так:
Меня интересуют только товар и услуги, для их выгрузки использую в обработке перед выгрузкой следующий код:
Но вот как проанализировать при загрузке не пойму.
Значение в данном случае немного не то.
Пример использования «Значение»: у вас есть справочник «Организации», у которого и Коды и Наименование в двух разных системах по одной организации отличаются, тогда вы можете снять поиск с Кода, а в Наименование вписываете Значение = «ООО Ромашка»; (то Наименование, которое есть в базе-приемнике). И тогда при загрузке система найдет организацию с наименованием «ООО Ромашка».
Насколько я понимаю, свойство «.Услуга» вы берете у какого-то реквизита, например «Номенклатура», которая выгружается.
Моё мнение, вам нужно в ПКО документа «После загрузки»:
Если Объект.Номенклатура.Услуга Тогда
Что то пошло не так:
Ошибка при вызове метода контекста (ПолучитьФорму): Элемент не выбран!
Проверила в ЗУПе (обычные формы) по документу «Начисление по больничному листу», у нас на форме два реквизита: ПервыйГодРасчета, ВторойГодРасчета.
Всё норм записалось.
ОписаниеОшибки = Ошибка при вызове метода контекста (ПолучитьФорму): Недопустимое значение параметра (параметр номер ‘1’)
теперь вот так.. не понимаю сути того что пытаюсь сделать. Что в данном случае объект? источник?
(14) у вас это вообще документ? Возможно у вас справочник? …тогда получайте форму справочника («ФормаЭлемента»).
Я привела для вас пример, на основании которого подстройте свой код.
Объект в данном случае — Объект.
Так же вы можете открыть файл выгрузки и ознакомиться с ним.
Событие происходит после загрузки, обратите внимание, в 4-ой строке я обращаюсь к процедуре общего модуля.
Ниже приведен кусок из моего xml файла:
Ссылка — указатель, Объект — объект (мы с ним работаем, мы у него изменяем значения и тп), это как бы основы.
Все, что вы хотели бы сделать с объектом, например из внешней обработки, вы можете вписать в событие «После загрузки».
Попытался сам разобраться, но не очень получается. Давайте я ещё раз обрисую ситуацию.
У меня есть база источник, в ней у меня непосредственно нет видов номенклатуры, но есть элемент у справочника номенклатура «Услуга», если он установлен значит выгружаемый элемент услуга, если не установлен значит товар.
Есть база приемник, в ней у справочника номенклатура есть элемент вид номенклатуры, мне нужно каким то образом объяснить базе приемнику какой вид номенклатуры должен стать у загружаемого элемента.
Посмотрел через отладку событие после загрузки, не вижу возможности там присвоить, точнее не присвоить а там провести анализ, ведь там у нас только объект.
Что за анализ должен здесь быть, как мне понять какой там вид на базе источнике?
Как задать значение приемнику в конвертации 2
После того, как были созданы новые правила обмена данными, задали конфигурацию источник и приемник, сохранили новую Конвертацию, у нас нет ни одного правила конвертации объектов.
Можно создать правила конвертации объектов самостоятельно. Для этого достаточно добавить новый элемент на закладке «Правила конвертации объектов».
При этом нужно указать объект в информационной базе источнике и соответствующий ему объект в информационной базе приемнике. После сохранения нового правила конвертации объектов программа предложит автоматически создать правила конвертации объектов и свойств. При этом будут автоматически сопоставлены все одноименные реквизиты объектов, одноименные предопределенные реквизиты, одноименные значения перечислений. Если тип реквизита не является примитивным, то для соответствующих типов источника и приемника так же будет создано правило конвертации объектов. Таким образом программа поможет вам сопоставить одноименные объекты и их одноименные реквизиты и значения.
Правила конвертации объектов можно создать и иначе. В пункте меню «Обработки» панели управления правилами конвертации объектов выберите пункт «Синхронизация объектов». После этого программа автоматически сопоставит все одноименные объекты в двух конфигурациях и предложит по ним создать правила конвертации объектов. В форме выбора для создания правил конвертации объектов Вы можете отказаться от создания некоторых правил, убрав в строке флажок.
Для тех строк соответствия объектов в которых остались флажки программа создаст правила конвертации объектов.
Теперь, когда правила конвертации объектов созданы можно перейти к заданию правил конвертации свойств этих объектов. Установим курсор на то правило конвертации объектов для которого необходимо установить соответствие свойств. Достаточно нажать на кнопку «Добавить» в панели управления правилами конвертации свойств для создания нового правила.
В открывшейся форме нового правила конвертации свойств достаточно указать соответствие между реквизитом объекта источника и объектом приемника. Например, можно задать, что реквизиту «Номер» документа «Реализация товаров и услуг» информационной базы источника соответствует реквизит «Номер» документа «Реализация товаров и услуг» информационной базы приемника. После чего, нажав на кнопку «ОК» будет записано новое правило конвертации свойств.
Можно поступить точно так же и с другими реквизитами. Но если реквизитов много, то это занятие может затянуться на длительное время. Программа может самостоятельно создать необходимые правила конвертации свойств для одноименных реквизитов. Для этого достаточно выбрать пункт меню «Синхронизация свойств» в панели управления правил конвертации свойств.
Программа показывает список свойств объектов которые можно автоматически сопоставить. Устанавливая и убирая флажки в строках этого соответствия можно согласится или отказаться от создания правил. Флажок «Рекурсивно создавать правила конвертации, свойств и значений» управляет технологией создания правил конвертации свойств для не примитивных типов. Например, если реквизит «ВалютаДокумента» с типом «СправочникСсылка.Валюты» и для этого реквизита создается правило конвертации свойств, то автоматически будет создано правило для конвертации объектов с типом «СправочникСсылка.Валюты».
Точно по тому же принципу можно действовать создавая правила конвертации значений.
Действия при «ручном» сопоставлении значений:
Действия при автоматическом сопоставлении значений:
Остается только указать программе как в информационной базе приемнике искать объекты, соответствующие объектам в информационной базе источнике.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Конвертация данных как задать конкретное значение реквизиту документа
В общем в источнике вообще нет такого реквизита, а в приемнике перечисление. Хочу поставить конкретное значение потому как поле обязательное для заполнения. Но что-то не получается.
Что делаю: в ПКС документа добавил этот реквизит в качестве источника Перед выгрузкой написал: Значение = "ОдноИзНаименованийПеречисления" создал новое правило там поставил источником строку прие мником соответствующее перечисление. И в обработчике при загрузке:
Значение = ПеречислениеСсылка.СпособыБлаБла.НайтиПоНаименованию(Источник)
Задать в Приемнике своё значение, которого нет в Источнике. Конвертация данных 1С
Суть задачи: Нужно, чтобы при переносе документа «Отражение зарплаты в регламентированном учете» СубконтоДт1 (тип СправочникСсылка.Резервы) имело другое Значение, то есть значение не из Источника.
Нужно, чтобы при условии, когда СчетДт=»96″ и СчетКт = «69.03.1» тогда СубконтоДт было равно «Резерв на взносы в Федеральный ФОМС». (А не «На оплату предстоящих отпусков», как видно на картинке).
Уточнение: этого не видно на картинке, но на самом деле под СубконтоДт подразумевается СубконтоДт1, а значение «Резерв на взносы в Федеральный ФОМС» — это значение элемента из Приемника.
Ниже на картинке я покажу, как выглядят эти справочники в Источнике и в Приемнике.
Надеюсь, что пояснила понятно.
Теперь в Конвертации данных:
От обилия красного прямо рябит в глазах. Извините, я не специально!
Еще один способ. Код останется со значением из источника, если у вас подобная ситуация, обработку правила можно просто отключить.
Запрет выгрузки «Групп» справочников в конвертации данных.
Related Posts
21 Comments
Как пример задания конкретного значения в приёмнике имеет право на существование. А вообще, разве нельзя синхронизировать эти справочники переносом данных из БП 3.0 в ЗУП 2.5?
Но политика нашей организации такова, что Оценочные обязательства и резервы в системе ЗУП давно утверждены и централизованы. Центральный аппарат этим пользуется, им вполне хватает. А регионы только переходят на ЗУП (РИБ), причем в каждой отдельной системе проводки формируют по-разному, да еще и в разные Бухгалтерии (у кого-то 7-ка, у кого-то Бухгалтерия 8.2, у избранных — 8.3), и бухгалтерия требует, чтобы «было как раньше» до перехода.
В общем, они хотят, чтобы справочники в ЗУПе в ЦА и регионах совпадали, так что мы пока не можем из всех бухгалтерий синхронизировать справочники.
Возможно, когда Бухгалтерия так же станет общей, сделаем синхронизацию.
Аналогичную задачу решал добавлением параметра объекта в который записывал код, а свойство выводил в «отказ = истина». При загрузке объекта, если свойство не задано, а параметр существует — выполнял поиск элемента справочника по значению параметра.
А еще можно написать Выражение=…
Выполнится на стороне приемника
Ради одного элемента такое делать (создавать ПКО) нет необходимости.
Самый идеальный вариант это сделать элементы предопределенными и синхронизировать по значению. Использовать в коде конструкции с проверками кода или наименования элементов очень и очень плохое занятие.
Другой вариант (раз уж связываемся с кодом или наименованием) это передавать наименование значения реквизита как строку через параметр. И уже после загрузки данных анализировать значение параметра и в зависимости от него подставлять необходимое значение в реквизит.
Сам с аналогичным заданием «мучился», все же КД — «темная лошадка», или просто я «не умею ее готовить»…
Всем привет. А может кто подскажет?
Есть у меня Реквизит в табличной части Источника, но его нет в Табличной части Приемника. Как правильно его передать через параметр?
Источник это реквизит СубконтоНУ, тип справочник ФизЛицо.
Приемник должен быть СубконтоБУ и тип справочник Контрагент(Поиск по наименованиею). Но НЕ во всех местах. Где-то в СубконтоБУ, по определённому мной условию, должно остаться физ.лицо из реквизита Источника СубконтоБУ.
(7) pas86, возможно стоит пойти путём произвольного алгоритма?
Делаешь выборку в источнике, обходишь её и в случае (пример):
в твоей таблице значений для «СубконтоБУ» задаешь Выборка.Физлицо
У тебя ведь для каждого счета заданы свои субконто. Вот в зависимости от этого и можно сформировать полученную таблицу ВыборкиДанных.
Добрый день, подскажите, как мне можно перенести элемент из источника в приемник, если в источнике элемент непосредственно не задан, определяется так:
Меня интересуют только товар и услуги, для их выгрузки использую в обработке перед выгрузкой следующий код:
Но вот как проанализировать при загрузке не пойму.
Значение в данном случае немного не то.
Пример использования «Значение»: у вас есть справочник «Организации», у которого и Коды и Наименование в двух разных системах по одной организации отличаются, тогда вы можете снять поиск с Кода, а в Наименование вписываете Значение = «ООО Ромашка»; (то Наименование, которое есть в базе-приемнике). И тогда при загрузке система найдет организацию с наименованием «ООО Ромашка».
Насколько я понимаю, свойство «.Услуга» вы берете у какого-то реквизита, например «Номенклатура», которая выгружается.
Моё мнение, вам нужно в ПКО документа «После загрузки»:
Если Объект.Номенклатура.Услуга Тогда
Что то пошло не так:
Ошибка при вызове метода контекста (ПолучитьФорму): Элемент не выбран!
Проверила в ЗУПе (обычные формы) по документу «Начисление по больничному листу», у нас на форме два реквизита: ПервыйГодРасчета, ВторойГодРасчета.
Всё норм записалось.
ОписаниеОшибки = Ошибка при вызове метода контекста (ПолучитьФорму): Недопустимое значение параметра (параметр номер ‘1’)
теперь вот так.. не понимаю сути того что пытаюсь сделать. Что в данном случае объект? источник?
(14) у вас это вообще документ? Возможно у вас справочник? …тогда получайте форму справочника («ФормаЭлемента»).
Я привела для вас пример, на основании которого подстройте свой код.
Объект в данном случае — Объект.
Так же вы можете открыть файл выгрузки и ознакомиться с ним.
Событие происходит после загрузки, обратите внимание, в 4-ой строке я обращаюсь к процедуре общего модуля.
Ниже приведен кусок из моего xml файла:
Ссылка — указатель, Объект — объект (мы с ним работаем, мы у него изменяем значения и тп), это как бы основы.
Все, что вы хотели бы сделать с объектом, например из внешней обработки, вы можете вписать в событие «После загрузки».
Попытался сам разобраться, но не очень получается. Давайте я ещё раз обрисую ситуацию.
У меня есть база источник, в ней у меня непосредственно нет видов номенклатуры, но есть элемент у справочника номенклатура «Услуга», если он установлен значит выгружаемый элемент услуга, если не установлен значит товар.
Есть база приемник, в ней у справочника номенклатура есть элемент вид номенклатуры, мне нужно каким то образом объяснить базе приемнику какой вид номенклатуры должен стать у загружаемого элемента.
Посмотрел через отладку событие после загрузки, не вижу возможности там присвоить, точнее не присвоить а там провести анализ, ведь там у нас только объект.
Что за анализ должен здесь быть, как мне понять какой там вид на базе источнике?
Передача параметра в табличной части в конвертации данных
Иногда требуется передать параметр для строки табличной части в выгрузке конвертации.
Например, такая задача может возникнуть если одна из конфигураций была изменена(добавлен реквизит в табличную часть). В моем случае это конфигурация-приемник. В табличную часть «Товары» документа «Отчет о розничных продажах», конфигурации «Управление торговлей» 10.3 добавлен реквизит «Консультант» типа «Справочник.ФизическиеЛица». В него надо передавать значение реквизита «Продавец» из табличной части «Товары», из конфигурации «Розница» 2.х.
Задачу можно решить, например, обновлением метаданных конфигурации-приемника, но быстрее, в данном случае будет передать это значение через параметр.
В табличной части «Товары» ПКО «Отчет о розничных продажах» создаем новый параметр: