Имя: Пароль:
1C
1С v8
Конвертация данных: после загрузки объекта нужно записать данные в регистр сведений
,
0 Serdolik55
 
02.12.20
14:03
Коллеги, день добрый!
Стоит такая задача: есть обмен Поступления товаров и услуг между УТ 10.3 и Бух.3.0 .
В Бухгалтерию 3.0 нужно после загрузки объекта в документ Поступление товаров и услуг добавить Дополнительные сведения (Регистр сведений Дополнительные реквизиты и сведения с измерениями Объект, Свойство, Значение).
Эти доп сведения я беру из поступления на стороне Источника, которых нельзя синхронизировать через реквизиты.
Передаю их в параметры при выгрузки и на стороне приемника нужно их как-то в регистр сведений записать.
Понятно, что обработчик После загрузки объекта нельзя использовать, так как объект ещё не в базе данных записан.
Через исходящие данные тоже непонятно как организовать, так как не все измерения мне известны на стороне Источника, известны только Объект и Значение (доп. сведение), а Свойство (это План видов характеристик) -оно известно только на стороне Приемника и непонятно как его запихнуть потом в исходящие данные.
Помогите, может у кого есть мысли разумные
1 Йохохо
 
02.12.20
14:10
"Свойство (это План видов характеристик) -оно известно только на стороне Приемника"
Выражение - Неопределено. Может быть указано произвольное строковое выражение на встроенном языке, результат вычисления которого при загрузке будет присвоен значению свойства. Если Выражение определить в теле обработчика, то дальнейшая обработка ПКС будет прекращена. Данная возможность, используется только если конфигурация-приемник реализована на платформе V8
2 Serdolik55
 
02.12.20
14:17
(1) а как потом обратится к этом на стороне Приемника, чтобы Неопределено преобразовать в ПВХ?
3 Йохохо
 
02.12.20
14:24
(2) результат вычисления которого _при_загрузке_ !!11
4 Йохохо
 
02.12.20
14:25
при загрузке это и есть в приемнике
5 Serdolik55
 
02.12.20
14:33
Ааа, то есть если у меня в ПВХ на стороне приемника это свойство называется "ДатаППС", я так и пишу в исходящих данных?
Пример:
ИсходящиеДанные            = Новый Структура("Объект, Свойство, Значение);
        ИсходящиеДанные.Объект          = Источник.Ссылка;
        ИсходящиеДанные.Свойство        = "ДатаППС";(Это ПВХ на стороне примника)
        ИсходящиеДанные.Значение        = Источник.ДатаППС;
        
        ВыгрузитьПоПравилу( , , ИсходящиеДанные, , "ДополнительныеРеквизитыИСведения");
6 Serdolik55
 
02.12.20
18:44
(4) В итоги данные в регистр загрузил, на свойство я так и не понял как поменять?
Оно пустое загрузилось
7 AneJIbcuH
 
02.12.20
19:36
(6) А ПКС для свойства описано?

"ИсходящиеДанные.Свойство        = "ДатаППС";"

Так может сработать, если ДатаППС - предопределенное значение.
8 Serdolik55
 
02.12.20
22:22
(7) Нет оно не предопределенное, добавленное в режиме предприятия, это типовая Бухгалтерия 3.0.
Вы имеете ввиду ПКС для плана видов характеристик типом которого является Свойство? Если да, то не описывал его, непонятно с чем его сопоставлять, в источнике же его нет.
Только в регистре проставил соответствие, что брать из входящих данных для Объекта, Свойства и Значения (это измерения и ресурс)
На стороне приёмника, если бы можно где было это подловить, то написал бы так ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "ДатаППС")
У меня данные то в регистр пишутся вместе с загрузкой поступления, но колонка Свойство пустая, вопрос как правильно его передать на сторону приемника из источника в исходящих данных? Либо как-то перехватить на стороне Приёмника, только не могу пока понять в каком месте.
9 Serdolik55
 
02.12.20
22:30
Даже пробовал вот так:

ИсходящиеДанные            = Новый Структура("Объект, Свойство, Значение");
ИсходящиеДанные.Объект          = Источник.Ссылка;
ИсходящиеДанные.Свойство        = "ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту(""Имя"",""ДатаППС"")";
ИсходящиеДанные.Значение        = Истина;

ВыгрузитьПоПравилу( , , ИсходящиеДанные, , "ДополнительныеСведения");

На стороне Приемника Объект и Значение в регистре сведений ДополнительныеСведения заполняются, а вот Свойство пустое.

Как его передать правильно?
10 Serdolik55
 
03.12.20
09:45
ауу, народ) Никто не знает?
11 Ёпрст
 
