|
Конвертация 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)Все сработало!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |