Отмена загрузки объекта
Добрый день! Вопрос заключается в следующем. Из одной БД в другую по правилам обмена выгружается "Заказ покупателя". В базе приемнике в обработчике "после загрузки" проверяется некоторое условие, которое отменяет загрузку этого "заказа". Возможно ли с отменой загрузки "Заказа" отменить загрузку "Контрагента", который указан в этом заказе. Заранее благодарен.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1), я бы попробовал следующее:
1. Не выгружать Контрагента через ПКС документа, а в событии После выгрузки "выгрузить по правилу" Контрагента. При этом в документе создать какой то служебный параметр и заполнить его, например, Уникальным идентификатором. Значение этого параметра передавать и в ПКО Контрагента. По этому параметру при загрузке можно будет установить связь контрагента и документа.
2. В ПКО Контрагента должен быть установлен флаг Не создавать новый если не найден. Обеспечить выгрузку параметра, переданного из ПКО документа.
3. При успешной проверке условия загрузки документа создать в общей структуре Параметры, например, Соответствие. Заполнять Соответствие как Ключ - Уникальный идентификатор из параметров объекта, Значение - ссылка на загруженный документ.
4. В событии Поля поиска ПКО Контрагента проверять Соответствие. Если Уникальный идентификатор из параметров объекта Контрагента там есть ,то устанавливать НеСоздаватьОбъектЕслиНеНайден = Ложь. В событии После загрузки Контрагента из соответствия получать ссылку на документ, получать объект документа, дозаполнять реквизит документа загруженным Контрагентом.
Возможно, схему можно и упростить. Это так, первый взгляд. Но пока не приходит на ум вариант, где не надо повторно получать объект документа.
В моей задаче из одной базы делалась выгрузка, десяток других баз обращались к единому файлу выгрузки и забирали только свои документы и необходимые для этих документов элементы справочников. Это было проще - уже на этапе начала загрузки можно было определить условия загрузки и грузить только необходимое. Повторного получения объектов и дозаполнения реквизитов не требовалось.
1. Не выгружать Контрагента через ПКС документа, а в событии После выгрузки "выгрузить по правилу" Контрагента. При этом в документе создать какой то служебный параметр и заполнить его, например, Уникальным идентификатором. Значение этого параметра передавать и в ПКО Контрагента. По этому параметру при загрузке можно будет установить связь контрагента и документа.
2. В ПКО Контрагента должен быть установлен флаг Не создавать новый если не найден. Обеспечить выгрузку параметра, переданного из ПКО документа.
3. При успешной проверке условия загрузки документа создать в общей структуре Параметры, например, Соответствие. Заполнять Соответствие как Ключ - Уникальный идентификатор из параметров объекта, Значение - ссылка на загруженный документ.
4. В событии Поля поиска ПКО Контрагента проверять Соответствие. Если Уникальный идентификатор из параметров объекта Контрагента там есть ,то устанавливать НеСоздаватьОбъектЕслиНеНайден = Ложь. В событии После загрузки Контрагента из соответствия получать ссылку на документ, получать объект документа, дозаполнять реквизит документа загруженным Контрагентом.
Возможно, схему можно и упростить. Это так, первый взгляд. Но пока не приходит на ум вариант, где не надо повторно получать объект документа.
В моей задаче из одной базы делалась выгрузка, десяток других баз обращались к единому файлу выгрузки и забирали только свои документы и необходимые для этих документов элементы справочников. Это было проще - уже на этапе начала загрузки можно было определить условия загрузки и грузить только необходимое. Повторного получения объектов и дозаполнения реквизитов не требовалось.
сделай выгрузку по ссылке - первым заказ - тогда если не будет выгружен заказ то не выгрузится и контрагент - теоретически
я подобное делал еще на примере единицы измерения - обработчик ПКО после загрузки - проверяй свой реквизит если его нет то отказывай в загрузке
//если нет владельца то и единицу загружать не надо
Если Объект.Владелец.ПолучитьОбъект() = Неопределено Тогда
Отказ = Истина;
КонецЕсли;
РАБОТАЕТ
я подобное делал еще на примере единицы измерения - обработчик ПКО после загрузки - проверяй свой реквизит если его нет то отказывай в загрузке
//если нет владельца то и единицу загружать не надо
Если Объект.Владелец.ПолучитьОбъект() = Неопределено Тогда
Отказ = Истина;
КонецЕсли;
РАБОТАЕТ
(9) Выгрузка по ссылкам в КД производится по умолчанию. Т.е. если ты используешь только ПВД на документы, то выгрузятся только те элементы справочников, которые используются в выгружаемых документах (если в ПКО специально не задано другое поведение). Т.е. речь про то же самое - перенос проверки в источник.
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот