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

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

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


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

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

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


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

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

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

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

Значение = Новый ХранилищеЗначения(врЗначение);
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 504 19.04.22 11:52 Сейчас в теме
В ПКС в обработчике "Перед выгрузкой" если ИмяПКО не указано, то Значение должно иметь тип из списка:
1. Строка
2. Число
3. Булево
4. Дата
5. ХранилищеЗначения
6. УникальныйИдентификатор
7. ВидДвиженияНакопления

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

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

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

Значение = Новый ХранилищеЗначения(врЗначение);
6. BoBaH 18 19.04.22 12:14 Сейчас в теме
Параметр передавался, действительно, с недопустимым типом. Но в итоге сделал все проще - в комментарий добавлял @@@Дата@@@Номер, после загрузки его обрабатывал. Все равно непонятно, почему не передался параметр в рамках одного ПКО между обработчиками.
12. sivin-alexey 504 20.04.22 04:55 Сейчас в теме
(6) В рамках одного ПКО в приемнике переданные параметры доступны в обработчике ПКО "После загрузки" в переменной ПараметрыОбъекта, а не в переменной Параметры
7. BoBaH 18 19.04.22 12:17 Сейчас в теме
(5) В информации по обработчикам написано "Параметры - Структура, в которой хранятся переменные доступные во всех обработчиках", поэтому должно сработать и так.
8. sivin-alexey 504 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 504 19.04.22 12:47 Сейчас в теме
Для примера:
1. Локальный параметр П1
2. Глобальный параметр глП1
3. Полученый XML-файл
Прикрепленные файлы:
10. BoBaH 18 19.04.22 18:01 Сейчас в теме
(8) Вот я ожидал, что "структура, в которой хранятся переменные доступные во всех обработчиках", будет доступна для всех обработчиков этого ПКО, но почему-то чуда не произошло. Разумеется, эта структура должна попасть в файл обмена, а ее там нет. Спасибо за разъяснения!
11. sivin-alexey 504 20.04.22 04:46 Сейчас в теме
(10)
"Структура, в которой хранятся переменные доступные во всех обработчиках" действительна доступна для всех обработчиков. Это некоторый аналог глобальных переменных. Но только в файл обмена параметры выгружаются еще до того, как начнуться выгружаться данные, т.е. до первого объекта. Поэтому заполнять глобальные параметры в ПКО (с целью их выгрузки) уже поздно. Чаще глобальные параметры используются для хранения вспомогательных данных.

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

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

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

Разработчик 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Программист 1С
Екатеринбург
зарплата от 130 000 руб. до 170 000 руб.
Полный день

Программист 1C
Санкт-Петербург
зарплата от 140 000 руб. до 200 000 руб.
Полный день