Имя: Пароль:
1C
1С v8
Конвертация данных, отказ от создания объекта
,
0 gr0ck
 
08.12.14
14:36
Подскажите, не могу разобраться.

Гружу из 7.7 в 8 контрагентов. Беру обороты по счетам и выгружаю субконто контрагентов.
При этом есть условие, что если по инн/кпп контрагентов больше 1, или нет совсем, то их создавать не нужно.

В ПКО после загрузки проверяю ОбъектНайден и юрфизлицо, и делаю отказ. Все нормально, контрагент не грузится. Но с контрагентом подтягиваются договора. Так вот договора все равно загружаются, при этом у них владелец "объект не найден"
1 Абыр
 
08.12.14
15:01
добавь в ПКО договора проверку на заполненность владельца и тоже делай отказ
2 Defender aka LINN
 
08.12.14
15:10
(1) Если ты думаешь, что "битая" ссылка - пустая, то у меня для тебя плохая новость.
3 gr0ck
 
08.12.14
15:13
Вообще там Владелец заполнен, Объект не найден это не пустая ссылка, так что значение заполнено не прокатит. Я сделал Найти(Владелец,""Объект не найден") > 0 Тогда Отказ Истина. И в общем то в условие заходит, и отказ истину ставит. Такое ощущение это правило срабатывает, но договор как-то еще записывается. При чем там только заполнены у договора реквизиты по которым он ищется, остальные пустые.
4 Йохохо
 
08.12.14
15:18
(3) попробуй ОбъектМодифицирован = Ложь добавить
5 gr0ck
 
08.12.14
15:43
Нет, все равно не помогает
6 Ymryn
 
08.12.14
15:51
Попробуй через ПолучитьОбъект. Вроде должен возвращать Неопредлено для битой ссылки.
7 J_B
 
08.12.14
15:58
А может договора грузятся отдельным правилом выгрузки и поэтому уходят в получатель?
8 DrZombi
 
гуру
08.12.14
15:58
(0)Держи


Функция ОбъектБДСуществует(ТестоваяСсылка) Экспорт

    МД = Метаданные.НайтиПоТипу(ТипЗнч(ТестоваяСсылка));
    ИмяОбъекта = МД.Имя;
    ПолноеИмяОбъекта = МД.ПолноеИмя();

    Запрос = новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
    |   ИСТИНА как НЕЧТО
    |ИЗ
    |   " + ПолноеИмяОбъекта + " КАК " + ИмяОбъекта + "
    |ГДЕ
    |   " + ИмяОбъекта + ".Ссылка = &Cсылка";
    Запрос.УстановитьПараметр("Cсылка", ТестоваяСсылка);
    РезультатЗапроса = Запрос.Выполнить();
    
    Возврат Не РезультатЗапроса.Пустой();

КонецФункции
9 gr0ck
 
08.12.14
16:02
Нашел, сделал так же как написано тут
http://infostart.ru/public/83491/
10 gr0ck
 
08.12.14
16:08
Проблема в том что договор грузится по ссылке, при этом создавать новые или нет у нас в зависимости от того создали(нашли) мы контрагента или нет. И если в настройках не стоит галочки "не создавать новый объект в приемнике если он НЕ найден", то он его создает, и то что мы отказ истину делаем в при зарузке, ему на это наплевать, он его уже создал заполнил реквизиты значениями полей поиска и поместил в тз
11 Йохохо
 
08.12.14
16:13
(10) попробуй в глобальнике еще перехватить док и ОбъектМодифицирован = Ложь
12 Defender aka LINN
 
08.12.14
16:22
(3) Вот открою ООО "Объект не найден", число ради поржать и насладиться запахом пригорелых пуканов одинэснегов :)
Ну и еще такие варианты возможны: ![] http://content.screencast.com/users/DefenderLINN/folders/Jing/media/cc320c0e-4c7d-4bd5-8c9b-0e488fa3a902/2014-12-08_1618.png
13 gr0ck
 
08.12.14
17:28
(12) Помню рарус это очень любил, и при обновлении платформы у многих одинэснегов появилось много работы
14 gr0ck
 
08.12.14
17:29
(12) Это разовый перенос, перенести данные, проверить, и дальше работайте в новой базе. При этом все должно еще позавчера быть готово, времени на красивые решения нет
15 acanta
 
08.12.14
17:32
(14) а раз нет времени зачем заниматься любовь с конвертацией? Имхо это инструмент многоразового использования..
Сохрани все в мхл и оттуда загрузи обработкой как надо, 20 строк кода и никаких пко..
Независимо от того, куда вы едете — это в гору и против ветра!