КД 2: у выгружаемого свойства объекта заполняются только поля поиска и не отрабатывают обработчики ПКО

15.10.24

Интеграция - Перенос данных 1C

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

Содержание

  1. Проблема в КД 2
  2. Вводные и решение проблемы
  3. Выводы

 

Я Галина, ведущий разработчик 1С. Работаю в сфере 1С уже 8 лет. Специализируюсь на 1С:ЗУП, а также смежных программных продуктах и задачах. Прошла путь от фирмы-франчайзи до инхаус и аутсорсинговой компании. Несмотря на существенный опыт работы с 1С в целом,  и с КД 2 в частности, до сих пор остаются вопросы. Мир 1С не перестает меня удивлять.

 

Проблема в КД 2

Есть две базы с разными конфигурациями 1С, между ними реализована синхронизация. В основе типовые правила обмена, но они доработаны под нужды компании — все работает хорошо. Задача: внести небольшое изменение в обмен, а именно добавить к нему реквизит документа, который уже участвует в синхронизации.

Казалось бы, задача простая и у специалиста с опытом работы КД не должно быть проблем. И вот тут произошло неожиданное: у выгружаемого реквизита объекта заполнялись только поля поиска. Нормально обрабатываться и заполняться новый реквизит, а вернее объект, которым заполняется реквизит, отказывался напрочь!

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

 

Вводные и решение проблемы

Опишу основные вехи по задаче, нюансы в настройках и некоторые предпринятые варианты поиска решения, а также само решение.

Дано: уже существующий обмен данными между двумя 1С-ными конфигурациями, все работает без нареканий.

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

После обновления структуры метаданных конфигураций-участников обмена, делаем все стандартно:

1. Производим синхронизацию свойств Источника и Приемника. В нашем случае это СчетПолучателя с типом СправочникСсылка.БанковскиеСчетаКонтрагентов в Источнике, который должен преобразовываться в СчетКонтрагента с типом СправочникСсылка.БанковскиеСчета в Приемнике. Сопоставляются реквизиты документа, который уже отлично участвует в обмене.

 

 

2. Настраиваем правило конвертации свойств (ПКС). Тут тоже все стандартно

 

3. Создаем новое правило конвертации объектов (ПКО) в поле Правило, чтобы прописать условия поиска и создания объектов в базе-приемнике для нашего реквизита документа.

 

4. Настраиваем ПКО таким образом, чтобы сопоставлять объекты только по полям поиска, иметь возможность перезаполнять объекты, создавать новые объекты и автоматически генерировать код, потому что в базе-источнике код не заполняется, а в Приемнике он участвует.

 

 

На этом настройку ПКО завершаем.

5. Теперь строка с сопоставлением реквизитов Источника и Приемника нашего документа выглядит так:

 

 

6. Надо донастроить сопоставление наших справочников, для этого находим их в папке Справочники списка ПКО. Строка создалась.

 

 

7. Выполняем сопоставление реквизитов объектов Приемника и Источника и указываем, что у нас будет 3 поля поиска. Для Банка и Владельца у нас уже имеются подходящие ПКО.

 

 

8. Все готово. На всякий случай проверим настройки нашего основного объекта - документа. Флажок «Не выгружать объекты свойств Источника по ссылкам» снят.

 

9. Приступаем к тестам, получаем неудовлетворительный результат. Реквизит документа заполнился, но с ним что-то не так:

 

Открываем объект Счета контрагента, и видим, что он совсем плохо заполнился:

 

 

Напомню, что у нас были сопоставлены реквизиты: Банк, Владелец/Контрагент, Номер счета, Пометка удаления и Наименование. В результате видим, что наименование не заполнилось, а вот поля поиска заполнились отлично. Не заполнились и другие обязательные поля, но мы их не прописывали. Необходимо указать их заполнение.

 

10. Возвращаемся к настройке нашей ПКО «БанковскиеСчета_Контрагентов». Пропишем автозаполнение обязательных полей в обработчике «После загрузки» (выполняется до записи объекта в БД).

 

 

11. Тестируем повторно и обнаруживаем, что результат не изменился. Вызывает недоумение? Несомненно.

12. Перебрав различные варианты, покопавшись отладчиком и в настройках в Конвертации данных (КД), возник вывод: при загрузке в Приемнике настроенное ПКО «БанковскиеСчета_Контрагентов» при заполнении объекта реквизита передаваемого документа почему-то не применяется. В отладке в обработчиках загрузки нового объекта Счет контрагента почему-то ИмяПКО = "".

Почему же объект создается? Тут отрабатывают поля поиска и заполняются только они, именно поэтому хоть и сопоставленное, но не включенное в список полей поиска, поле Наименование не заполняется. С такой ситуацией столкнулась впервые, хоть и есть опыт работы с КД 2. Отмечу, что настройка правил выгрузки (ПВД) для данного случая тоже оказалась неэффективной. Смотрим почему же ПКО не применяется, если оно в явном виде указано? В файле выгрузки имеем:

 

 

В подчеркнутом месте между >< должно быть прописано «ИмяПКО="БанковскиеСчета_Контрагентов"»., а у нас почему-то это не прописано…

Изучив разные источники, решила попробовать вот такую строчку прописать в ПКО:

 

 

Описание об этом параметре в справке вот такое: «ТолькоПолучитьУзелСсылки - Если Истина, то объект не выгружается - лишь формируется узел ссылки. В списке выгруженных – объект ищется.» Что это конкретно означает и почему такая проблема возникла именно на указанном ПКО? Кроме того, в справке в явном виде не указано значение данного параметра по умолчанию. Видимо в моем случае значение параметра принимало значение ТолькоПолучитьУзелСсылки = Истина.

