EnterpriseData – часть 2. Процесс выгрузки данных

26.08.19

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

Как я и предполагал, тема обмена данными через ED оказалась актуальной. Предлагаю Вашему вниманию следующую статью из цикла. Тем, кто не читал мою первую, вводную статью, и не знаком с механизмом обмена через ED, рекомендую прочесть сначала ее – первая статья.

Как я уже говорил в первой статье, написание правил для выгрузки и загрузки данных это разные, в общем случае, не связанные друг с другом, процессы.

Поговорим более подробно про процесс выгрузки данных.

Содержание

  1. Обработчик «Перед конвертацией»
  2. Выборка и обход зарегистрированных к выгрузке объектов
  3. Обработка данных по правилам обработки
  1. Конвертация данных
  1. Обработчик «После конвертации»
  2. Полезные процедуры общего модуля «ОбменДаннымиXDTOСервер», используемые при выгрузке данных
  3. Основные элементы структуры «КомпонентыОбмена»

 

Ниже приведена общая схема выгрузки данных, которую мы будем рассматривать в статье:

Общая схема обмена данными через ED

Инициализация параметров, обработчик «Перед конвертацией»

В самом начале выполнения обмена данными происходит инициализация и заполнение структуры «КомпонентыОбмена». Основные элементы структуры смотрите здесь.

Далее, выполняется обработчик «Перед конвертацией», в котором можно выполнить любые необходимые действия перед выгрузкой данных. Например, можно заполнить параметры, заданные в настройках конвертации в КД 3.0:

КомпонентыОбмена.ПараметрыКонвертации.ВыгружатьГруппыТоваров = Ложь;

К значениям данных параметров можно обращаться из других обработчиков выгрузки.

 

Выборка и обход зарегистрированных к выгрузке объектов

На данном этапе выбираются объекты, зарегистрированные для узла плана обмена, в который осуществляется выгрузка. Выполняется обход результата выборки. Проверяется вид данных. В зависимости от вида данных происходит либо выгрузка удаления объекта, либо выгрузка объекта по правилам. В случае выгрузки по правилам, выполняется проверка объекта на соответствие правилам регистрации. Если объект по каким-то причинам не подходит под текущие правила, также выгружаются данные о его удалении. Если объект прошел проверку, выполняется поиск правила обработки данных по типу объекта.

 

Обработка данных по правилам обработки

Правила обработки данных (ПОД) настраиваются в КД 3.0 для каждого типа объектов. В ПОД можно указать используемые правила конвертации объектов (ПКО). Допустимо указание произвольного количества ПКО. Если один и тот же объект может быть выгружен по разным ПКО, в зависимости от значений его реквизитов, требуется включить флаг «Выгружать очистку данных по неиспользуемым ПКО». Тогда по всем не используемым ПКО будет выгружаться информация об удалении объекта.

В ПОД может быть указан признак произвольной выборки данных - «Способ выборки >> Произвольный алгоритм»:

Настройка произвольной выборки данных в ПОД

Данный режим применяется для реализации обмена данными без использования плана обмена. Объекты к выгрузке, в данном случае, определяются в обработчике «Выборка данных». Это может потребоваться, например, для выгрузки начальных остатков.

 

Обработчик «При обработке»

Основное назначение данного обработчика – разрешение или запрещение доступных правил конвертации для конкретного объекта выборки:

Основные параметры обработчика:

  1. КомпонентыОбмена – структура с общими параметрами текущего обмена данными. Параметр присутствует во всех обработчиках обмена данными. Основные ключи структуры смотрите в этом разделе.
  2. ДанныеИБ – доступ к данным выгружаемого объекта: справочника или документа.
  3. ИспользуемыеПКО – структура, ключами которой являются ПКО, выбранные для данного ПОД. Значения ключей имеют тип «булево». Значение «Истина» разрешает использовать данное ПКО, значение «Ложь» - запрещает. По умолчанию все значения равны «Истина».

Пример:

ИспользованиеПКО.Справочник_Номенклатура_Отправка = НЕ ДанныеИБ.ЭтоГруппа;

Также, данный обработчик можно использовать для принудительной выгрузки дополнительных объектов:

ОбменДаннымиXDTOСервер.ВыгрузкаОбъектаВыборки(КомпонентыОбмена, ДанныеИБ.Владелец);

 

Обработчик «Выборка данных»

Используется для реализации произвольной выборки объектов, если для ПОД установлен признак произвольной выборки данных.

Обработчик должен вернуть массив объектов ИБ либо массив структур к выгрузке.

Процесс выгрузки данных с произвольным алгоритмом не автоматизирован в БСП полностью. В общем модуле «ОбменДаннымиXDTOСервер» есть механизмы для его реализации, но значительную его часть необходимо реализовывать самостоятельно.

Для использования ПОД с произвольной выгрузкой, необходимо перед выгрузкой данных определить Сценарий выгрузки. Это элемент структуры «КомпонентыОбмена», с типом – «ТаблицаЗначений». В таблице сценариев должны быть перечислены все ПОД с произвольным алгоритмом выгрузки:

КомпонентыОбмена.СценарийВыгрузки = новый ТаблицаЗначений;
КомпонентыОбмена.СценарийВыгрузки.Колонки.Добавить("ИмяПОД");

НоваяСтрока = КомпонентыОбмена.СценарийВыгрузки.Добавить();
НоваяСтрока.ИмяПОД = "Документ_ОстаткиТоваров_Отправка";

Также, необходимо дополнительно указать, что обмен выполняется без использования плана обмена:

КомпонентыОбмена.ЭтоОбменЧерезПланОбмена = Ложь;

 

Конвертация данных

Конвертация данных происходит по правилам, которые состоят из правил конвертации объектов (ПКО), правил конвертации свойств объектов (ПКС) и правил конвертации предопределенных данных (ПКПД). Все они настраиваются в конфигурации КД 3.0.

Процесс конвертации объектов состоит их конвертации всех его свойств.  Каждое свойство объекта, конвертируется согласно выбранному для него ПКО либо ПКПД:

Настройка ПКС для объекта

Конвертация свойств объектов выполняется в два этапа, между которыми вызывается обработчик «При отправке». В обработчике можно дополнить или переопределить выгружаемые данные.

Следует иметь в виду, что в обмене через ED объекты по ссылке не выгружаются полностью, как это было в обмене по правилам КД 2.0. По ссылке выгружаются только ключевые реквизиты объекта, которые необходимы для поиска в базе-приемнике. В некоторых случаях в базе-приемнике могут создаваться новые объекты по переданным ключевым свойствам, это будет подробно описано в следующее статье. 

 

Конвертация свойств первого этапа

На данном этапе происходит конвертация свойств, для которых не установлен признак «Использовать алгоритм конвертации». Если свойство ссылочное, требуется обязательное указание правила конвертации свойства. Если для ссылочного свойства не указано правило конвертации и не установлен флаг «Использовать алгоритм конвертации» - свойство не будет выгружено:

 Конвертация свойств первого этапа

 

Обработчик «При отправке»

Обработчик выполняется после первого этапа конвертации свойств. Его нужно использовать для произвольного заполнения свойств, для которых установлен флаг «Использовать алгоритм конвертации».

Основные параметры обработчика:

  1. КомпонентыОбмена – структура с общими параметрами текущего обмена данными.
  2. ДанныеИБ – данные выгружаемого объекта: справочника или документа.
  3. ДанныеXDTO – промежуточная структура, данные которой будут использоваться для создания объектов XDTO.
  4. СтекВыгрузки – массив, который содержит ссылки на объекты, выгруженные на данном шаге обмена данными. Последний элемент массива - это всегда ссылка на текущий выгружаемый объект. По данным стека выгрузки можно определить, что объект выгружен «По ссылке». Также, можно определить родителя выгружаемого объекта. Используя данные стека выгрузки можно поставить условие на выполнения алгоритмов, которые не должны выполнятся в случае выгрузки объекта по ссылке.

Переопределенные в обработчике свойства необходимо добавлять к структуре «ДанныеXDTO». Если свойство простое, оно переносится в структуру «ДанныеXDTO» без изменений. Если свойство составное и для него не указано правило конвертации в настройках ПКС, добавлять его нужно в виде инструкции. Инструкция – это структура состоящая из двух элементов: правило конвертации свойства и само свойства.

Примеры: 

ДанныеXDTO.Вставить("АдресДоставки", АдресДоставкиСтрокой);

Контрагент = новый Структура("ИмяПКО, Значение", "Справочник_Контрагенты_Отправка", Покупатель);
ДанныеXDTO.Вставить("Контрагент ", Контрагент);

Коллекции необходимо добавлять в структуру «ДанныеXDTO» в виде таблиц значений. Свойствами строк таблицы, могут являться данные простых или составных типов. Для составных типов также могут быть использованы инструкции, если для свойств не заданы правила конвертации в настройках ПКС.

Пример:

ТабДопРеквизитов = новый ТаблицаЗначений;
ТабДопРеквизитов.Колонки.Добавить("Свойство");
ТабДопРеквизитов.Колонки.Добавить("ЗначениеСвойства");

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

   НоваяСтрока = ТабДопРеквизитов.Добавить();
   НоваяСтрока.Свойство = новый Структура("ИмяПКО, Значение", "Справочник_ДополнительныеРеквизиты_Отправка", ВыборкаДетальныеЗаписи.Свойство);
   НоваяСтрока.ЗначениеСвойства = ВыборкаДетальныеЗаписи.Значение;

КонецЦикла;

ДанныеXDTO.Вставить("ДополнительныеРеквизиты", ТабДопРеквизитов);

 

Конвертация свойств второго этапа

Правила конвертации второго этапа выполняются только в том случае, если определен обработчик «При отправке».

На данном этапе происходит конвертация свойств, для которых установлен признак «Использовать алгоритм конвертации». Указание правил конвертации для таких свойств в настройках ПКС не является обязательным. Они могут быть заданы в инструкциях в обработчике «При отправке»:

Конвертация свойств второго этапа

 

Обработчик «После конвертации»

В данном обработчике можно выполнить произвольные действия после конвертации и выгрузки в файл обмена всех зарегистрированных объектов.

 

Полезные процедуры общего модуля «ОбменДаннымиXDTOСервер», используемые при выгрузке данных

Данные процедуры могут быть использованы в обработчиках выгрузки, а также при реализации собственных алгоритмов.

ИнициализироватьКомпонентыОбмена – выполняет инициализацию компонентов обмена данными, создание и первоначальное заполнение структуры «КомпонентыОбмена».

ОткрытьФайлВыгрузки – открывает и подготавливает файл выгрузки данных.

ПроизвестиВыгрузкуДанных – выполняет выгрузку данных согласно правилам и параметрам обмена.

ВыгрузкаОбъектаВыборки – выполняет выгрузку объекта по правилам конвертации. Можно использовать в обработчиках для выгрузки произвольных объектов.

ВыгрузитьСвойство – выполняет преобразование свойства объекта ИБ в элемент структуры «ДанныеXDTO».

ПОДПоОбъектуМетаданных – поиск правил обработки данных по типу объекта метаданных.

ПКОПоИмени – выполняет поиск правила конвертации объекта по имени в таблице «ПравилаКонвертацииОбъектов» структуры «КомпонентыОбмена»

ДанныеXDTOИзДанныхИБ – выполняет преобразование данных ИБ в структуру «ДанныеXDTO».

ОбъектXDTOИзДанныхXDTO – выполняет создание объекта XDTO по данным структуры «ДанныеXDTO».

ЗаписьЖурналаРегистрацииОбменДанными – выполняет запись произвольных данных в журнал регистрации.

 

Основные элементы структуры «КомпонентыОбмена»

Структура, содержащая всю информацию по текущему обмену данными. Передается в качестве параметра во все обработчики при выгрузке и загрузке данных.

 Общие элементы

ВерсияФорматаОбмена – версия используемого пакета XDTO, например – «1.6».

XMLСхема – пространство имен используемого пакета XDTO.

МенеджерОбмена – общий модуль, в котором находятся правила конвертации или модуль внешней обработки.

УзелКорреспондента - ссылка на узел плана обмена корреспондента.

НаправлениеОбмена – одно из двух значений: «Отправка» или «Получение».

ЭтоОбменЧерезПланОбмена – флаг, указывающий, что обмен данными выполняется с использованием плана обмена.

ФлагОшибки – флаг, указывающий, что в процессе обмена данными произошла ошибка.

СтрокаСообщенияОбОшибке – описание ошибки, произошедшей в процессе обмена данными.

ПравилаОбработкиДанных – таблица значений со всеми правилами обработки данных.

ПравилаКонвертацииОбъектов – таблица значений со всеми правилами конвертации объектов.

ПараметрыКонвертации – структура параметров, которые определены в настройках конвертации.

Элементы, используемые при выгрузке данных

ВыгруженныеОбъекты – массив содержащий все объекты, выгруженные в текущей сессии выгрузки данных.

КоличествоОбъектовКВыгрузке – количество объектов, зарегистрированных к выгрузке.

СчетчикВыгруженныхОбъектов – позиция текущего выгружаемого объекта.

СоответствиеРегистрацияПоНеобходимости – список объектов (соответствие), для которых указан признак выгрузки «ВыгружатьПриНеобходимости».

ВыгруженныеПоСсылкеОбъекты – массив объектов, которые выгружены по ссылкам в процессе выгрузки данных. Ссылки на объекты добавляются в массив, если определены правила регистрации (ПРО) для объекта и в правиле указан режим выгрузки «ВыгружатьПриНеобходимости».

СценарийВыгрузки – таблица значений с ПОД, которые используются для произвольной выгрузки. Применяется для выгрузки данных без использования плана обмена.

ТаблицаПравилаРегистрацииОбъектов – таблица значений со всеми правилами регистрации объектов (в случае, если ПРО заданы для обмена данными).

СвойстваУзлаПланаОбмена – структура, содержащая значения реквизитов плана обмена, которые используются для настройки режимов выгрузки объектов в ПРО («ВыгружатьВсегда», «ВыгружатьПоУсловию», «ВыгружатьПриНеобходимости», «ВыгружатьВручную», «НеВыгружать»).

 

На этом, я завершаю описании процесса выгрузки данных через ED.

Продолжение следует…

Если статья Вам понравилась, ставьте плюсик J

 

Другие мои статьи из серии «Новый подход к обмену данными»

  1. Теоретическая, вводная статья по EnterpriseData
  2. Процесс загрузки данных, идентификация объектов
  3. Пример доработки правил конвертации данных без использования КД 3.0

EnterpriseData выгрузка данных правила обработки конвертации объектов и свойств обработчики выгрузки

См. также

SALE! 10%

Перенос данных 1C Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    166462    333    277    

373

SALE! 20%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141517    798    297    

419

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.234.x) и БП 3.0 (3.0.161.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    24018    169    51    

127

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    51255    228    69    

185

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    36589    94    66    

89

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56207    59    105    

61

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171173    303    257    

378

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186875    589    509    

526
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kembrik 10 26.12.18 12:00 Сейчас в теме
О, продолжение, отлично, спасибо. Отлично структурирован материал, хоть в книгу верстать.

Реквестирую немного раскрыть тему наиболее элегантного кода программной выгрузки с использованием типовой обработки ВыгрузкаЗагрузкаEnterpriseData. УниверсальныйОбменДаннымиXML освоен, а тут пока не выходит каменная чаша с наскока
avmironov; +1 Ответить
2. ids79 8538 26.12.18 14:14 Сейчас в теме
Спасибо. Включу в план на будущее.
avmironov; +1 Ответить
3. davdykin 25 28.12.18 17:35 Сейчас в теме
Спасибо за статью. Интересно, актуально и по делу.
avmironov; +1 Ответить
4. ids79 8538 29.12.18 10:47 Сейчас в теме
5. MaxS 2945 03.01.19 18:36 Сейчас в теме
Полезная статья. Правда как мне кажется многие в первую очередь пытаются использовать КД3 на практике и если не получается, особо настойчивые читают теорию. Если получается, доходят до описанного здесь методом проб и ошибок.

Некоторые дополнения:
>Основные элементы структуры «КомпонентыОбмена»
>МенеджерОбмена – общий модуль, в котором находятся правила конвертации.
Не только общий модуль, а ещё и модуль внешней обработки.

>НаправлениеОбмена – одно из двух значений: «Выгрузка» или «Загрузка».
"Отправка" или "Получение"
6. ids79 8538 04.01.19 07:46 Сейчас в теме
(5)Спасибо за комментарий, Максим.
Неточности поправил.
avmironov; +1 Ответить
8. Vladimir Litvinenko 2896 25.03.19 21:06 Сейчас в теме
(5) Такие материалы полезны в том числе после использования КД 3 на практике, для закрепления и систематизации знаний. И чтобы свои конспекты не писать. Схема в публикации отличная! Обязательно поможет вспомнить как работает система, когда снова придётся работать с КД 3. Дмитрий, спасибо за отличный материал.
maloi3390; avmironov; RibD; ids79; +4 Ответить
9. ids79 8538 26.03.19 10:20 Сейчас в теме
(8)Спасибо, Владимир
avmironov; +1 Ответить
7. Восьмой 89 22.03.19 12:25 Сейчас в теме
Огромное спасибо за материал!
avmironov; +1 Ответить
13. ids79 8538 17.04.19 07:32 Сейчас в теме
10. Rabot 90 16.04.19 17:39 Сейчас в теме
Спасибо за статью!
Не могли бы вы пояснить как заставить работать произвольную выборку?
"Для использования ПОД с произвольной выгрузкой, необходимо перед выгрузкой данных определить Сценарий выгрузки."
Куда именно приведённый код нужно вставить, в какую-то обработку общего модуля "ОбменДаннымиXDTOСервер" или в какой-то обработчик конвертации?
11. Rabot 90 16.04.19 18:39 Сейчас в теме
(10) сам спросил сам ответил)
Что бы заработала произвольная выборка в КД3 нужно:

1. Код вставить в обработчик КД "ПередКонвертацией"
Если КомпонентыОбмена.НаправлениеОбмена = "Отправка" Тогда
КомпонентыОбмена.СценарийВыгрузки = новый ТаблицаЗначений;
КомпонентыОбмена.СценарийВыгрузки.Колонки.Добавить("ИмяПОД");
НоваяСтрока = КомпонентыОбмена.СценарийВыгрузки.Добавить();
НоваяСтрока.ИмяПОД = "СВОЁ_ИМЯ_ПОД";
КомпонентыОбмена.ЭтоОбменЧерезПланОбмена = Ложь;
КонецЕсли;


2. В конфигураторе КД3, в справочнике "ПравилаОбработкиДанных", в модуле формы "ФормаЭлемента", в процедурах "СпособВыборкиПриИзменении" и "УстановитьВидимость" - разрешить заполнять поле "ОбъектВыборки" так же и для способа выборки "Произвольный алгоритм".

3. В нужном ПОД, помимо заполнения основных свойст:
3.1 Вкладка "Основные сведения" - установить галку "Произвольный алгоритм";
3.2 Вкладка "Основные сведения" - заполнить поле "Объект выборки";
3.3 Вкладка "Выборка данных" - реализовать произвольный код, который возвращает массив ссылок, которые нужно выгрузить;

Но есть нюанс: при произвольной выборке нужно самостоятельно производить "Выборку изменений", для регистрации номера сообщения у выгруженных данных.
12. Rabot 90 16.04.19 20:12 Сейчас в теме
(11) При такой реализации указанный объект выгружается, но:
1. Номер отправленного в узле не проставляется;
2. Остальные объекты перестали выгружаться.

Вопрос остаётся: как реализовать для одного из документов/справочников свою произвольную выборку при выгрузке данных в КД3?
14. ids79 8538 17.04.19 07:43 Сейчас в теме
(12)Добрый день. На сколько я знаю, так сделать не получится. Только или все объекты по правилам или все по произвольному алгоритму.
Если найдете какой-нибуь способ, напишите, самому интересно.
15. Rabot 90 17.04.19 11:41 Сейчас в теме
(14) Мне кажется, что данный способ выгрузки противоречит логике разработчиков КД3. Мол, если не хотите что-то выгружать, ну так не регистрируйте, а значит создавайте нужные правила регистрации. В крайнем случае, в обработчике ПОД "ПриОбработке" определяйте выгружать данный объект или нет.

Как мне нравилась КД2, и как мне не нравится КД3.
16. user778014 9 09.05.19 23:06 Сейчас в теме
КД3 мертворожденный механизм. За 4 года с момента появления он не смог занять хоть сколько нибудь значительного распространения кроме типовых конфигураций. Идея универсальности не совместима с необходимостью каждый раз изменять конфигурацию и усложнять ее поддержку. Обмен в типовых версиях на базе КД3 не гибкий и до сих пор полон ошибок. Непонятно зачем 1с упорно пытается цепляться за этот неудачный механизм
18. MaxS 2945 10.05.19 05:28 Сейчас в теме
(16) Видимо Вы что-то не так поняли в механизме. ) Обслуживание упрощается, т.к. одни правила - одна конфигурация вместо одной конфигурации и массы правил для каждой пары обмениваемых баз. Независимость от версии конфигурации в другой базе. Отладка правил значительно упрощена по сравнению с КД2.
Ошибки в основном связаны с некорректностью исходных данных. Формат ED не позволяет выгружать некорректные данные, тем самым распространяя бардак по другим базам.
Знаю несколько клиентов, которые для обмена между производственной программой и УПП внедрили в УПП КД3, а не КД2 или какой-то другой механизм.
19. user778014 9 10.05.19 06:19 Сейчас в теме
(18) Возможно что вы чего то не поняли. Ошибки связаны с тем что для работы КД3 предполагается что механизм преобразования в формат ED через XDTO был идентичен в разных конфигурациях. Например в УПП, ЕРП, БП, ЗУП. Однако это возможно только в теории. На практике все эти конфигурации пишут разные команды и в разное время. Поэтому на каждый момент времени существует большая вероятность различий в формате преобразования в ED. Конкретно я столкнулся с ошибками в КА2. Да, следующий релиз пофиксил ошибку но это стоило мне несколько часов бесплодных поисков и несколько дней простоя проекта пока 1с не выпустила обновление. И так через раз
20. MaxS 2945 10.05.19 09:05 Сейчас в теме
(19) Формат ED неизменный в рамках версии формата. Их всего 6. Активно используются последние две. Если данные выгружены в этом формате, значит они уже прошли проверку и удовлетворяют минимальным требованиям формата и другая база обязана принять эти данные.
Сейчас все типовые поддерживают несколько форматов, в связи с чем практически всегда есть формат общий для обеих конфигураций. Похоже Вы путаете ошибки в правилах, которые могут быть и ошибки в реализации самой технологии универсального формата обмена.

Грубо говоря если нетрезвый водитель электрокара въехал в столб, это не означает, что вся технология автомобилей на аккумуляторах ущербна, а на бензине и дизеле лучше.
Т.е. если программист допустил ошибку в правилах, ошибка будет в любом варианте в КД3 и в КД2.
22. user778014 9 11.05.19 01:47 Сейчас в теме
(20) Нетрезвый водитель здесь это тот кто придумал эту схему. Я вот для примера открываю стандартную обработку по выгрузке правил синхронизации из комплекта КД3 в стандартной комплексной КА2.4.7.151 и получаю ошибку
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7400)}: Метод объекта не обнаружен (ПриПолученииНастроек)
ПланыОбмена[ИмяПланаОбмена].ПриПолученииНастроек(НастройкиПланаОбмена);

Все конфигурации типовые без изменений. А ошибка эта связана с тем что не во всех планах обмена КА есть модуль менеджера ПриПолученииНастроек. Это что получается разработчики никогда не открывали в КА обработку выгрузки правил синхронизации ??? И они до сих пор этого не знают ???? Жесть
23. MaxS 2945 11.05.19 05:26 Сейчас в теме
(22) Всё разработчики знают и давно опубликовали на партнерском форуме исправленную обработку, практически сразу как появилась эта ошибка. Если нет доступа туда, поищите статью на инфостарте. Например у меня в профиле.
Вот и спрашивается при чем тут сама технология ED? Применительно к статье, в которой мы пишем комментарии есть какие-то претензии? Что в этой технологии не правильно? ;)
avmironov; acanta; +2 Ответить
24. user778014 9 11.05.19 12:04 Сейчас в теме
(23) Спасибо за информацию о кривой обработке. Ситуация все больше напоминает историю про пьяного водителя электрокара. По статье вопросов нет. Пуговицы пришиты намертво ))
21. acanta 10.05.19 10:28 Сейчас в теме
(19) это слишком идеальный вариант, когда для двух разных приемников требуются одни и те же данные выгрузки.
Пример характеристики или серии номенклатуры.
Проблема не в отдельных ошибках, а в допущении, что данные из базы можно выгрузить по формату неизвестно кому, а там уже получатель разберётся что с этим делать.
Выросло такое убеждение из совершенно невообразимого количества служебной информации в базе, не имеющей прикладной пользовательской значимости и напротив, нехватки прикладной информации в некоторых вопросах, вынесенной в код или метаданные.
Необходимость этой служебной информации в свою очередь особенности платформы.
17. user778014 9 10.05.19 03:02 Сейчас в теме
И еще пару негатива о КД3. Так как он зависим от конфигурации типовых то очень часто есть несостыковки формата по релизам и выдаются ошибки при обмене. Это просто капец какой-то !
25. De-Heus 26.09.19 13:14 Сейчас в теме
ERP 2.4 Задача выгрузить в бухгалтерию документ ОтражениеЗарплатыВФинансовомУчете.
Почему то в состав плана обмена не включен указанный документ хотя присутствуют в формате EnterpriseData начиная с версии 1.3?
В состав план обмена Синхронизация данных через унив. формат добавил документ ОтражениеЗарплатыВФинансовомУчете. Как сделать чтоб при проведении документ регистрировался на узле?
27. ids79 8538 29.09.19 22:36 Сейчас в теме
(25)Нужно добавить этот документ в правила регистрации.
26. De-Heus 26.09.19 13:14 Сейчас в теме
28. auDemon 27.04.20 18:51 Сейчас в теме
Добрый день!
Подскажите такой момент: как в КД3 сделать отбор при выгрузке?
В том числе при выгрузке по ссылке, т.е. если выгружается документ, в котором указана номенклатура, не удовлетворяющая условию, то эта номенклатура не должна выгружаться.
В КД2 это можно сделать в обработчике ПКО "Перед выгрузкой".
В КД3 я прописал в ПОД "ПриОбработке":
Если КакоеТоУсловие Тогда
ИспользованиеПКО.Справочник_Номенклатура_Отправка = Ложь;
КонецЕсли;

но в таком случае по ссылке номенклатура все равно выгружается.
29. ids79 8538 29.04.20 14:09 Сейчас в теме
(28)Что Вы имеете в виду под "выгрузкой по ссылке"?
В КД3 объекты вообще не выгружаются по ссылкам.
Выгружаются только сами ссылки и ключевые данные.
30. auDemon 29.04.20 18:05 Сейчас в теме
(29)Я имею ввиду, что если зарегистрировать к обмену, например документ счет на оплату, то вместе с ним выгрузится номенклатура (по ПКО).
И возник вопрос: как при определенном отборе (например по родителю) отказаться от выгрузки номенклатуры, т.е. оставить поле пустым.
ПОД номенклатуры при этом не срабатывает. Как оказалось нужно в обработчике ПриОтправке ПКО номенклатуры устанавливать:
ДанныеXDTO = Неопределено.

