EnterpriseData – часть 3. Загрузка данных, идентификация объектов

22.08.19

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

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

Наконец-то дошли руки до третьей статьи из цикла – Новый формат обмена данными!

Тем, кто не читал первые, можно перейти по ссылкам ниже:

Чтобы облегчить восприятие информации, я сделал схемы с кратким пояснением. Под схемами идет более подробное описание. Схемы можно скачать в формате PowerPoint в комментарии к статье. 

 
 Термины, используемые в статье

 

Общая последовательность операций при загрузке данных

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

Процесс загрузки данных

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

Дальше происходит чтение файла данных. Последовательно считывается каждый объект XDTO и преобразуется в структуру, поля которой соответствуют самому объекту.

Для каждого объекта выполняется поиск ПОД по типа объекта, и его выполнение.

Дальше выполняется обработчик «При обработке». В обработчике доступен параметр «ДанныеXDTO», в который передается подготовленная структура с данными из XDTO объекта. Также в обработчике доступен параметр «ИспользуемыеПКО», который также является структурой. Ключи структуры, это имена ПКО, выбранные для данного ПОД. Значения элементов структуры имеют тип «булево». Выполняться будут только те ПКО, для которых значения в структуре равны «Истина». Обработчик в основном используется для отключения лишних ПКО для объекта на основании полученных данных и параметров обмена.

Дальше выполняется конвертация объекта по всем не отключенным ПКО. Именно на этом этапе происходит конвертация свойств первого и второго этапов, идентификация и запись объекта в ИБ. Запись выполняется в режиме «ОбменДанными.Загрузка = Истина», минуя все платформенные проверки и обработчики при записи. Этап конвертации объекта рассмотрен в отдельном разделе.

Дальше, после выборки и обработки всех объектов из файла обмена, выполняется обработчик «Перед отложенным заполнением». В нем можно реализовать какие-либо действия, необходимые перед отложенным заполнением. Например, можно выполнить сортировку данных в таблице для отложенного заполнения «КомпонентыОбмена.ЗагруженныеОбъекты». В таблицу записываются все выгруженные объекты, для которых указан алгоритм в КД31, на закладке «После загрузки всех данных». Объекты записываются в той же последовательности, в которой они были загружены. Можно их отсортировать по типу объекта.

Дальше выполняется само отложенное заполнение объектов. Отрабатываются алгоритмы для каждого объекта из таблицы «КомпонентыОбмена.ЗагруженныеОбъекты».

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

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

Самым интересным элементом загрузке данных, является конвертация объекта по правилу. Но прежде чем перейти к подробному описанию этого процесса, введем новый термин – Идентификация.

 

Идентификация объектов при загрузке

Идентификация – это наиважнейшая операция при загрузке данных в ИБ. Она позволяет сопоставить загружаемые объекты с уже существующими в базе.

В КД31 доступны три варианта идентификации:

Идентификация объектов при загрузке

По уникальному идентификатору (УИД), используется по умолчанию – поиск выполняется по значению уникального идентификатора. Данный способ применяется, когда не нужно сопоставлять объекты одной ИБ с объектами в другой. Когда все объекты создаются только в одной ИБ, а затем переносятся в другую. После переноса объекта в ИБ приемнике у него создается УИД, аналогичный УИД этого объекта в ИБ источнике. После этого можно выполнять произвольное изменение реквизитов этого объекта в ИБ приемнике, на дальнейшую синхронизацию это не повлияет.

По полям поиска – поиск выполняется по набору полей объекта. Объект считается найденным, если совпадают все поля, указанные в качестве полей поиска. Данный способ используется для сопоставления объектов одной ИБ с объектами другой, когда объекты одного вида создаются как в ИБ источнике так и в ИБ приемнике. Существенный недостаток данного способа идентификации заключается в том, что если поля, указанные в качестве полей поиска будут изменены в ИБ приемнике, при последующей загрузки этого объекта из ИБ источника, объект не будет найден и будет загружен повторно. Из-за этого недостатка, данный способ идентификации обычно используется только в том случае, если отсутствует УИД у выгружаемых данных.

По уникальному идентификатору и полям поиска – поиск выполняется по УИД, если объект не найден, продолжается по указанным полям поиска. Если объект был найден по полям поиска, его УИД будет записан в специальный регистр сведений «ПубличныеИдентификаторыСинхронизируемыхОбъектов». При последующей синхронизации, поиск будет выполняться по УИД в данном регистре сведений, а не по полям. Таким образом можно выполнять сопоставление объектов, созданных в двух ИБ, и решается проблема поиска только по полям. 

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

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

 

Конвертация объектов по правилам конвертации (ПКО)

Рассмотрим более подробно алгоритм основного этапа загрузки данных, в процессе которого происходит идентификация и запись новых или найденных объектов в ИБ.

Данный алгоритм можно разделить на два разных процесса:

  • Конвертация объекта, загружаемого по ПОД – объект выгружен целиком из базы источника.
  • Конвертация объекта по ссылке – загружается ссылка на объект из другого объекта.

Конвертация объекта, выгруженного целиком

Общая схема конвертации полного объекта:

Конвертация полного объекта

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

Дальше выполняется конвертация свойств (ПКС) первого этапа. На первом этапе происходит конвертация тех свойств, для которых задано свойство формата.

Дальше выполняется обработчик «При конвертации данных XDTO». В обработчике доступны параметры:

  • ДанныеXDTO – структура с полученными данными.
  • ПолученныеДанные - новый, созданный объект данного типа, с частично заполненными свойствами (на первом этапе конвертации).

В обработчике можно реализовать произвольный механизм конвертации для тех свойств, для которых установлен флаг «Используется алгоритм конвертации». Значения всех таких свойств нужно поместить в структуру «Дополнительные свойства» параметра «ПолученныеДанные». Свойства можно помещать непосредственно, в виде значений или в виде инструкций (см. описание используемых терминов в начале статьи). Свойства – коллекции помещаются в виде массива структур.

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

Дальше, если объект был найден по УИД, выполняется обработчик «Перед записью полученных данных». В обработчике доступны параметры: «ПолученныеДанные» и «ДанныеИБ».

 Если объект найден, параметр «ДанныеИБ» содержит ссылку на этот объект.  

Если объект не найден по УИД, и для него доступен поиск по полям, происходит поиск по этим полям. Если объект найден по полям, также вызывается обработчик «Перед записью полученных данных» с заполненным параметром «ДанныеИБ».

Если объект не найден ни по УИД ни по полям, в обработчике «Перед записью полученных данных», параметр «ДанныеИБ» будет иметь значение «Неопределено».

В данном обработчике, можно реализовать собственный поиск объекта, и присвоить параметру «ДанныеИБ» найденный объект самостоятельно. Если же параметр «ДанныеИБ» останется не заполненным, в ИБ будет создан новый объект, который находится в параметре «ПолученныеДанные».

Если объект был найден (по УИД, полям поиска или произвольным образом), его данные будут замещены значениями из параметра «ПолученныеДанные». Причем замещаться будут только те свойства объекта для которых были определены ПКС в настройках КД31.

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

Объект (новый или найденный) будет записан в режиме «ОбменДанными.Загрузка = Истина». Это значит, что не будут выполнены многие платформенные проверки и обработчики при записи объекта, и он запишется в любом случае. 

 

Конвертация объекта, выгруженного по ссылке

Общая схема конвертации по ссылке:

Конвертация объекта по ссылке

Так же, как и в случае с загрузкой полного объекта, сначала происходит поиск по УИД (если он доступен). Если объект найден, возвращается ссылка на него, и больше никаких действий не происходит.

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

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

Дальше происходит поиск объекта по полям поиска. В случае, если объект найден, возвращается ссылка на него. А если же он не найден, выполняется обработчик «Перед записью полученных данных». В этом обработчике можно реализовать собственный поиск объекта. Но, обратите внимание, поиск будет выполняться только в том случае, если объект не был найден ни по УИД ни по полям поиска.

Дальше происходит запись частично заполненного объекта (заполнены только поля поиска), и возвращается ссылка не него. Поскольку запись происходит в режиме «ОбменДанными.Загрузка = Истина», объект будет записан на данном этапе.

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

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

 

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

 

На этом все, спасибо за внимание. Напишите, пожалуйста, в комментариях, какие еще темы по ED могут быть интересны. Ну и ставьте плюс, если статья Вам понравилась.

 

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

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

 

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

См. также

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0

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

Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Перенос данных осуществляется из 1С:ERP 2 / 1С:КА 2 / 1С:УТ 11 в 1С:БП 3.0. Правила обмена оперативно обновляются при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

38500 34650 руб.

15.04.2019    67705    176    136    

107

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

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

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

28000 руб.

15.12.2021    19536    129    38    

85

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    133497    712    291    

383

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3

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