Попробую интерпретировать этот параметр на основе рассматриваемого примера. Если в момент выгрузки документа в свойстве этого документа встретилась ссылка на элемент справочника, то если ТолькоПолучитьУзелСсылки = Ложь, этот элемент справочника также будет выгружен согласно соответствующему ПКО “по ссылке”, а в свойстве документа будет указан узел ссылки на данный элемент справочника. В процессе загрузки документ и элемент справочника будут загружены полностью, а также за счет узла ссылки на элемент справочника, ссылка из документа на него будет сохранена. Если же в ПКО для справочника в обработчике «Перед выгрузкой» прописано ТолькоПолучитьУзелСсылки = Истина, то этот элемент не будет выгружен целиком, несмотря на другие настройки и обработчики, будет выгружен только узел ссылки. При выполнении загрузки, если данный элемент справочника уже присутствует в базе-приемнике и будет найден, то в свойстве документа заполнится ссылка на найденный объект, а если соответствующий элемент справочника не будет найден, то будет создан новый пустой элемент справочника без выполнения обработчиков ПКО, в котором будет только та информация, которая была в узле ссылки, то есть поля поиска.

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

 

14. Тестируем снова. Счет контрагента создался и корректно заполнился:

 

 

Даже обработчики «После загрузки» отработали. Красота!

 

 

Выводы

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

ТолькоПолучитьУзелСсылки = Ложь;

Это решение помогло решить мою задачу. Надеюсь, что оно пригодится и вам.

 

Автор: Галина Б., ведущий разработчик 1С.

См. также

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    141458    798    297    

419

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    166418    332    277    

373

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    23984    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    51175    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    36568    94    66    

89

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    171154    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    186854    589    509    

526

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    80629    312    250    

264
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1747 16.10.24 00:12 Сейчас в теме
https://infostart.ru/1c/tools/103008/
Я использую свою доработку , чтобы быстро решать задачи по Кд2

2. В Кд2 некоторые задачи можно решать разными способами.

3. Вы не прояснили что происходит в отладчике при загрузке выгруженного xml. Вы анализируете только выгруженный xml и оторванно сразу результат загрузки .

4. Часть обязательных полей надо заполнять не После загрузки , а при выгрузке.

5. 8 лет работать в одной компании ? ! Не знаю, Галина , нюансов, но надеюсь зарплата у вас растет. Для счастья ее иногда не хватает....

6. Надо тесты делать для нового объекта (ссылки еще нет) и отдельно для уже записанного объекта, но с некорректными полями. Это два разных теста. У вас в статье только один первый второй тест.

7. Не уверен, что проблема у вас решается именно таким образом. Я подумаю на досуге, потестю, и дам обратку.
4. RustIG 1747 22.10.24 10:27 Сейчас в теме
(1)
Надо тесты делать для нового объекта (ссылки еще нет) и отдельно для уже записанного объекта, но с некорректными полями. Это два разных теста. У вас в статье только один первый второй тест.


у вас тест только "второго" типа - когда объект уже записан в Приемнике.
и вы пытаетесь его перезаписать.... пишу для тех , кто поймет...
2. Vasvas05 27 20.10.24 01:10 Сейчас в теме
При онлайн обмене БСП всегда так работало для уменьшения передаваемых данных, надо вроде при выгрузке значения написать ВыгрузитьОбъект = Истина; и будет счастье
тут это описано курс по КД2
PROSTO-1C; +1 Ответить
5. RustIG 1747 22.10.24 10:34 Сейчас в теме
(2) в том-то и дело, что в описании задачи не было указано, что используется он-лайн обмен - то есть напрямую через ком-соединение с отсутствием промежуточного файла xml.
И да, в ПКО есть отдельная вкладка "Он-лайн обмен" для указания параметра "Выгружать объект полностью (при наличии на него ссылки)".

Если обмен через промежуточный файл xml - то за подобную задачу отвечают параметры "Использовать быстрый поиск объекта при выгрузке и загрузке" - на уровне ПКС банк. счета - я бы на месте автора статьи отключил бы этот параметр - а также параметр "Не выгружать объекты свойств по ссылкам" - на уровне ПКО документа - у автора с этим параметром все в порядке.

При выгрузке в правилах ПКС на уровне каждого обязательного реквизита можно указать так:
например для Валюты:
Значение = "Руб.";

и т.д.

Не понятен код Если Не ОбъектНайден Тогда Объект.Валютный = Ложь

Собственно, это и есть моя "обратка".
3. RustIG 1747 22.10.24 09:31 Сейчас в теме
Прошла путь от фирмы-франчайзи до инхаус и аутсорсинговой компании.

беру обратно свои слова
8 лет работать в одной компании ? !
6. RustIG 1747 22.10.24 10:51 Сейчас в теме
ТолькоПолучитьУзелСсылки - это всего лишь Параметр.

Обычно параметры используют, чтобы разделить поток выгружаемых данных на два потока - накладывается некое условие на данные и для определенных условий мы задаем параметр, для остальных условий параметр имеет другое значение... пишу для тех, кто поймет...

Исходя из этого, делать для ПКС один параметр - это значит , что где-то на верхнем уровне задан другой параметр, который не позволяет прописывать в xml необходимые узлы объекта. В отладчике при выгрузке можно найти место в коде (локализовать проблему), где явно задано условие, когда мы прописываем узлы в xml...
Прикрепленные файлы:
Оставьте свое сообщение