Имя: Пароль:
1C
1С v8
Конвертация данных2: переданный в ПКС параметр теряется в ПКО
0 vdeemer
 
18.04.22
19:18
Здравствуйте!
В правиле конвертации объекта добавляю ПКС "передавать данные в параметр", код "Перед выгрузкой":

врЗначение = Новый Структура();

Если ЗначениеЗаполнено(Источник.ДатаСчф) и ЗначениеЗаполнено(Источник.НомерСчф) Тогда
    врЗначение.Вставить("СоздаватьСчетФактураПолученный", Истина);
    врЗначение.Вставить("РеквизитыСФ", Новый Структура("Дата, Номер", Источник.ДатаСчф,Источник.НомерСчф));
Иначе
    врЗначение.Вставить("СоздаватьСчетФактураПолученный", Ложь);
КонецЕсли;

Значение = врЗначение;

Теперь вытащить это можно в ПКО "После загрузки"? Пробовал

СоздаватьСФ = ПараметрыОбъекта.Получить("СчетФактураПолученная");

не получается, нет такой буквы в этом слове((
1 vdeemer
 
18.04.22
19:19
(0) Сам параметр называется "СчетФактураПолученная", пропустил
2 big
 
18.04.22
19:36
Я не специалист по конвертации из 8 в 8, но в документации вроде как написано, что параметр передается через "Выражение", а не через "Значение".
3 vdeemer
 
18.04.22
19:40
(2) Это из справки:
Выражение - Неопределено. Может быть указано произвольное строковое выражение на встроенном языке, результат вычисления которого при загрузке будет присвоен значению свойства. Если Выражение определить в теле обработчика, то дальнейшая обработка ПКС будет прекращена. Данная возможность, используется только если конфигурация-приемник реализована на платформе V8
Хотя попробовать не сложно)
4 big
 
18.04.22
19:44
(3) Именно. "Значение" используется для дальнейшей конвертации, то есть процесс не прерывается, а "Выражение" прерывает дальнейшую работу - "ПриВыгрузке" не сработает.
5 vdeemer
 
18.04.22
19:55
(4) Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1086)}: Ошибка при вызове метода контекста (XMLСтрока): Ошибка преобразования данных XML
6 big
 
18.04.22
19:57
(5) Может быть потому, что там тип данных "Строка" должен быть?
7 vdeemer
 
18.04.22
20:03
(6) Точно, я же структуру передаю
8 vdeemer
 
18.04.22
20:05
(6) Ага, появился параметр в файле выгрузки. Осталось его оттуда взять и дело в шляпе. Спасибо!!!
9 Йохохо
 
18.04.22
20:07
(3) выражение вычисляется в приемнике, значение в источнике
10 vdeemer
 
18.04.22
20:08
(9) Так я же в источнике писал (0)
11 vdeemer
 
18.04.22
20:18
(8) Ну не достается он((
Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(4908)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(1,1)}: Ожидается выражение

Все-таки "Выражение" это именно произвольное строковое выражение на встроенном языке, результат вычисления которого при загрузке будет присвоен значению свойства. Мне-то надо передать уже вычисленное выражение, обычную структуру.
12 alexxx961503
 
18.04.22
20:51
(11) Попробуй ПараметрыОбъекта["<Имя параметра>"]
13 vdeemer
 
18.04.22
21:53
(12) Дык это те же яйца, что и (0), только в профиль
14 Доминошник
 
18.04.22
22:15
(13) А если использовать обработчик событий "После выгрузки в файл" для документа, где написать примерно такое


Если ЗначениеЗаполнено(Источник.ДатаСчф) и ЗначениеЗаполнено(Источник.НомерСчф) Тогда
врЗначение = Новый Структура();
врЗначение.Вставить("РеквизитыСФ", Новый Структура("Дата, Номер", Источник.ДатаСчф,Источник.НомерСчф));
ВыгрузитьПоПравилу(, ,врЗначение, , "СчетФактураПолученный");
КонецЕсли;

15 vdeemer
 
18.04.22
22:22
(14) А грузить потом как?
16 Доминошник
 
18.04.22
22:51
(15) Ну тогда "совсем альтернативный вариант" :))) - писать что-то такого типа @@@СЧ-Ф полученный № 123 от 01/12/2021@@@ в комментарий документа, в "после загрузки" - разбирать комментарий, при необходимости - создавать счет-фактуру входящую

А если "по теме", то правильно в (12) - см. https://forum.infostart.ru/forum15/topic246127/
17 vdeemer
 
18.04.22
23:30
(16) И это не взлетело... Не передаются параметры почему-то, прямо мистика какая-то((
18 Лирик
 
19.04.22
00:00
Попробуй выгрузить 3 параметра простых типов (Число, Дата и Булево)
19 hhhh
 
19.04.22
00:20
(17) да, проще же выгрузить два параметра: номер счета фактуры и дата счета фактуры, чем выгружать структуру, да еще у вас как-то через задницу, две структуры, вложенные друг в друга.
20 vdeemer
 
19.04.22
11:04
(18) (19) пробовал - те же яйца, только в профиль. Я пробовал передавать один параметр, не передается. Может я не понимаю логику работы обработчиков ПКО? Если в обработчике "Перед выгрузкой" делаю уф


Параметры.Вставить("СоздаватьСчетФактураПолученный", Истина);


то в обработчике "После загрузки" должен сработать код


Флаг = Параметры.СоздаватьСчетФактураПолученный;


?
21 hhhh
 
19.04.22
11:14
(20) наверно

Флаг = Параметры["СоздаватьСчетФактураПолученный"];
22 vdeemer
 
19.04.22
11:17
(21)
Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО                 =  ПоступлениеТоваровУслуг
    ТипОбъекта             =  Поступление (акт, накладная, УПД)
    Объект                 =  Поступление (акт, накладная, УПД) П0000000126 от 07.04.2022 0:00:00
    Обработчик             =  ПослеЗагрузкиОбъекта
    ОписаниеОшибки         =  Поле объекта не обнаружено (СоздаватьСчетФактураПолученный)
    ПозицияМодуля          =  <Неизвестный модуль>(1)
    КодСообщения           =  21
23 vdeemer
 
19.04.22
11:36
(16) так и сделал, но это же идеологически неверно((
24 hhhh
 
19.04.22
11:37
(20) а он создается программно? или есть в таблице параметров
25 hhhh
 
19.04.22
11:39
там в таблице параметров есть галки, выгрузка и загрузка. то есть задаем виден параметр на этапе загрузки или нет.
26 vdeemer
 
19.04.22
11:51
(24) В таблице параметров его нет... Может здесь порылась чихуахуа? Но этот параметр мне нужен только для конкретного ПКО, он не вылезет в другом месте? Или в других ПКО про это дело помнить и не трогать его?
27 DiMel_77
 
19.04.22
12:24
(26) Коллеги, в чем спор? Во первых необходимо поделить структуру на отдельные параметры. Передать через выражение в ПКС или Через Входящие данные в процедуре "Перед выгрузкой" ПКО (не принципиально).
Структуру наверно тоже можно передать, если серилизовать в json и т.п. Далее, через соответствие ПараметрыОбъекта["Имя параметра"] она передается в приемник. Единственный ньюанс, который у меня был если передаешь параметр нужно указывать "Поиск объекта при загрузке по свойству", но это когда хочешь использовать в обработчике "Поля поиска" (может кстати ошибка быть с этим флагом связанна).
28 vdeemer
 
19.04.22
18:03
(27) Да тут не спор, справку толкуем (с)
Мне больше интересно, почему не работает структура Параметры, доступная для всех обработчиков ПКО - по идее, можно через нее же передать.
29 elCust
 
19.04.22
18:39
Если передается значение в параметр в ПКС, то
Модуле обработчика "После загрузки" нужно писать ПараметрыОбъекта.Получить["ИмяПараметра"];
30 vdeemer
 
19.04.22
19:18
(29) Это если в ПКС указывается "Передавать данные в параметр", а можно в обработчиках ПКО использовать именно структуру "Параметры"? Она заявлена как доступная во всех обработчиках.
31 elCust
 
19.04.22
19:51
(30) Тогда используйте ПередатьОдинПараметрВПриемник
32 Йохохо
 
19.04.22
19:57
(30) а откуда уверенность что она если и есть будет одна и та же? имхо все "сквозные" объекты перечислены в параметрах функции ВыгрузитьПоПравилу(), остальные локальные переменные
33 vdeemer
 
19.04.22
21:15
(32) дык сейчас нет в этом никакой уверенности, потому что не работает оно у меня почему-то. А так-то я не придумал, в информации по обработчикам написано... Хотя на заборе тоже встречаются полиграфические следы, но все же)
34 Лирик
 
19.04.22
22:23
Все значения структуры "Параметры" доступны во всех обработчиках на стороне источника, но на стороне приемника доступны лишь те, которые "объявлены" через закладку "Параметры" конфигурации КД2 и с установленным признаком "При загрузке". Параметры, сделанные на стороне источника конструкцией "Параметры.Вставить([Ключ], [Значение])" на стороне приемника (без дополнительного шаманства) недоступны.

Очень хорошая статья про параметры КД2
https://learn.programstore.ru/blog/parametry-v-1c
35 vdeemer
 
19.04.22
22:40
(34) Вот оно!
Спасибо!!!
36 Йохохо
 
19.04.22
22:46
(35) ждём утра
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший