Имя: Пароль:
1C
1С v8
Конвертация данных: Установка основного договора в приемнике, если есть
0 OldmaN2
 
05.10.17
11:53
Всем салют!
Есть задача, на которую пока не нашёл решения:
Рисую правила обмена в КД. Заказчик хочет, чтобы реквизиты договоров в объектах в приемнике (кроме владельца-контрагента) - заполнялись из контрагента (Контрагент.ОсновнойДоговор). А создавать и подставлять договор из данных источника только в том случае, если был создан новый контрагент в процессе конкретного обмена.

Опыта работы в КД маловато, хотелось бы получить совет, как это можно грамотнее реализовать.
1 Йохохо
 
05.10.17
11:56
(0) через план обмена или как?
2 OldmaN2
 
05.10.17
11:56
(1) через универсальную выгрузку.
3 Йохохо
 
05.10.17
11:58
(2) тогда оно само так и сделает, если нет пвд на договоры и стоят галки выгружать подчиненные что ли. Только по второму пункту надо добавить галку не замещать реквизиты
4 Йохохо
 
05.10.17
11:59
с универсальной выгрузкой запутался с подчиненными, в общем оно само
5 OldmaN2
 
05.10.17
12:07
Забыл упомянуть, идентификация происходит только контрагентов по коду (источник=приемник). Идентифицировать договора в нашем случае необходимо как раз через (0)

(3) Как найдёт? К примеру есть документ. Имеет реквизиты контрагент и договор.
Контрагент в приемнике нашелся, а по договору из источника соответствий с приемником по реквизитам поиска нет. Создастся ещё один договор, который подставится в документ.
А мне нужно чтобы в этом случае договор подставился из Контрагент.ОсновнойДоговор и не создавался новый договор. А если контрагент был создан новый, то тогда мы создаем и договор, назначаем основным и затем подставляем в документ. Как то так....
6 Альбатрос
 
05.10.17
12:10
(5) Не передавай договор как реквизит, а запихай его в параметры. В послеЗагрузки проверяй на ЭтоНовый() и подставляй основной если нет или создавай новый договор из параметров.
7 ТогдаКонецЕсли
 
05.10.17
12:11
При выгрузке документа нужно в параметры сохранить данные основного договора контрагента, И если договор не найден, брать оттуда.
8 Йохохо
 
05.10.17
12:20
9 Альбатрос
 
05.10.17
12:22
(8) Будут создаваться лишние договора, что противоречит (0)
10 Йохохо
 
05.10.17
12:28
(9) по первой галке точно не будут, по второй не помню, но скорее нет
11 Ёпрст
 
05.10.17
14:01
(9) не будут
12 OldmaN2
 
05.10.17
15:02
(6) Не могу понять, чего не так делаю.... Отправляется один документ. В нем передаю в параметр договор. В ПКО контрагента отключил реквизит "ОсновнойДоговорКонтрагента".
Контрагент должен записаться новый, следовательно договор создаться не должен.

В отладчике после загрузки проверяю Объект, в нем договора нет, это круто. А вот в ПараметрахОбъекта договор уже сидит, записанный в базу.... как он туда попадает.... Пробовал в ПКО договора ставить "Не создавать новый объект в приемнике, если не найден", тогда договор в параметры не падает, отражается как неопределено.... чего ему надо, интересно?
13 Йохохо
 
05.10.17
15:06
(12) сделай просто. А договор понятно что из дока летит
14 OldmaN2
 
05.10.17
15:19
(13) А разве когда реквизит в параметр передаёшь он всё равно в базу пишется?

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