Отмена загрузки объекта

1. artemns 29.08.17 12:39 Сейчас в теме
Добрый день! Вопрос заключается в следующем. Из одной БД в другую по правилам обмена выгружается "Заказ покупателя". В базе приемнике в обработчике "после загрузки" проверяется некоторое условие, которое отменяет загрузку этого "заказа". Возможно ли с отменой загрузки "Заказа" отменить загрузку "Контрагента", который указан в этом заказе. Заранее благодарен.
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
11. vlasin 03.10.17 18:04 Сейчас в теме
(1), я бы попробовал следующее:
1. Не выгружать Контрагента через ПКС документа, а в событии После выгрузки "выгрузить по правилу" Контрагента. При этом в документе создать какой то служебный параметр и заполнить его, например, Уникальным идентификатором. Значение этого параметра передавать и в ПКО Контрагента. По этому параметру при загрузке можно будет установить связь контрагента и документа.
2. В ПКО Контрагента должен быть установлен флаг Не создавать новый если не найден. Обеспечить выгрузку параметра, переданного из ПКО документа.
3. При успешной проверке условия загрузки документа создать в общей структуре Параметры, например, Соответствие. Заполнять Соответствие как Ключ - Уникальный идентификатор из параметров объекта, Значение - ссылка на загруженный документ.
4. В событии Поля поиска ПКО Контрагента проверять Соответствие. Если Уникальный идентификатор из параметров объекта Контрагента там есть ,то устанавливать НеСоздаватьОбъектЕслиНеНайден = Ложь. В событии После загрузки Контрагента из соответствия получать ссылку на документ, получать объект документа, дозаполнять реквизит документа загруженным Контрагентом.

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

В моей задаче из одной базы делалась выгрузка, десяток других баз обращались к единому файлу выгрузки и забирали только свои документы и необходимые для этих документов элементы справочников. Это было проще - уже на этапе начала загрузки можно было определить условия загрузки и грузить только необходимое. Повторного получения объектов и дозаполнения реквизитов не требовалось.
+
2. user623969_dusa 29.08.17 12:45 Сейчас в теме
сделай выгрузку по ссылке - первым заказ - тогда если не будет выгружен заказ то не выгрузится и контрагент - теоретически

я подобное делал еще на примере единицы измерения - обработчик ПКО после загрузки - проверяй свой реквизит если его нет то отказывай в загрузке
//если нет владельца то и единицу загружать не надо
Если Объект.Владелец.ПолучитьОбъект() = Неопределено Тогда
Отказ = Истина;
КонецЕсли;
РАБОТАЕТ
+
5. artemns 29.08.17 12:55 Сейчас в теме
(2)это все должно происходить при загрузке. при выгрузке нет никаких условий - все выгружается
+
6. user623969_dusa 29.08.17 12:56 Сейчас в теме
(5) я те про загрузку и пишу
+
9. artemns 29.08.17 14:55 Сейчас в теме
(2)
сделай выгрузку по ссылке

если можно, то поподробнее можно разъяснить. я только осваиваю КД
+
10. herfis 498 29.08.17 15:08 Сейчас в теме
(9) Выгрузка по ссылкам в КД производится по умолчанию. Т.е. если ты используешь только ПВД на документы, то выгрузятся только те элементы справочников, которые используются в выгружаемых документах (если в ПКО специально не задано другое поведение). Т.е. речь про то же самое - перенос проверки в источник.
+
3. herfis 498 29.08.17 12:51 Сейчас в теме
(1) Не представляю, как это можно сделать. Учитывая что загрузка заказа будет производиться после загрузки контрагентов :) Т.е. поздно уже в этот момент отменять.
+
4. artemns 29.08.17 12:54 Сейчас в теме
7. herfis 498 29.08.17 12:56 Сейчас в теме
(4) Если "нужно", тогда обеспечь возможность проверки условия в источнике. Если там нет ключевых данных - "нужно сделать чтобы были".
+
8. user623969_dusa 29.08.17 12:59 Сейчас в теме
(7) насколько я знаю параметр между правилами не передать, можно проверить выгружен уже объект или нет и запретить выгрузку без условий, только по ссылке должно работать)
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот