Конвертация данных2: переданный в ПКС параметр теряется в ПКО

1. BoBaH 18 18.04.22 19:42 Сейчас в теме
Здравствуйте!
В правиле конвертации объекта (документ) добавляю ПКС "передавать данные в параметр", имя параметра СчетФактураПолученный, код "Перед выгрузкой":
врЗначение = Новый Структура();
врЗначение.Вставить("СоздаватьСчетФактураПолученный", Истина);
врЗначение.Вставить("РеквизитыСФ", Новый Структура("Дата, Номер", Источник.ДатаСчф,Источник.НомерСчф));

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


Пытаюсь получить значение этого параметра в ПКО "После загрузки", пробовал
СоздаватьСФ = ПараметрыОбъекта.Получить("СчетФактураПолученный");

не взлетает((

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


По идее, в обработчике "После загрузки" этого же самого ПКО структура Параметры должна содержать нужные данные, но увы - нихт((
Найденные решения
4. sivin-alexey 512 19.04.22 11:52 Сейчас в теме
В ПКС в обработчике "Перед выгрузкой" если ИмяПКО не указано, то Значение должно иметь тип из списка:
1. Строка
2. Число
3. Булево
4. Дата
5. ХранилищеЗначения
6. УникальныйИдентификатор
7. ВидДвиженияНакопления

иначе значение в файл данных не выгружается.

Нужно переделать так:

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

Значение = Новый ХранилищеЗначения(врЗначение);
interlamersha; BoBaH; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Ivanov_OM 38 19.04.22 08:59 Сейчас в теме
(1) Лучше сделай 2 параметра - ДатаСФ, Номер СФ. И получай их по отдельности.
3. BoBaH 18 19.04.22 11:13 Сейчас в теме
Я пробовал передавать один параметр, не передается. Может я не понимаю логику работы обработчиков ПКО? Если в обработчике "Перед выгрузкой" делаю уф
Параметры.Вставить("СоздаватьСчетФактураПолученный", Истина);

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

?
5. Ivanov_OM 38 19.04.22 12:13 Сейчас в теме
(3)
Флаг = Параметры.Получить("СоздаватьСчетФактураПолученный");
4. sivin-alexey 512 19.04.22 11:52 Сейчас в теме
В ПКС в обработчике "Перед выгрузкой" если ИмяПКО не указано, то Значение должно иметь тип из списка:
1. Строка
2. Число
3. Булево
4. Дата
5. ХранилищеЗначения
6. УникальныйИдентификатор
7. ВидДвиженияНакопления

иначе значение в файл данных не выгружается.

Нужно переделать так:

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

Значение = Новый ХранилищеЗначения(врЗначение);
interlamersha; BoBaH; +2 Ответить
6. BoBaH 18 19.04.22 12:14 Сейчас в теме
Параметр передавался, действительно, с недопустимым типом. Но в итоге сделал все проще - в комментарий добавлял @@@Дата@@@Номер, после загрузки его обрабатывал. Все равно непонятно, почему не передался параметр в рамках одного ПКО между обработчиками.
12. sivin-alexey 512 20.04.22 04:55 Сейчас в теме
(6) В рамках одного ПКО в приемнике переданные параметры доступны в обработчике ПКО "После загрузки" в переменной ПараметрыОбъекта, а не в переменной Параметры
7. BoBaH 18 19.04.22 12:17 Сейчас в теме
(5) В информации по обработчикам написано "Параметры - Структура, в которой хранятся переменные доступные во всех обработчиках", поэтому должно сработать и так.
8. sivin-alexey 512 19.04.22 12:22 Сейчас в теме
(7) Вы путаете "Глобальные параметры" и "Параметы ПКО". Переключатель "Передавать данные в параметр" будет передавать эти данные вместе с конвертируемым объектом.



<Объект Нпп="1" Тип="СправочникСсылка.Номенклатура" ИмяПравила="Номенклатура"><Ссылка Нпп="1">
	<Свойство Имя="Код" Тип="Строка">
		<Значение>75658</Значение>
	</Свойство>
	<Свойство Имя="ЭтоГруппа" Тип="Булево">
		<Значение>false</Значение>
	</Свойство>
</Ссылка>

	<Свойство Имя="Наименование" Тип="Строка">
		<Значение>тест 1</Значение>
	</Свойство>

        <ЗначениеПараметра Имя="П1" Тип="ХранилищеЗначения">
	<Значение>AQFGAQAAAAAAAO+7v3siIyIsNDIzODAxOWQtN2U0OS00ZmM5LT­kxZGItYjZiOTUx

ZDVjZjhlLA0KezIsDQp7DQp7IlMiLCLQodC+0LfQtNCw0LLQsNGC0YzQodGH­0LXR

gtCk0LDQutGC0YPRgNCw0J/QvtC70YPRh9C10L3QvdGL0LkifSwNCnsiQiIs­MX0N

Cn0sDQp7DQp7IlMiLCLQoNC10LrQstC40LfQuNGC0YvQodCkIn0sDQp7IiMi­LDQy

MzgwMTlkLTdlNDktNGZjOS05MWRiLWI2Yjk1MWQ1Y2Y4ZSwNCnsyLA0Kew0K­eyJT

Iiwi0JTQsNGC0LAifSwNCnsiRCIsMjAyMjA0MTkxNTQ3Mzl9DQp9LA0Kew0K­eyJT

Iiwi0J3QvtC80LXRgCJ9LA0KeyJTIiwiMTEyMyJ9DQp9DQp9DQp9DQp9DQp9­DQp9

</Значение>
</ЗначениеПараметра>
</Объект>
Показать


Это не имеет отношения к "структуре, в которой хранятся переменные доступные во всех обработчиках"
Прикрепленные файлы:
9. sivin-alexey 512 19.04.22 12:47 Сейчас в теме
Для примера:
1. Локальный параметр П1
2. Глобальный параметр глП1
3. Полученый XML-файл
Прикрепленные файлы:
10. BoBaH 18 19.04.22 18:01 Сейчас в теме
(8) Вот я ожидал, что "структура, в которой хранятся переменные доступные во всех обработчиках", будет доступна для всех обработчиков этого ПКО, но почему-то чуда не произошло. Разумеется, эта структура должна попасть в файл обмена, а ее там нет. Спасибо за разъяснения!
11. sivin-alexey 512 20.04.22 04:46 Сейчас в теме
(10)
"Структура, в которой хранятся переменные доступные во всех обработчиках" действительна доступна для всех обработчиков. Это некоторый аналог глобальных переменных. Но только в файл обмена параметры выгружаются еще до того, как начнуться выгружаться данные, т.е. до первого объекта. Поэтому заполнять глобальные параметры в ПКО (с целью их выгрузки) уже поздно. Чаще глобальные параметры используются для хранения вспомогательных данных.

Но есть возможность выгрузки глобальных параметров в файл обмена. Для этого у параметра должна стоять галка "Передавать параметр из источника в приемник", но значение параметров должны быть установлены в обработчике "Перед выгрузкой данных".

Также можно выгрузить параметр с помощью метода ПередатьОдинПараметрВПриемник(Имя, Значение, ИмяПКО = ""). Но использовать этот метод в обработчиках ПКО не следует, т.к. поломается файл обмена.

В вашем случае нужно использовать локальные параметры. Они будут переданы вместе с объектом. В приемнике они будут доступны в обработчике ПКО "После загрузки" в переменной ПараметрыОбъекта
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот