Имя: Пароль:
1C
1С v8
КД2. Указать документ основания в базе приемнике.
,
0 KazSever
 
06.10.21
20:01
Коллеги, добрый всем вечер.
Такая ситуация: из одного документа, при выгрузке по правилам обмена КД2, создаются два документа. Как указать в одном из них, что первый является документом основания второго?
1 Жан Пердежон
 
06.10.21
20:11
В реквизит второго записать ссылку на первый
2 KazSever
 
06.10.21
20:14
(1)А как ее получить?
3 серый КТУЛХУ
 
06.10.21
20:57
(2): судя по вашему вопросу - никак.
4 GANR
 
06.10.21
21:16
(0) 1 документу-основанию соответствует 1 документ-потомок? Если да, то хэш-функцией на основании ГУИД-а документа из источника сгенерировать ГУИД документа основания. Если же нет, то это не к форуму вопрос уже.
5 KazSever
 
06.10.21
21:38
(4) Вот, о чем я говорю
https://ibb.co/CWZKrw3
6 vde69
 
06.10.21
21:53
ВыгрузитьПоПравилу

и в параметрах передаешь ключ на первый
7 KazSever
 
06.10.21
21:55
(6) А в обработчике каком событии это сделать? Перед выгрузкой?
8 vde69
 
06.10.21
22:01
(7) перед выгрузкой ОБЪЕКТА.

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

хотя можно передать и "по ссылке" но это не очень красиво будет
9 KazSever
 
06.10.21
22:04
(8) Спасибо, буду пробовать!
10 hhhh
 
06.10.21
22:50
что-то вы напугали парня. Просто создать 2 правила, а в ПКС ДокументОснование первого правила задать Значение = Источник.Ссылка; и указать там второе правило.
11 KazSever
 
07.10.21
12:00
В общем нашел следующий выход из ситуации - в обработчике события ПКО "после загрузки" программно создаю подчиненный документ и тут же указывают в нем нужный документ основания (так же и заполняю нужные реквизиты). Конечно вопрос о дублях возникает, но думаю организовать поиск по коду и дате документа не составит труда.

НовыйДок = Документы.эл_ПоступлениеЗерна.СоздатьДокумент();

НовыйДок.Номер = Объект.Номер;
НовыйДок.Дата  = Объект.Дата;
НовыйДок.ДокументОснование = Объект.Ссылка;

НовыйДок.Записать();

Всем спасибо за помощь, думаю вопрос закрыт.
12 vde69
 
07.10.21
20:24
до меня дошел самый простой способ

в ПВД делаем выгрузку только для вторичного(подчиненного) документа, все штатно
в ПКС у этого документа (поле "ДокументОснование") указываем указываем
Значение = Источник.Ссылка
и в свойствах указываем на ПКО родителя
у Родителя указываем "всегда выгружать обьект"
13 серый КТУЛХУ
 
08.10.21
12:54
(12): ха, при выгрузке данных создается подчиненный, в его реквизит суется ссылка на документ-источник - и уже по значению этого реквизита по пко он же выгоняется туда же (в выгрузку) уже по-другому?..
14 vde69
 
08.10.21
21:20
(13) да именно так.

единственный минус системы - всегда будет создаватся два документа с одним гуидом, но это не смертельно по сколько типы (и таблицы) разные
15 Naumov
 
09.10.21
01:15
(14) Беда начинается, когда эти два документа оказываются в одном журнале документов
16 серый КТУЛХУ
 
09.10.21
01:55
(15): а развернуть этот комментарий - можно?
(заранее благодарен)
17 acanta
 
09.10.21
06:28
(16) вероятно, что-то вроде попытки вставки не уникального значения в уникальный индекс
18 hhhh
 
09.10.21
08:30
(14) не создается там с одинаковым гуидом. КД2 не совсем тупая. Надо просто в правиле убрать поиск по уникальному идентификатору. И оставить поиск по номеру и дате.
19 vde69
 
09.10.21
13:31
(18) да можно и с разными гуидами создавать, и если уж делать хорошо - гуид перегенерить и записать в регистр соответствий и поиск делать по гуиду через регистр.

(15) в (12) я написал в пол девятого вечера по памяти без живого примера, но практически без кода, одними галочками...
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.