Правда при этом может возникнуть другая проблема: пустая номенклатура не проходит проверку объекта XDTO по схеме (если там обязательно заполнение).
31. ids79 8538 07.05.20 10:21 Сейчас в теме
(30)Да, это не очень правильный способ.
Более правильно добавить отбор в ПКО документа и формировать список номенклатуры, который необходим. Только это придется сделать в каждом документе, где нужно ограничение по номенклатуре.
Но можно сделать отдельный алгоритм и вызывать его во всех необходимых документах.
32. asg128 28.09.21 17:30 Сейчас в теме
А как выгрузить один объект из базы-источника в несколько однотипных объектов в базу-приёмник? Например, Комплектацию из УТ в несколько документов Комплектация в БП3 ? В УТ одной Комплектацией можно оформить несколько комплектов, а в БП3 - только один.
33. ids79 8538 28.09.21 17:40 Сейчас в теме
(32)Очень просто. Создаете несколько правил конвертации для каждого объекта приемника с одним и тем же объектом формата и вперед.
34. aegoncharov 10.11.21 14:59 Сейчас в теме
Если объект прошел проверку, выполняется поиск правила обработки данных по типу объекта.

Посмотрел код, там получается что при обходе зарегистрированных данных ищется первое попавшееся ПОД на отправку по метаданным (типу объекта) .
Если в КД сделать несколько ПОД на один объект метаданных, то срабатывать будет только одно ПОД, первое попавшееся.
Просто в типовых правилах из УХ (они там от БП) обнаружил наличие таких ПОД, думал есть в них какой то смысл, но похоже его нет...
Прикрепленные файлы:
35. ids79 8538 12.11.21 09:05 Сейчас в теме
По моему да, будет выполняться первое попавшееся ПОД.
36. pyrkin_vanya 493 28.01.22 11:43 Сейчас в теме
Добрый день. Подскажите, пожалуйста. А как установить значение ключевого свойства? У меня в пакете XDTO есть ключевое свойство "Валюта". В документе нет такого реквизита. Хочу просто заполнить его определенным значением. Как это сделать?
ПриОтправкеДанных почему то вообще не срабатывает.
37. user1433102 19.10.22 09:01 Сейчас в теме
Добрый день, Дмитрий!
Спасибо за статью, а если есть задача подменить контрагента в документе на этапе выгрузки, чтобы не добавлять контрагента из бухгалтерской аналитики (настройки счетов).
Вроде все получилось в ДанныхXDTO нужный контрагент заменился, но в момент выгрузки выходит ошибка, что у контрагента не заполнены обязательные поля: Наименование и ЮиридическоФизическоеЛицо.
Спасибо
38. ids79 8538 29.10.22 14:42 Сейчас в теме
(37)Ну так скорее всего у вас данные поля просто не заполнены... Если заполнены, нужно смотреть внимательно в отладчике, что там и как.
39. docent91 09.11.22 20:02 Сейчас в теме
Добрый день! Статья отличная помогла привести в порядок сведения о КД3. Но не подскажете каким образом можно передать в приемник например глобальный параметр типа строка.
avmironov; +1 Ответить
40. sys1c 29.01.24 09:48 Сейчас в теме
(12) Скажите, вы нашли решение для выгрузки произвольно отобранных справочников? такая же задача стоит, вторая неделя пошла, не могу решить.
42. Viktor_Ermakov 369 08.02.24 08:33 Сейчас в теме
(40)
жите, вы нашли решение для выгрузки произвольно отобранных справочников? такая же задача стоит, вторая неделя пошла, не могу решить.

Рекомендую пройти курс от УЦ3 по КД3.0 или КД3.1, там преподаватель показывает разные примеры.
41. Viktor_Ermakov 369 08.02.24 08:32 Сейчас в теме
Спасибо за статью, полезный материал. Единственное что я бы посоветовал, если эта статья называется "...Часть 2" то всем статьям добавить в названия "...Часть 1" и т.д. что бы неопытный пользователь мог выстроить верную хронологию статей для прочтения
Оставьте свое сообщение