Обработка позволяет не только перенести все документы, справочную информацию и начальные остатки из ERP 2 или КА 2 в ЗУП 3, но и организовать регулярный перенос данных между программами 1С:ERP 2 / КА 2 и 1С:ЗУП 3. Вы можете выбрать период отбора данных и установить фильтр по организациям, чтобы выгружать только необходимую информацию. Более того, перенос оперативно обновляется при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

48278 43450 руб.

03.12.2020    33639    79    57    

76

SALE! 10%

Перенос данных из УПП 1.3 / КА 1.1 в БП 3.0

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

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

43889 39500 руб.

25.02.2015    167965    286    240    

370

SALE! 10%

Перенос данных из УПП 1.3 в ЗУП 3.1 или из КА 1.1 в ЗУП 3.1

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

Перенос кадровых и расчетных данных и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" или "1С:Управление производственным предприятием, ред.1.3" в "1С:Зарплата и управление персоналом", ред. 3.1. Правила позволяют перенести кадровые данные сотрудников за весь период ведения учета в КА 1.1 / УПП 1.3 и расчетные данные за выбранный период (минимально необходимый - 2 года). Позволяют осуществить переход на ведение учета зарплаты и кадров в программе 1С:Зарплата и управление персоналом, ред. 3.1.

50722 45650 руб.

29.10.2018    53932    52    97    

55

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

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

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

28000 руб.

23.07.2020    45234    192    63    

149

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

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

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    149441    361    375    

496
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 22.08.19 10:53
Сообщение было скрыто модератором.
...
2. acanta 22.08.19 13:28 Сейчас в теме
Спасибо!
Самый большой плюс КД 3 в том, что доработка обмена не требует КД3.
avmironov; +1 Ответить
3. ids79 8237 22.08.19 20:37 Сейчас в теме
(2)Пожалуйста. Да, это так. Но существенные доработки все-таки лучше делать в КД 3
avmironov; acanta; +2 Ответить
4. shusharu 23.09.19 14:39 Сейчас в теме
Спасибо за статьи! Очень помогает.
Есть вопрос. Можно ли как то отказаться от получения объекта, при определенных условиях. Попробовал в процедуру ПКО_Документ_ПКОРасчетыССотрудниками_Получение_ПриКонвертаци­иДанныхXDTO сделать условие с возвратом. Но все равно объект попадает в форму сопоставления данных. (обмен между ЕРП и БУХ). Нужен аналог флага Отказ=Истина;
avmironov; user811769; ids79; +3 Ответить
5. ids79 8237 23.09.19 15:06 Сейчас в теме
(4)Чтобы отказаться от загрузки объекта, используйте событие "При обработке" правила обработки данных (ПОД).
Код следующий:
ИспользованиеПКО.ПКО_Документ_ПКОРасчетыССотрудниками_Получение = Ложь;
Также в обработчике доступны ДанныеXDTO, можно отменить загрузку выборочно.
Но более правильно поставить ограничение на этапе отправки, чтобы не нужные данные не попадали в файл выгрузки. На этапе выгрузки также можно использовать обработчик "При обработке".
avmironov; user811769; +2 Ответить
6. shusharu 23.09.19 16:10 Сейчас в теме
(5)
При обработке

Спасибо. А если в МенеджерОбменаЧерезУниверсальныйФормат13 на этот вид операции документа нет такого обработчика?
Только на вид Документ_ПКОРозничнаяВыручка_Получение, есть обработчик.

Вот кусочек из модуля

#Область Документ_ПКОРасчетыССотрудниками_Получение
Процедура ДобавитьПОД_Документ_ПКОРасчетыССотрудниками_Получение(ПравилаОбработкиДанных)
	ПравилоОбработки                         = ПравилаОбработкиДанных.Добавить();
	ПравилоОбработки.Имя                     = "Документ_ПКОРасчетыССотрудниками_Получение";
	ПравилоОбработки.ОбъектВыборкиФормат     = "Документ.ПКОРасчетыССотрудниками";
	ПравилоОбработки.ИспользуемыеПКО.Добавить("Документ_ПКОРасчетыССотрудниками_Получение");
КонецПроцедуры
#КонецОбласти
#Область Документ_ПКОРозничнаяВыручка_Получение
Процедура ДобавитьПОД_Документ_ПКОРозничнаяВыручка_Получение(ПравилаОбработкиДанных)
	ПравилоОбработки                         = ПравилаОбработкиДанных.Добавить();
	ПравилоОбработки.Имя                     = "Документ_ПКОРозничнаяВыручка_Получение";
	ПравилоОбработки.ОбъектВыборкиФормат     = "Документ.ПКОРозничнаяВыручка";
	ПравилоОбработки.ПриОбработке            = "ПОД_Документ_ПКОРозничнаяВыручка_Получение_ПриОбработке";
	ПравилоОбработки.ИспользуемыеПКО.Добавить("Документ_ПКОРозничнаяВыручка_Получение");
