Имя: Пароль:
1C
1С v8
Конвертация 2.1 Передать данные из Источника в Приемник.
,
0 80ksa
 
08.04.15
10:02
Друзья!

Конвертация 2.1 Передать данные из Источника в Приемник.

Есть две конфигурации на платформе 1С:8.2

нужно при выгрузке объекта из базы-источника задать некоторые параметры которые потом обработать в базе-приемнике при загрузке этого объекта.
ВходяшиеДанные, ИсходящиеДанные мне хорошо знакомы - они передают данные в рамках одной базы (источника) между ПВД, ПКО, ПКС

Мне же нужно передать данные в базу-приемник.
Нашел некий параметр ПараметрыОбъекта в ПКО в обработчике После загрузки. О том написано, что это есть Соответствие, в котором хранятся дополнительные параметры для объекта, переданные из источника в приемник.
ВОПРОС: А где из заполнить в Источнике? никак не могу найти.

Заранее благодарен!
1 vicof
 
08.04.15
10:07
В пкс говоришь передавать данные в параметр.
2 fisher
 
08.04.15
10:16
Но на практике подобной необходимости я не встречал ни разу. Хотя работать приходилось сплошь с нетиповыми правилами.
3 fisher
 
08.04.15
10:20
Это требуется только в случаях, когда конвертация зависит от данных, которые отсутствуют в базе-источнике. Во всех остальных - ошибка проектирования обмена.
4 80ksa
 
08.04.15
10:34
У меня в Источнике С/ф выданный, ее выгружаю в с/ф выданный Приемника.
В ПВД с/ф выданный ПередВыгрузкой пишу такой текст

ВыгрузитьПоПравилу(Объект,,,,"ОтражениеНачисленияНДС");

т.е. использую этот объект для загрузки еще одного документа. Все проходит отлично. Но теперь мне нужно для загруженного документа С/ф выданный в Приемнике задать реквизит ДокументОснование и в нем указать загруженный "ОтражениеРеализацииНДС"

КАК бы вы сделали такую задачу в общем случае?
5 fisher
 
08.04.15
10:44
(4) Я правильно понял, это случай двух документов с перекрестными ссылками? Или связь только через ДокументОснование в с/ф?
6 80ksa
 
08.04.15
10:46
(5) В документе "с/ф выданный" нужно заполнить реквизит ДокументОснование значением "Док.ОтражниеРеализацииНДС"
7 80ksa
 
08.04.15
10:47
так обычно используются два прогона: сначала загружаем два документа, а потом один связываем с другим.
Может кто-то делает по другому?
8 80ksa
 
08.04.15
10:49
я использую один прогон
9 fisher
 
08.04.15
10:49
(6) Тогда примитивно:
ВыгрузитьПоПравилу() не используешь
Просто в ПКС "ДокументОснование" в с/ф прописываешь ПКО для конвертации из с/ф в ОтражениеРеализации
А в ПередВыгрузкой ПКС "ДокументОснование" пишешь
Значение = Источник;
В итоге ОтражениеРеализации будет выгружено по ссылке и ссылка будет заполнена автоматически.
10 80ksa
 
08.04.15
10:52
(9) хорошо, попробую завтра, а то домой пора, уже почти 18:00.
11 fisher
 
08.04.15
10:56
Гы. Значала часовые пояса глянул, потом профиль. Угадал :)
12 fisher
 
08.04.15
10:59
Чорд. В профиле тоже часовой пояс, а не город. Таки Владивосток или нет?
13 80ksa
 
09.04.15
01:25
Небольшой город (Артем) рядом с Владивостоком. Вот я снова на работе. уже 8:25 пора чай заваривать!
14 Franchiser
 
гуру
09.04.15
01:36
В демке есть пример (Перечисление в справочник на этапе загрузки). Смысл в том что можно писать свои узлы в узел, например свойства ПКС или узел ПКО:

После выгрузки:

СтроковоеЗначениеПеречисления = Строка(Источник);

СтроковоеЗначениеПеречисления = СтрЗаменить(СтроковоеЗначениеПеречисления, Символы.НПП, "");
СтроковоеЗначениеПеречисления = СтрЗаменить(СтроковоеЗначениеПеречисления, " ", "");
СтроковоеЗначениеПеречисления = СтрЗаменить(СтроковоеЗначениеПеречисления, "%", "");

ПозицияНДС = Найти(СтроковоеЗначениеПеречисления, "НДС");

ЗначениеСтавки = Число(Сред(СтроковоеЗначениеПеречисления, ПозицияНДС + 3));

УзелСтрока = СоздатьУзел("ДопИнформация");
УстановитьАтрибут(УзелСтрока, "Код", ЗначениеСтавки);
УстановитьАтрибут(УзелСтрока, "Наименование", Строка(Источник));
УстановитьАтрибут(УзелСтрока, "Процент", ЗначениеСтавки);

УзелСтрока.ЗаписатьКонецЭлемента();
УзелСтрока = УзелСтрока.Закрыть();
ДобавитьПодчиненный(Приемник, УзелСтрока);

Перед загрузкой:
Код = "";
Наименование = "";
Процент = "";

НомерПоПорядку = 0;
                            
Пока ФайлОбмена.Прочитать() Цикл
                        
    ИмяУзла = ФайлОбмена.ЛокальноеИмя;
    ТипУзла = ФайлОбмена.ТипУзла;
                                
    Если (ИмяУзла = "ДопИнформация") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда
                                    
        СсылкаНаОбъект = Справочники.СтавкиНДС.НайтиПоРеквизиту("ПроцентСтавки", Число(Процент));
        
        Если СсылкаНаОбъект.Пустая() Тогда
            
            Объект = Справочники.СтавкиНДС.СоздатьЭлемент();
            
        Иначе
            
            Объект = СсылкаНаОбъект.ПолучитьОбъект();
            
        КонецЕсли;
        
        Объект.Код = Код;
        Объект.Наименование = Наименование;
        Объект.ПроцентСтавки = Процент;
        
        Объект.Записать();
                    
        Если НомерПоПорядку <> 0 ТОгда
            ЗагруженныеОбъекты[НомерПоПорядку] = Объект.Ссылка;
        КонецЕсли;
                    
        Прервать;
                                    
    ИначеЕсли ИмяУзла = "ДопИнформация" Тогда
                        
        Код = одАтрибут(ФайлОбмена, одТипСтрока, "Код");
        Наименование = одАтрибут(ФайлОбмена, одТипСтрока, "Наименование");
        Процент = одАтрибут(ФайлОбмена, одТипСтрока, "Процент");
                    
    ИначеЕсли ИмяУзла = "Ссылка" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда
                                    
        НомерПоПорядку = одАтрибут(ФайлОбмена, одТипЧисло, "Нпп");    
                                                        
    КонецЕсли;
                                
КонецЦикла;
15 Franchiser
 
гуру
09.04.15
01:39
а так вариантов масса: можно записать данные в свой узел при выгрузке конфигурации, потом считать при загрузке в параметры и дальше вызвать правила конвертации через пвд и если подумать много других вариантов.
16 Franchiser
 
гуру
09.04.15
01:43
я бы делал как в (9), т.к. самый простой вариант и визуально все настраивается
17 80ksa
 
09.04.15
01:45
(16)да, согласен про дописку в файл я тоже вспомнил, но понимаю что это слишком глубоко, хочется сделать без глубоких раскопок.
18 80ksa
 
09.04.15
02:43
(9)Все сработало!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.