03.12.20
10:22
Само пко ДополнительныеРеквизитыИСведения хоть есть ? чего там понаписал ? Там достаточно оставить пустой источник с галками получить из входящих данных и в приёмнике описать свойства.. усё. В выгрузитьПо Правилу пихать структуру, свой свойство просто строкой, оно само найдет
12 Serdolik55
 
03.12.20
10:37
(11) да, ПКС для регистра сведений есть всё как ты написал. Или ты имеешь ввиду ПКО для Планов видов характеристик ещё?
У меня всё переносит, но свойство не пишется. Напиши пример, как Свойство строкой указать.
Сейчас вот так написано:
ИсходящиеДанные            = Новый Структура("Объект, Свойство, Значение");
ИсходящиеДанные.Объект          = Источник.Ссылка;
ИсходящиеДанные.Свойство        = "ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту(""Имя"",""ДатаППС"")";
ИсходящиеДанные.Значение        = Источник.ДатаППС;

ВыгрузитьПоПравилу( , , ИсходящиеДанные, , "ДополнительныеСведения");
13 Serdolik55
 
03.12.20
15:41
так никто и не знает?
14 welwel
 
03.12.20
15:56
В типовые правила обмена ут10 бп3 смотрели? Емнип там было что-то про запись доп ведений или аналогичное после загрузки. Отдельным циклом ПослеЗагрузки в самой конвертации.
15 welwel
 
03.12.20
16:01
(14) +
Там в каждом ПКО док-тов в ПослеЗагрузки есть такое:
Если Объект.ЭтоНовый() Тогда
    Параметры.ДокументыСОпределениемДопРеквизитов.Добавить(Объект.ПолучитьСсылкуНового());
Иначе
    Параметры.ДокументыСОпределениемДопРеквизитов.Добавить(Объект.Ссылка);
КонецЕсли;
16 welwel
 
03.12.20
16:06
(15) +
там же аккумулируйте в каком-нибудь массиве и все нужные данные, а в ПослеЗагрузкиДанных конвертации пишите их.
17 Serdolik55
 
03.12.20
16:15
(16) У меня на стороне источника(УТ 10.3) нет доп реквизитов, я хочу некоторые реквизиты источника запихнуть в доп сведения на стороне приемника.
На стороне приемника это запись их в регистр сведений Дополнительные сведения, делаю через Исходящие данные и ВыгрузитьПоправилу(), у меня запись в регистр добавляется Ссылка и значение ДатаППС, а вот Свойство (это ПВХ) оно пустое, так как на стороне приемника я не понимаю как его указать в исходящих данных. Либо как-то исходящие данные перехватывать на стороне Приемника уже и там подменять на нужный ПВХ. Но в каком событии?
18 welwel
 
03.12.20
16:26
(17) вы же в (0),если правильно понял, хотели передавать через параметры часть данных. В ПослеЗагрузки пко документа таким образом будут все данные в распоряжении. Это к тому, чтоб не конвертировать рс и пвх.
19 welwel
 
03.12.20
16:29
Я бы собрал все данные из параметров на стороне приемника в коллекцию и записал их все вместе в ПослеЗагрузкиДанных. Ссылки на документы известны - см (15).
20 welwel
 
03.12.20
16:36
(19) ПослеЗагрузкиДанных исполняется после загрузки всех обьектов, так что можно записать РС без опасений, что объект ещё отсутствует в базе.
21 welwel
 
03.12.20
16:42
(20) +
Имхо логичнее и не нужно конвертировать Регистр сведений Дополнительные реквизиты, а на стороне приемника после загрузки данных вызвать соответствующую процедуру для записи дополнительных реквизитов, не вдаваясь в организацию их хранения в бд.
22 Serdolik55
 
03.12.20
16:54
(21) Спасибо! сейчас попробую в ПослезагрузкиДанных запихнуть запись в регистр сведений.
А к параметрам объекта как обратиться в этом обработчике? У меня вся инфа в них. В обработчике После загрузки можно так Параметр_ДатаППС = ПараметрыОбъекта["ДатаППС"], то тут объект ещё не в БД.
23 welwel
 
03.12.20
16:59
(22) в ПослеЗагрузки пко именно так и обращаться. Потом затолкать в массив или тз - аналогично тому как в (15). В ПослеЗагрузкиДанных перебрать массив и уже писать РС.
24 welwel
 
03.12.20
17:01
Типовые правила (14) подгрузите и посмотрите.
25 Serdolik55
 
03.12.20
17:02
(22) Благодарю!
Сейчас попробую
26 welwel
 
03.12.20
17:03
(24) +
Емнип макет типовых правил в плане обмена в конфигурации лежит.
27 welwel
 
03.12.20
17:04
(26) *конфигурации ут
28 Serdolik55
 
03.12.20
17:06
(27) Понял, спасибо!
29 welwel
 
03.12.20
17:08
Там же могут быть примеры и записи рс доп реквизиты. Пройдитесь поиском имени рс по макету правил.