КонецПроцедуры
Показать




Мне самому добавить такой обработчик?

Что касается выгрузки я понимаю что так лучше, то основная доработка обмена идет на стороне Бухгалтерии и хотелось по возможности остаться только там, если не получится придется тогда сделать расширение и в ЕРП.
7. ids79 8237 24.09.19 09:35 Сейчас в теме
(6) Я бы посоветовал использовать конвертацию данных 3.1 в таком случае.
Но если уже решили вносить изменения вручную, добавляйте процедуру по аналогии с другими объектами. Также нужно отредактировать процедуры: ДобавитьПОД_Документ_ПКОРасчетыССотрудниками_Получение и ВыполнитьПроцедуруМодуляМенеджера
avmironov; user811769; +2 Ответить
8. shusharu 25.09.19 13:32 Сейчас в теме
(7) СПАСИБИЩЕ!!! Описал свой обработчик в расширении и все получилось!!


Вот так это выглядело в итоге, может кому пригодится
&Вместо("ДобавитьПОД_Документ_ПКОРасчетыССотрудниками_Получение")
Процедура АБС_ДобавитьПОД_Документ_ПКОРасчетыССотрудниками_Получение(ПравилаОбработкиДанных)
	ПравилоОбработки                         = ПравилаОбработкиДанных.Добавить();
	ПравилоОбработки.Имя                     = "Документ_ПКОРасчетыССотрудниками_Получение";
	ПравилоОбработки.ОбъектВыборкиФормат     = "Документ.ПКОРасчетыССотрудниками";
	ПравилоОбработки.ПриОбработке            = "АБС_ПОД_Документ_ПКОРасчетыССотрудниками_Получение_ПриОбраб­отке";
	ПравилоОбработки.ИспользуемыеПКО.Добавить("Документ_ПКОРасчетыССотрудниками_Получение");
КонецПроцедуры
&Вместо("ДобавитьПОД_Документ_ПКОРасчетыСКонтрагентами_Получение")
Процедура АБС_ДобавитьПОД_Документ_ПКОРасчетыСКонтрагентами_Получение(ПравилаОбработкиДанных)
	ПравилоОбработки                         = ПравилаОбработкиДанных.Добавить();
	ПравилоОбработки.Имя                     = "Документ_ПКОРасчетыСКонтрагентами_Получение";
	ПравилоОбработки.ОбъектВыборкиФормат     = "Документ.ПКОРасчетыСКонтрагентами";
	ПравилоОбработки.ПриОбработке            = "АБС_ПОД_Документ_ПКОРасчетыСКонтрагентами_Получение_ПриОбра­ботке";
	ПравилоОбработки.ИспользуемыеПКО.Добавить("Документ_ПКОРасчетыСКонтрагентами_Получение");
КонецПроцедуры

Процедура АБС_ПОД_Документ_ПКОРасчетыССотрудниками_Получение_ПриОбрабо­тке(ДанныеXDTO, ИспользованиеПКО, КомпонентыОбмена)
	Если ДанныеXDTO.КлючевыеСвойства.ТипЗначения="ПКОРасчетыССотрудниками" Тогда
		ИспользованиеПКО.Документ_ПКОРасчетыССотрудниками_Получение = Ложь;
	КонецЕсли;
КонецПроцедуры
Процедура АБС_ПОД_Документ_ПКОРасчетыСКонтрагентами_Получение_ПриОбраб­отке(ДанныеXDTO, ИспользованиеПКО, КомпонентыОбмена)
		ИспользованиеПКО.Документ_ПКОРасчетыСКонтрагентами_Получение = Ложь;
КонецПроцедуры

&После("ВыполнитьПроцедуруМодуляМенеджера")

Процедура АБС_ВыполнитьПроцедуруМодуляМенеджера(ИмяПроцедуры, Параметры)
	Если ИмяПроцедуры = "АБС_ПОД_Документ_ПКОРасчетыССотрудниками_Получение_ПриОбраб­отке" Тогда 
		АБС_ПОД_Документ_ПКОРасчетыССотрудниками_Получение_ПриОбрабо­тке(
		Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);
	ИначеЕсли  ИмяПроцедуры = "АБС_ПОД_Документ_ПКОРасчетыСКонтрагентами_Получение_ПриОбра­ботке" Тогда 
		АБС_ПОД_Документ_ПКОРасчетыСКонтрагентами_Получение_ПриОбраб­отке(
		Параметры.ОбъектОбработки, Параметры.ИспользованиеПКО, Параметры.КомпонентыОбмена);
	КонецЕсли;	
КонецПроцедуры
Показать
avmironov; user811769; ids79; +3 Ответить
9. Jungle Murzik 10.06.20 20:07 Сейчас в теме
Не могу поверить, что отложенное проведение выполняется после обработчика "После конвертации"
В документации написано, что этот обработчик выполняется после проведения документов
https://its.1c.ru/db/metod8dev#content:5846:hdoc
10. viki_glebova 18.03.22 14:05 Сейчас в теме
11. ids79 8237 18.03.22 15:46 Сейчас в теме
12. user1203419 25.03.22 19:35 Сейчас в теме
Доброго дня

Для того чтобы не замещать имеющийся объект использую
ПередЗаписьюПолученныхДанных
Если ДанныеИБ<> Неопределено Тогда
ПолученныеДанные = Неопределено;
КонецЕсли;


В целом порос наземещения это решает
Но вызывает ошибку и запись в ЖР
Мелочь, но неприятно

Если не затруднит, подскажите пожалуйста как все таки правильно отказаться от загрузки объекта, если по каким то причинам при загрузке стало понятно, что он не нужен.
Прикрепленные файлы:
13. ids79 8237 30.03.22 12:06 Сейчас в теме
(12)Сделайте проверку перед кодом, который вызывает ошибку "Если ПолученныеДанные <> Неопределено Тогда". Я думаю проблема решиться.
14. BETEP0K 18.08.22 18:15 Сейчас в теме
Вот у вас написано:
"Если объект был найден (по УИД, полям поиска или произвольным образом), его данные будут замещены значениями из параметра «ПолученныеДанные». Причем замещаться будут только те свойства объекта для которых были определены ПКС в настройках КД31."

Это по моему не вполне так:
Пример:
Делаю обмен данными справочника физ лица. Поле Дата рождения.
Заполнил в базе источнике поле дата рождения, сделал обмен:
1. данные выгрузились в файл
2. в файле дата рождения есть
3. в базе приемнике дата рождения загрузилась.. всё ок!

Однако

После этого очищаю поле Дата рождения в источнике. Опять делаю обмен:
1. в файл пусчтое поле Дата рождения НЕ выгружается.
2. При загрузке в базе приемнике - НЕ ОЧИЩАЕТСЯ!!!

В настройках ПКС нигде нет ничего при загрузку/выгрузку пустых свойств.

И в процедуре ОбменДаннымиXDTOСервер.КонвертацияСвойстваСтруктурыОбъектаXDTO
прямо стоит:
Если Не ЗначениеЗаполнено(ЗначениеСвойства) Тогда
Возврат;
КонецЕсли;

т.е. КД3 почему-то пустыми свойствами не обменивается. и при обходе ПКС ничего не делает если значение свойство пустое и не очищает его в объекте приемнике.

Отсюда, кстати и вопрос, и как факт очистки поля передать через КД3??
15. ids79 8237 19.08.22 10:51 Сейчас в теме
(14)Проверил. Да, имеет место такое поведение. Получается нужно обрабатывать этот момент в событии "ПередЗаписьюПолученныхДанных".
16. maxf 05.10.23 19:44 Сейчас в теме
Мне, наоборот, было нужно, чтобы при первой загрузке и обновлении номенклатуры сохранялась иерархия базы-приемника. То есть, чтобы не перезаписывался реквизит "Родитель". На этапе загрузки это сделать легко, но первоначально старались придерживаться концепции "никаких доработок приемника", всё в источнике. Так вот, даже если вообще убрать атрибут "родитель" из выгрузки, он заполнялся пустым элементом при загрузке! И номенклатура выпадала в корень )
В принципе, весьма распространенное поведение, но не всегда полезное.

Вообще, инструмент с очень непростой гибкостью. Одно создание объектов по ссылкам чего стоит, иной раз отучить его от этого стоит немалых усилий )
Хорош там, где надо сделать полный "клон" базы (не обязательно той же конфигурации, главное, что полный, без изменения смысла сущностей) и поддерживать это клонирование - вот тут все достаточно просто. А где нужны частичные обмены, документообороты, сопоставление двух (еще лучше, трех, четырех...) независимых баз - вот тут вас ждет много интересных приключений )
Оставьте свое сообщение