1с конвертация данных не загружается регистр сведений
Ошибки, возникающие при настройке конвертации в формате Enterprise Data. Исправленные обработки и пояснения.
В этой статье речь пойдет о настройках универсального формата обмена и ошибках, которые возникают на начальном этапе настройки (этап №1). В конвертации данных 3.0 есть инструкция по настройке правил конвертации на примере. Однако не все пункты понятны и не везде дано подробное описание. Плюс ко всему в стандартных обработках и в самой программе возникают ошибки, о которых я и хочу рассказать в этой статье, а также предлагаю скачать доработанные мной обработки и расширение, чтобы без ошибок и потери драгоценного времени можно было настроить правила.
Обратимся к исходному примеру, который представлен в конвертации данных в начале работы.
С первым шагом (шаг 1) – все понятно. Нужно для каждой конфигурации, между которыми планируем настраивать обмен, выгрузить структуры информационных баз. С помощью обработки MD83Exp.epf , входящей в комплект поставки. На этом этапе останавливаться не будем, так как он подробно описан в программе. Однако в стандартной обработке MD83Exp.epf скрыты настройки обработки, в связи с этим не выгружаются регистры сведений. Я исправила этот момент, и Вы можете приобрести исправленную обработку. Ссылки в конце страницы.
Следующим действием (шаг 2) предлагается сделать экспорт xml-схемы формата обмена , из любой базы. В этом примере, который рассматривается в конфигурации Конвертация данных xml -схемы одинаковые у обеих баз, так что достаточно сделать экспорт из любой базы. Но в примере не говорится, что если все-таки конфигурации разнятся, то нужно выбрать похожие XDTO-пакеты в базах и экспортировать их. Версия определяется по цифрам, указанным у XDTO-пакета. Например: EnterpriseData_1_3_20 - версия формата 1.3.
Обратите внимание , что версию формата обмена нужно выбирать наиболее оптимальную. Например: в одной конфигурации версия формата последняя 1.6, а в другой конфигурации – 1.5. Следовательно, оптимальный формат будет 1.5.
Сам экспорт xml-схемы формата обмена в программе описан. На картинке ниже я показываю, как это можно сделать.
Далее в примере предлагается сделать загрузки в конвертацию данных (шаг 3 и шаг 4).
Сначала загружаем структуру информационных баз (по очереди) раздел «Конфигурации» - «Загрузка структуры конфигурации» флаг «В новую версию конфигурации» .
Затем нужно загрузить xml-схему формата обмена. Формат данных – «Загрузка структуры формата» , выбираем ранее выгруженные файлы с расширением «xsd». Выбираем только один файл. Раньше делали Множественный выбор с ExchangeMessage, но это было в старых версиях конфигурации. После загрузки обязательно проверьте структуру формата в разделе Формат данных – Дерево объектов формата – далее выбрать версию формата . Если структура заполнена – там есть документы, справочники, то все в порядке, можно продолжать настройки, иначе выгрузите новую версию и повторите всю процедуру сначала.
Далее в примере (этап 2) предлагается создание конвертации с нуля, однако если у баз уже есть типовые правила обмена, которые достаточно доработать, то можно загрузить эти правила в конфигурацию и работать с ними.
Прежде чем выгружать правила конвертации нужно открыть общий модуль МенеджерОбменаЧерезУниверсальныйФормат . Если это Бухгалтерия Предприятия 3.0, то открываем МенеджерОбменаЧерезУниверсальныйФормат13 . В открытом модуле переходим в меню Файл – Сохранить копию – сохраняем файл с любым именем (например - Модуль ).
Затем приступаем к выгрузке типовых правил из конфигураций. Для выгрузки есть стандартная обработка, которая называется Выгрузка правил синхронизации.epf, однако при работе с ней возникает ошибка и правила не выгрузить, также не работает в последних версиях Бухгалтерии Предприятия. Для таких случаев я исправила эту обработку. Вы можете приобрести исправленную обработку. Ссылки в конце страницы.
С помощью обработки выгружаем правила, где каждую версию формата помещаем в новый каталог. Выгрузку нужно проделать из обеих конфигураций.
Далее нужно загрузить все версии правил для обеих конфигураций, между которыми настраиваем обмен в Конвертацию данных.
Сначала создаем новую конвертацию, Конвертации – Создать . Заполняем поля новой конвертации . Выбираем конфигурацию. Наименование конвертации можно указать свое, реквизит Имя менять нельзя. Сохраняем изменения.
Переходим в раздел Конвертация – Загрузка правил синхронизации из файлов , далее заполняем поля. Место загрузки нужно указать «В существующую конвертацию» и указать какую именно. Файл с модулем обмена – нужно указать тот файл, копию которого сохраняли (в этом примере он называется Модуль ). Далее по очереди загружаем каждую выгруженную версию правил, не закрывая настройки, просто выбираете новый каталог обмена.
Сложностей в загрузке нет никаких. Все интуитивно понятно, только в момент загрузки тоже возникает ошибка "Поле объекта не обнаружено" . Здесь тоже придется либо вносить исправления в конфигурацию Конвертация данных, либо можно воспользоваться уже моим готовым решением. Я сделала расширение для Конвертации данных 3.0 , подключив которое Вы решаете эту проблему. Приобрести расширение и две исправленные обработки, о которых я рассказывала вначале статьи, вы можете приобрести по ссылке ниже.
После загрузки правил можно приступать к их редактированию.
Процесс доработки и выгрузки исправленных правил я в этой статье описывать не буду, так как моя задача в этой статье предложить решения по исправлению ошибок на первом этапе настроек. Но если кому-то нужна такая информация, Вы хотите более подробное описание действий, наглядную инструкцию – пишите мне, я сделаю обучающее видео на эту тему.
На этой странице были выложены все доработанные отчеты и расширение бесплатно, однако я обнаружила, что скачиваний было очень много, и распространились продажи моих переделанный обработок. В связи с этим, я тоже сделала исправленные обработки платными, но все-таки цену оставила низкую – 53 руб., которую не жалко потратить, но и мне будет какая-то отдача для развития сайта.
Доработки проводились на конвертации данных 3.0(3.0.5.3)
Обработки предоставляются пакетом. То есть сразу две исправленные обработки и расширение, так как для работы нужны все перечисленные исправления. Стоимость пакета составляет 159 руб.
"Доброе утро (<br><br>Имеются 2 конфигурации: Первая - CRM 8.2 v 1.0.9.1 Вторая - Бух 8.1 v 1.6.25.6.<br>Написал правило обмена для переноса: из CRM Документ.ЗаказПокупателя в БУХ Документ.Счет, соответственно за ним тянутся контрагенты, но без РегистрыСведений.КонтактнаяИнформация.<br>В правиле обмене (в Справочники -> Конрагенты) в ПЕРЕД_ВЫГРУЗКОЙ пишу код:<br><br>Запрос = Новый Запрос;<br>Запрос.Текст = "ВЫБРАТЬ<br>| КонтактнаяИнформация.Объект КАК Объект,<br>| КонтактнаяИнформация.Тип КАК Тип,<br>| КонтактнаяИнформация.Вид КАК Вид,<br>| ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(1000)) КАК Представление,<br>| КонтактнаяИнформация.Поле1 КАК Поле1,<br>| КонтактнаяИнформация.Поле2 КАК Поле2,<br>| КонтактнаяИнформация.Поле3 КАК Поле3,<br>| КонтактнаяИнформация.Поле4 КАК Поле4,<br>| КонтактнаяИнформация.Поле5 КАК Поле5,<br>| КонтактнаяИнформация.Поле6 КАК Поле6,<br>| КонтактнаяИнформация.Поле7 КАК Поле7,<br>| КонтактнаяИнформация.Поле8 КАК Поле8,<br>| КонтактнаяИнформация.Поле9 КАК Поле9,<br>| КонтактнаяИнформация.Поле10 КАК Поле10,<br>| ВЫРАЗИТЬ(КонтактнаяИнформация.Комментарий КАК СТРОКА(1000)) как Комментарий<br>|ИЗ<br>| Документ.ЗаказПокупателя КАК ЗаказПокупателя<br>| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация <br>| ПО ЗаказПокупателя.Контрагент = КонтактнаяИнформация.Объект<br>| ГДЕ ЗаказПокупателя.Проведен";<br><br>Запр = Запрос.Выполнить().Выгрузить();<br><br>Параметры.Вставить("ВыборкаИзРезультата", Запр);<br><br>// ПО ИДЕЕ ЭТО СТРУКТУРА И ПАРАМЕТР ВЫБОРКАИЗРЕЗУЛЬТАТА ДОЛЖЕН БЫТЬ ДОСТУПЕН ВО ВСЕХ ОБРАБОТЧИКАХ КАК //Параметры.ВыборкаИзРезультата<br><br>Вот. А в ПЕРЕЗ_ЗАГРУЗКОЙ у меня код который основан на этом параметре:<br><br>Сообщить(Параметры.Свойство("ВыборкаИзРезультата")); // ВЫДАЕТ ЛОЖЬ!! КАК БУДТО НЕ ПОНИМАЕТ<br><br>НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();<br><br>рез=Параметры.ВыборкаИзРезультата;<br> Для Каждого стр из рез Цикл<br> НовЗапись = НаборЗаписей.Добавить();<br> НовЗапись.Объект = стр.Объект;<br> НовЗапись.Тип = стр.Тип;<br> НовЗапись.Вид = стр.Вид;<br> НовЗапись.Представление = стр.Представление;<br> НовЗапись.Поле1 = стр.Поле1;<br> НовЗапись.Поле2 = стр.Поле2;<br> НовЗапись.Поле3 = стр.Поле3;<br> НовЗапись.Поле4 = стр.Поле4;<br> НовЗапись.Поле5 = стр.Поле5;<br> НовЗапись.Поле6 = стр.Поле6;<br> НовЗапись.Поле7 = стр.Поле7;<br> НовЗапись.Поле8 = стр.Поле8;<br> НовЗапись.Поле9 = стр.Поле9;<br> НовЗапись.Поле10 = стр.Поле10;<br> НовЗапись.Комментарий = стр.Комментарий;<br> НаборЗаписей.Записать();<br> КонецЦикла;<br><br>ВОПРОС: подскажите пож. почему не передается этот параметр (может я где-то ошибся, уже мозг взрывается ;<br>"
Чтобы выгрузить один объект источника в несколько объектов приемника, можно использовать мощный инструмент расширения возможностей правил конвертации – «ВыгрузитьПоПравилу».
Синтаксис функции:
Пример реальной задачи. Необходимо выгрузить справочник – «НоменклатурныеГруппы» в три объекта на стороне приемника: «НоменклатурнаяГруппа» (справочник), «ЗаказНаПроизводство» (документ), «СтатусыЗаказов» (регистр сведений). Для решения данной задачи можно использовать функцию «ВыгрузитьПоПравилу».
В правилах выгрузки данных (далее-ПВД) в обработчике «ПередОбработкой» происходит выгрузка в объект приемника «НоменклатурнаяГруппа» по стандартной выгрузке (ИмяПКО), а в обработчике «ПослеВыгрузки» происходит выгрузка в объекты «ЗаказНаПроизводство» и «СтатусыЗаказов» с помощью функции «ВыгрузитьПоПравилу»:
Если необходимо выгрузить иерархический справочник (элементы и папки) с учетом иерархии и поиск в базе приемника будет осуществляться по внутреннему идентификатору объекта источника (по полям поиска не будет продолжен поиск), то для корректной выгрузки иерархии необходимо установить галочку – «Поиск» у реквизита «ЭтоГруппа» (см. рисунок 1).
Рисунок 1 – Выгрузка иерархического справочника.
Если не установить галочку «Поиск» у реквизита «ЭтоГруппа», то папки объекта будут выгружаться как элементы.
3. Реквизиты объекта для правил регистрации объектовОбъекты регистрируются по правилам регистрации объектов к выгрузке только при изменении реквизитов объекта, которые указаны в правилах конвертации свойств (далее-ПКС) объекта (правила обмена данными). При необходимости регистрировать объект к выгрузке и при изменении реквизитов, которые не указаны в ПКС, достаточно данные реквизиты добавить в ПКС и установить галочку – «отключить» (см. рисунок 2).
Рисунок 2 – Реквизиты объекта для правил регистрации объекта.
Это может потребоваться для задачи, когда у нас есть реквизиты на стороне базы источника, которых нет в базе приемника, и только при их изменении объекты должны регистрироваться к обмену.
4. Зарегистрировать объект к выгрузке другим объектом (объектами)Когда стоит задача выгружать вместо регистрируемого объекта другой объект, то при регистрации исходного объекта в правилах регистрации объектов в обработчике «ПослеОбработки» через метод «ЗарегистрироватьИзменения» плана обмена можно зарегистрировать необходимый объект на узлах плана обмена.
Синтаксис метода:
ЗарегистрироватьИзменения (Узлы, Данные)
Пример реальной задачи. Несколько документов «Списания с расчетного счета» по одному документу «Заявка на расходование ДС» необходимо выгружать из конфигурации источника в один документ «Списания с расчетного счета» конфигурации приемника. При изменении документа «Списания с расчетного счета» регистрируется к обмену документ «Заявка на расходование ДС», который при выгрузке собирает по определенным правилам данные со всех документов «Списания с расчетного счета».
В продолжение пункта 4. При выгрузке любого объекта происходит проверка, соответствует ли он существующим правилам регистрации. Если при регистрации вместо исходного объекта регистрируется к выгрузке другой объект, то новый объект также будет проходить проверку по своему типу правил регистрации объектов. В случае несоответствия правилам регистрации, объект будет выгружать, как «УдалениеОбъекта».
Для устранения данной нестыковки выгружаемого объекта и правил регистрации объекта, нужно использовать в правилах регистрации в обработчике «ПослеОбработки» параметр «Выгрузка».
Описание параметра Выгрузка:
Выгрузка (только чтение) – Булево – параметр определяет контекст выполнения правила регистрации. Истина – правило регистрации выполняется в контексте выгрузки объекта. Ложь – правило регистрации выполняется в контексте перед записью объекта.
Пример реальной задачи. При изменении документа «Списания с расчетного счета» регистрируется к обмену документ «Заявка на расходование ДС», который при выгрузке собирает по определенным правилам данные со всех документов «Списания с расчетного счета». Но документ «Заявка на расходование ДС» может выгружать независимо по своим правилам регистрации, которые не совпадают с правилами регистрации при регистрации из документа «Списания с расчетного счета».
6. Выбор правила конвертации объектов по умолчаниюЕсли по одному объекту источнику в правилах конвертации объектов присутствуют несколько правил, то система будет использовать по умолчанию правило, которое совпадает по наименованию с наименованием объекта источника (см. рисунок 3).
Рисунок 3 – Выбор правила конвертации объекта по умолчанию.
Пример реальной задачи. Данный подход может пригодиться при выгрузке субконто, когда система определяет правила выгрузки объекта по умолчанию.
7. Создание документов (справочников) через ПКО на стороне приемникаПри необходимости создавать на стороне приемника новые элементы документов (справочников) и подставлять их в исходный объект, можно применить следующий подход:
- определить правило заполнения нового документа (справочника) на стороне приемника (например, через входящие данные);- описать заполнение реквизита нового документа (справочника) в исходном объекте (например, через исходящие данные);
- заполнять при выгрузке на стороне источника новый документ (справочник) уникальным значением (например, числом).
Пример реальной задачи. Необходимо на стороне приемника создавать новые документы «ДокументРасчетовСКонтрагентом» в документе ввод начальных остатков по счетам взаиморасчетов. На стороне источника заполняем реквизит «ДокументРасчетовСКонтрагентом» при выгрузке начальных остатков по счетам взаиморасчетов уникальным значением (числом):
В исходном объекте («ВводНачальныхОстатков») описываем правила выгрузки реквизита «ДокументРасчетовСКонтрагентом»:
Определяем правило заполнения «ДокументаРасчетовСКонтрагентом» на стороне приемника (см. рисунок 4).
Рисунок 4 – Правили выгрузки «ДокументРасчетовСКонтрагентов».
В конвертации данных нельзя создать параметр с типом «ТаблицаЗначений» на вкладке «Параметры» (см. рисунок 5).
Рисунок 5 – Допустимые типы для параметров конвертации данных.
Возможность создать параметр с типом «ТаблицаЗначений» при необходимости присутствует в системе, необходимо в общем обработчике «ПередЗагрузкойДанных» определить параметр.
Также необходимо в общем обработчике «ПослеЗагрузкиДанных» удалить данный параметр.
При выгрузке из базы источника можно указывать вместо элемента перечисления или предопределенного значения справочника текстовое значение, которое равно наименованию элемента перечисления или предопределенного значения справочника.
Пример реальной задачи. В базе приемника присутствует реквизит – «ТипПлатежа» с типом «Перечисление». При выгрузке реквизита (обработчик: «Перед выгрузкой») можно указать текстовое значение равное наименованию элемента перечисления на стороне базы приемника (см. рисунок 6). Данный подход может ускорить процесс разработки в конвертации данных.
Рисунок 6 – Заполнение реквизита с типом «Перечисление».
10. Ускорение процесса выгрузки с помощью параметра «ВыгрузитьОбъект» («ВыгрузитьТолькоСсылку»)Когда необходимо выгрузить большой объем данных и нет необходимости выгружать полностью ссылочные данные, то можно сократить объем выгружаемых данных с помощью параметров «ВыгрузитьОбъект» («ВыгрузитьТолькоСсылку») в обработчике «ПриВыгрузке» правил конвертации свойств (ПКС):
Пример реальной задачи. Данное ускорение может потребоваться, когда все ссылочные объекты (нормативно-справочная информация) из базы источника ежедневно интегрируется в базу приемника, а документы должны транслироваться с определенным интервалом (раз в месяц). В таком случае при обмене документами между базами нет необходимости полностью передавать ссылочные объекты, а можно передавать только ссылку, что ускорит процесс выгрузки.
Рассмотренные приемы работы позволят повысить производительность и эффективность работы с программой конвертацией данных 2.1.
Статью подготовил Аналитик-эксперт по информационным системам "ИнфоСофт" Ретунский Александр.
Читайте также: