Имя: Пароль:
1C
1С v8
КД 7.7 - 8.2 передача параметров
,
0 byaka
 
18.12.12
10:36
В 1С 7.7 был создан аналог регистра сведений 1С8 СоответствиеОбъектовДляОбмена для складов, номенклатуры, контрагентов. Для контрагентов хранятся соответствия многие к одному: в обменной базе много контрагентов, в текущей им соответствуют один. Теперь переносим данные справочника в регистр сведений в 1С8. Собственную ссылку выгружаю так:

//собственная ссылка
Если сокрлп(Источник.ИмяТипаПриемника) = "Справочник.Контрагенты" Тогда
ПравилаДляСсылки = "Контрагенты";
ИначеЕсли сокрлп(Источник.ИмяТипаПриемника) = "Справочник.Номенклатура" Тогда
ПравилаДляСсылки = "Номенклатура";
ИначеЕсли сокрлп(Источник.ИмяТипаПриемника) = "Справочник.МестаХранения" Тогда
ПравилаДляСсылки = "Склады";
КонецЕсли;

УзелПараметра = СоздатьУзел("ЗначениеПараметра");
узелСсылки = ВыгрузитьПоПравилу(Источник.СобственнаяСсылка,,,,ПравилаДляСсылки);

УстановитьАтрибут(УзелПараметра, "Имя", "СобственнаяСсылка");
ДобавитьПодчиненный(УзелПараметра, узелСсылки);
ДобавитьПодчиненный(Приемник, УзелПараметра);

В результате ДобавитьПодчиненный(УзелПараметра, узелСсылки); работает через раз - то есть узел, то нет. И косячит именно при соответствии многие к одному: есть несколько строк соответствий, а собственная ссылка выгружается только для последней. Никто не может подсказать, в чем проблема?
1 byaka
 
18.12.12
11:12
up
2 byaka
 
18.12.12
11:24
может я непонятно сформулировала? или никто не сталкивался?(
3 Lokli
 
18.12.12
11:32
Фотки нет, не взлетит. :))
А если серьёзно, немного не понятно что и куда ты переносишь. Не понятно, перенос тебе нужен один в один или различается структура данных или различаются сами данные. Опять же не могу вкурить, а зачем тебе переносить СоответствиеОбъектовДляОбмена. Ведь информация в нём актуальна только для одной базы.
4 byaka
 
18.12.12
11:37
Для обмена между двумя базами в 1С 7.7 в базе-приемнике был сделан справочник СоответствиеОбъектовДляОбмена. Сейчас внедряем 1С 8. И я хочу перенести данные этого справочника в регистр сведений СоответствиеОбъектовДляОбмена. Перенос один в один. Не работает для соответствия многие к одному (почему, совсем не ясно, ссылка да ссылка, но узел не создается).
5 Aprobator
 
18.12.12
11:41
а нафига через передачу параметра все это делать?
6 Lokli
 
18.12.12
11:42
(4) Данный регистр (в типовом варианте) имеет ключевые поля, записи по которым дублироваться не могут. Вы уверены, что у вас не происходит дублирования?
7 byaka
 
18.12.12
11:45
(5) т.к. тип собственной ссылки разный может быть, поэтому заранее неизвестно, какие правила использовать.
(6) да, вручную получается заполнить.
8 Aprobator
 
18.12.12
11:47
(7) для этого в ПКС ПередВыгрузкой есть ИмяПКО.
9 Lokli
 
18.12.12
11:48
Попробуйте делать не через параметр. Вы всё равно проверяете тип источника, так вместо присвоения текстовой переменной, вызывайте соответствующее ПКО.
10 Aprobator
 
18.12.12
11:49

Если сокрлп(Источник.ИмяТипаПриемника) = "Справочник.Контрагенты" Тогда
ИмяПКО = "Контрагенты";
ИначеЕсли сокрлп(Источник.ИмяТипаПриемника) = "Справочник.Номенклатура" Тогда
ИмяПКО = "Номенклатура";
ИначеЕсли сокрлп(Источник.ИмяТипаПриемника) = "Справочник.МестаХранения" Тогда
ИмяПКО = "Склады";
КонецЕсли;
11 byaka
 
18.12.12
12:14
Все перенеслось) Спасибо огромное, вы меня спасли от огромных временных затрат)
12 Lokli
 
18.12.12
12:16
(11) А фотка где? :))
13 byaka
 
18.12.12
12:17
ой не до фотки, в другой раз) извиняйте)
14 Aprobator
 
18.12.12
12:18