При организации обмена данными между конфигурациями 1С часто возникает необходимость доработки существующих или создания новых правил обмена. Ручная правка XML-файлов или переписывание описания объектов в текстовых редакторах занимает много времени и приводит к ошибкам. Рассмотрим, как правильно разрабатывать правила обмена, обновлять структуру метаданных, настраивать отборы по организации и периоду, а также корректно передавать счета учета и ссылочные данные.
Для разработки и модификации правил конвертации применяется специализированная конфигурация — «1С:Конвертация данных» редакции 2.x. Разберем по шагам стандартную цепочку действий при изменении структуры метаданных конфигураций-источников или приемников:
MD82Exp.epf или MD83Exp.epf).Универсальный обмен данными в формате XML в базе-источнике.Частая задача при переносе документов — ограничение состава выгрузки конкретной организацией. Реализовать такой отбор можно несколькими способами. Проанализируем каждый вариант.
Способ 1. Использование параметров обмена
Создадим глобальный параметр на вкладке «Параметры» в конфигурации «Конвертация данных» с именем Организация. При открытии обработки универсального обмена этот параметр станет доступен для выбора на вкладке «Параметры выгрузки». Затем в ПКО нужного документа в обработчике «Перед выгрузкой» пропишем проверку:
Если ЗначениеЗаполнено(Параметры.Организация) И Источник.Организация <> Параметры.Организация Тогда
Отказ = Истина;
КонецЕсли;
Способ 2. Жесткое условие в обработчике ПКО
Если правила пишутся под конкретную организацию и интерактивный выбор не требуется, отбор можно задать непосредственно по наименованию или другим реквизитам объекта в обработчике «Перед выгрузкой»:
Если Источник.Организация.Наименование <> "Основная организация" Тогда
Отказ = Истина;
КонецЕсли;
Выясним причину частой ошибки начинающих разработчиков: появление сообщения об ошибке Переменная не определена (Источник). В «Конвертации данных» обработчики выполняются в строго определенном контексте:
Перед обработкой и После обработки не имеют переменной Источник. В ПВД при стандартной выборке доступно управление выгрузкой через флаг Отказ, а при произвольной выборке инициализируется коллекция ВыборкаДанных (например, результат выполнения запроса).Источник доступна в событиях Перед выгрузкой, При выгрузке и содержит ссылку на выгружаемый объект базы-источника.Источник содержит значение конкретного свойства или ссылку на объект-владелец.Если необходимо отобрать документы по периоду, правильнее всего задавать период на уровне ПВД в параметрах ДатаНачала и ДатаОкончания. Проверка даты в ПКО вида Если Источник.Дата < Параметры.ДатаНачала Тогда Отказ = Истина; КонецЕсли; допустима, но приводит к лишнему считыванию неподходящих объектов из базы.
Посмотрим на пример сопоставления счетов бухгалтерского учета, когда в базе-источнике (например, УТ 10.3) план счетов отсутствует, а в приемнике (БП 2.0) реквизит требует ссылку на предопределенный счет плана счетов Хозрасчетный.
В ПКС реквизита счета в обработчике «Перед выгрузкой» передадим имя предопределенного счета в строковом виде либо установим поиск по коду:
Если Источник.ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя Тогда
Значение = "РасчетыСПокупателями"; // Имя предопределенного счета в приемнике
Иначе
Значение = "";
КонецЕсли;
Если требуется непосредственная установка счета при загрузке в базе-приемнике, пропишем следующий код в обработчике ПКО «После загрузки»:
Если Объект.ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя Тогда
Объект.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
Иначе
Объект.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.ПустаяСсылка();
КонецЕсли;
Разберем типичные причины ситуации, когда документ переносится в базу-приемник, но его реквизиты или табличные части остаются пустыми:
СправочникСсылка (Контрагент, Договор, Номенклатура), но для этих справочников в правилах нет сопоставленных ПКО, ссылки не смогут выгрузиться или синхронизироваться в приемнике, и поля останутся пустыми.После загрузки укажем РежимЗаписи = РежимЗаписиДокумента.Проведение; либо включим флаг проведения на форме обработки универсального обмена.