Имя: Пароль:
1C
 
Конвертация. Передача статичного значения в реквизит объекта-приемника
0 Droning1C
 
30.08.19
12:09
Доброго времни суток!

ПКО После загрузки документа пишу -

Объект.ПризнакУчета = Перечисления.ПризнакУчета.Учет2;

Но реквизит не записывается.




Если написать так-

Объект.ПризнакУчета = Перечисления.ПризнакУчета.Учет2;
Объект.Записать();

,то реквизит записывается, но время конвертации документа сильно увеличивается.



Сдается мне, что я что-то делаю неверно. Должен быть какой-то стандартный метод передачи статичного значения реквизиту приемника. Может через ПКС как-то? Подскажите плз, или киньте ссыль
1 Ёпрст
 
30.08.19
12:11
Проще прердать это значение в ПередВыгрузкой
2 Cyberhawk
 
30.08.19
12:15
"Но реквизит не записывается" // Из-за прикладного кода, выполняющегося дальше
3 Cyberhawk
 
30.08.19
12:15
Если у тебя оно в ПослеЗагрузки не работает, то и передача из приемника тоже не поможет
4 Droning1C
 
30.08.19
12:20
(2) Так все же как правильно делать такие операции?
5 Droning1C
 
30.08.19
12:20
(1) Как именно, если в источнике вообще нет такого перечисления? Там такой код не отработает
6 Aleksey
 
30.08.19
12:33
(5) отработает. Просто пишешь
Значение = "Учет2";
7 Aleksey
 
30.08.19
12:34
Обмен какой? В ручную или меняешь правила у типового плана обмена?
Просто во втором случае как раз процедура после загрузки из правил не отрабатывает
8 Droning1C
 
30.08.19
12:42
(7) в ручную.   тоесть я делаю пкс следующего вида: источник-пусто, приемник- ПризнакУчета. Перед выгрузкой свойства пишу -


Значение = Перечисления.ПризнакУчета.Учет2;

Флаг получить из входящих данных Ложь или Истина?
9 Droning1C
 
30.08.19
12:45
(7) Я правильно понял?
10 Droning1C
 
30.08.19
12:49
Еще вопрос, если я вас не утомил...



Если НЕ Объект.ЭтоГруппа И НЕ Объект.Услуга Тогда
        ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, Объект.Ссылка);
        Если ВыборкаЕдиниц.Следующий() Тогда
            НайденнаяЕдиница = ВыборкаЕдиниц.Ссылка;
        Иначе
            НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
            НайденнаяЕдиницаОбъект.Наименование            = СокрЛП(Объект.БазоваяЕдиницаИзмерения);
            НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = Объект.БазоваяЕдиницаИзмерения;
            НайденнаяЕдиницаОбъект.Коэффициент             = 1;
            Сообщить(Объект.Ссылка);
            НайденнаяЕдиницаОбъект.Владелец                = Объект.Ссылка;
            НайденнаяЕдиницаОбъект.УстановитьНовыйКод();
            НайденнаяЕдиницаОбъект.Записать();
            НайденнаяЕдиница = НайденнаяЕдиницаОбъект.Ссылка;
        КонецЕсли;



при выполнении строчки кода с присваиванием владельца   выдается ошибка -

ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Значение поля "Владелец" не заполнено или заполнено неверно


Метод сообщить же выдает нужную мне номенклатуру...
11 13_Mult
 
30.08.19
12:59
(9) Не правильно. У вас нет в Источнике такого перечисления и поэтому пусто.
Передайте просто текст как в (6) и перечисление Приёмника его подхватит (если оно существует)
12 Ёпрст
 
30.08.19
13:02
(10) у вас в источнике нема единиц измерения что-ле ? нафига это в при загрузке каждый раз искать\создавать ?
13 Droning1C
 
30.08.19
13:06
(12) в источнике тип единицы измерения СправочникСсылка.КалссификаторЕИ, в приемнике- СправочникССылка.ЕИ, пробовал по всякому, не получилось. Знаний пока не хватает... Поэтому сделал так.

Я найду, подучу. Но сейчас бухам надо быстро переконвертировать доки из базы в базу, нужен результат. Потому делаю, как получается(временно).

Так почему же не отрабатывает присвоение владельца? Типы совпадают, ссылка на владельца существует...
14 Droning1C
 
30.08.19
13:08
(11) Можете кинуть в меня камень, но я так и не понял. Как передать то?
15 Ёпрст
 
30.08.19
13:08
(13) отлично. Вот и пишите ПКО КалссификаторЕИ ---->ЕИ и тогда оно само перенесет нужную единицу во всех реквизитах.
16 Ёпрст
 
30.08.19
13:09
(14) как в (6)
17 Droning1C
 
30.08.19
13:11
(16) да я понял что как в 6. только вот где именно это написать?
18 Ёпрст
 
30.08.19
13:12
(17) в перед выгрузкой
19 Droning1C
 
30.08.19
13:19
(15) ок. делаю пкс. в источнике нет ни владельца, ни единицы по классчификатору, ни коэффициента. Правильно ли я поступаю?

Ставлю этим свойствам галки - получить из входящих данных, и в пко перед выгрузкой пишу

ВходящиеДанные = Новый Структура;

ЕдиницаПоКлассификатору = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");
ВходящиеДанные.Вставить("ЕдиницаПоКлассификатору", ЕдиницаПоКлассификатору);
Коэффициент = 1;
ВходящиеДанные.Вставить("Коэффициент", Коэффициент);


Только вот владельца то как получить?
20 Droning1C
 
30.08.19
13:24
(18) может статейка какая-то полезная есть на примете? Очень уж хочется наконец понять принципы передачи данных в КД
21 Вафель
 
30.08.19
13:25
(0) должно записываться.
может повторная запись не взводит флаг модифицированности
22 Droning1C
 
30.08.19
13:45
(19) (20) ап
23 Йохохо
 
30.08.19
13:52
(22) "ЕдиницаПоКлассификатору = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");" в источнике ты выполняешь код который имеет смысл только в приемнике
24 Droning1C
 
30.08.19
14:02
(23) бляха муха. я совсем запутался...
25 Droning1C
 
30.08.19
14:03
(23) https://ibb.co/tDzMXjf

вот. Так выглядят свойства ПКО КалссификаторЕИ ---->ЕИ

что мне нужно сделать? я явно что-то очень важное упускаю в понимании процесса в целом.
26 Droning1C
 
30.08.19
14:04
как мне ГРАМОТНО заполнить поля Владелец(Если я хочу чтобы сюда попадала номенклатура из которой по цепочке вызывается это правило), ЕдиницаПоКлассификатору(Штука), Коэфф (=1 всегда)
27 Йохохо
 
30.08.19
14:08
(26) проверить что в ПКО номенклатура корректно заполняется ключ записи (так вроде) и нет галки Не запоминать выгруженные, вроде так