Имя: Пароль:
1C
1С v8
КД 2 выгружать произвольную структуру
0 breezee
 
19.12.17
17:19
Добрый день! У меня есть выгрузка из 8 в 7. В выгрузке, в зависимости от контрагента и договора контрагента надо подставлять контрагенту разные ИНН.
То есть если у нас есть контрагент "Ромашка" с догвором "Договор1" ИНН ставить "888".
Если контрагент "Ромашка" с договором "Договоро2" ИНН ставить "666".
Я знаю, что есть волшебная функция "ВыгрузитьПоПравилу" но есть проблема.
Эта функция не может вернуть выгружаемую структуру в объект выгрузки(документ, откуда идет выгрузка), а подмена происходит непосердственно при выгрузке документа.
Как мне выгружать не ссылку на контрагента, а произвольную структуру? Я выгружаю только ИНН, ссылка мне не нужна совсем, но как выгрузить структуру не понимаю.
Подскажите, пожалуйста.
1 Вафель
 
19.12.17
17:21
выгружать параметры
2 breezee
 
19.12.17
17:23
(1) Это их еще загружать надо, я хз как это в семерке делать. Можно без этого?
3 Вафель
 
19.12.17
17:25
те тебе нужно разные пары К/Д выгружать в разных контрагентов.
Тебе нужно сделать правило: источник пустой (из вход. данных) приемник "Контрагент"  и при выгрузке формировать Исхходящие данные
4 vde69
 
модератор
19.12.17
17:28
(2) ты делай конвертацию при выгрузки в восьмерке, а в семерке у тебя все будет красиво
5 Ёпрст
 
19.12.17
17:37
(0) дык выгружай сразу как надо.
6 Byasha
 
19.12.17
17:40
(0) В обработчике "При выгрузке" у ПКС добавь
"Значение = <Нужный ИНН>". Выгрузится не ИНН контрагента а то что ты хочешь
7 Вафель
 
19.12.17
17:54
(6) так зависит не от контрагента, а от договора
8 Ёпрст
 
19.12.17
17:56
в пкс у ИНН в Перед выгрузкой воткни значение = нужный инн в зависимости от договора. усё.
9 vde69
 
модератор
19.12.17
17:57
(7) а какая разница?

где то при загрузке правил пишем

мСоотв = новый соответствие()
мСоотв.добавить(дог1,Инн222)

параметры.добавить("СоответсвиеИННДоговор", мСоответсвие)


далее ищешь по этому и все...
10 mistеr
 
19.12.17
18:11
И я попробую. В обработчике ПередВыгрузкой документа определяешь ИНН и пихаешь в ИсходящиеДанные. В ПКС для ИНН ПКО контрагента подставляешь ИНН из входящих данных, если он там есть. Галку "получить из входящих" не ставишь, это позволит выгружать контрагента как обычно, со своим ИНН.
11 breezee
 
20.12.17
04:55
(9) (8) Так я примерно так и сделал, добавил таблицу значений в параметры, заполняю её а потом в перед выгрузкой для ИНН пишу
СтрокаКонтрагента = Параметры.ТаблицаКонтрагенты2.Найти(Источник.Ссылка, "Контрагент");
Если СтрокаКонтрагента = Неопределено Тогда
    Сообщить("Критическая ошибка! Не найден ИНН для контрагента в таблице параметров в правилах выгрузки. Контр = " +Источник.Ссылка);
Иначе
    Значение = СтрокаКонтрагента.ИНН;    
КонецЕсли;    

Однако, на уровне подстановки ИНН я не могу уже видеть договор, то есть если у меня в одном документе будет 2 договора для одного контрагента, а такое может быть, так как я загружаю в табличную часть в приемнике контрагентов и договоров - я могу найти не те данные. А исходящие данные -  это тоже типо параметров общих? Есть параметры, которые я могу передать ввместе с конкретной ссылкой?
12 breezee
 
20.12.17
05:34
(8) Так я там не вижу договор уже, только ссылку на контрагента
13 mistеr
 
20.12.17
08:21
(12) Тогда вопрос - а на каком этапе ты договор видишь?
14 PCcomCat
 
20.12.17
08:40
(0) Выгружай только договор, а у договора при выгрузке владельца (Контрагента) посылай исходящие данные, в которых записывай договор. У контрагента лови входящие данные и анализируй, ставь нужное. А ссылка на контрагента меняется, надеюсь? Два ИНН - два контрагента? Коды контрагентов?
15 vde69
 
20.12.17
09:03
(14) +
Сделай ПКО где
Источник - Договор
Приемник - Контрагент

в нем в обработчике ПослеВыгрузкой пишешь

ВыгрузитьПоПравилу(Источник,"Договор")
16 breezee
 
20.12.17
13:09
(13) Договор вижу на этапе выгрузки самого документа, в котором указан контрагент и договоров.
(14)Спасибо за идею, но у контрагента может быть несколько договоров при выгрузке двух договоров по одному контрагенту у этого контрагента может криво проставиться ИНН второй раз. Два ИНН - 2 контрагента в источнике. 2 ИНН - неизвестно сколько контргантов в приемнике, такая связь.
Вообще звучит хорошо, спасибо! Попробую так сделать. Получу договор при выгрузке, из договра получу нужное инн и через исходящие данные в ВыгрузитьПоПравилу передам ИНН для контрагента. Вот только есть проблема. При выгрузке этого документа, откуда тащу договор я произвольным алгоритмом заполняю контрагента и если я использую "ВыгрузитьПоПравилу" контрагент может и не встать в выгрузку, если я не укажу его на прямую, вроде...
17 PCcomCat
 
20.12.17
16:09
(16) Создай правило, где превращай договор в контрагента, и укажи вместо источником договор, приемником контрагента и правило твое по превращению. Опять же исходящие и входящие данные используй.