КД 3 Ошибка конвертации свойств

1. Attya 23.01.24 11:22 Сейчас в теме
Добрый день! Пытаюсь синхронизировать Розницу2 и УНФ. При синхронизации в приемнике получаю такую ошибку:

Скрытый текст


Код в источнике:
//ФС-дописка
	СвойстваТЧ = ДобавитьПКТЧ(ПравилоКонвертации, "ОплатаБонуснымиБаллами",  "ОплатаБонуснымиБаллами");
	ДобавитьПКС(СвойстваТЧ, "ДисконтнаяКарта", "ДисконтнаяКарта");
	ДобавитьПКС(СвойстваТЧ, "", "БонуснаяПрограммаЛояльности", 1);
	ДобавитьПКС(СвойстваТЧ, "", "СуммаБонусныхБаллов", 1);
	//ФС-дописка


Код в приемнике:
//ФС-дописка
	СвойстваТЧ = ДобавитьПКТЧ(ПравилоКонвертации, "", "ОплатаБонуснымиБаллами");
	ДобавитьПКС(СвойстваТЧ, "ДисконтнаяКарта", "ДисконтнаяКарта", 1);
	ДобавитьПКС(СвойстваТЧ, "ПрограммаЛояльности", "", 1);
	ДобавитьПКС(СвойстваТЧ, "СуммаБонусовВСкидках", "", 1);
	//ФС-дописка


Прикрепляю скрины XDTO справочник ДисконтныеКарты и документ ОтчетыОРозничныхПродажах со свойством ПрограммаЛояльности. В чем ошибка?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Attya 23.01.24 13:46 Сейчас в теме
Вероятно допустил ошибки при настройке конвертаций. Решил изменить и для начала обменяться только полем СуммаБонусныхБаллов. Теперь данное поле передается из Розницы в УНФ, но при попытке также передать дисконтную карту, ошибка остается прежней.

Источник:
СвойстваТЧ = ДобавитьПКТЧ(ПравилоКонвертации, "ОплатаБонуснымиБаллами",  "ОплатаБонуснымиБаллами");
	//ДобавитьПКС(СвойстваТЧ, "ДисконтнаяКарта", "ДисконтнаяКарта");
	ДобавитьПКС(СвойстваТЧ, "СуммаБонусовВСкидках", "СуммаБонусныхБаллов");


Приемник:
СвойстваТЧ = ДобавитьПКТЧ(ПравилоКонвертации, "Запасы", "ОплатаБонуснымиБаллами");
	//ДобавитьПКС(СвойстваТЧ, "ДисконтнаяКарта",          "ДисконтнаяКарта");
	ДобавитьПКС(СвойстваТЧ, "СуммаСкидкиОплатыБонусом", "СуммаБонусныхБаллов");
3. Attya 07.02.24 16:25 Сейчас в теме
кд2

Обработка события перед выгрузкой ПКО ОтчетОРозничныхПродажах:
СписокВидовОплаты = Новый СписокЗначений;
СписокВидовОплаты.Добавить(ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыОплатЧекаККМ.ЗачетАванса"));
СписокВидовОплаты.Добавить(ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыОплатЧекаККМ.ОплатаВрассрочку"));

МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

Запросы.ОтчетОРозничныхПродажах_ТаблицаПромежуточная.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запросы.ОтчетОРозничныхПродажах_ТаблицаПромежуточная.УстановитьПараметр("Ссылка", Источник.Ссылка);
Запросы.ОтчетОРозничныхПродажах_ТаблицаПромежуточная.УстановитьПараметр("ВидОплаты", СписокВидовОплаты);
РезультатыЗапросаВозвраты = Запросы.ОтчетОРозничныхПродажах_ТаблицаПромежуточная.ВыполнитьПакет();

ТаблицаПромежуточная = Запросы.ОтчетОРозничныхПродажах_ТаблицаПромежуточная.МенеджерВременныхТаблиц.Таблицы["ТаблицаПромежуточная"].ПолучитьДанные().Выгрузить();

Если ТаблицаПромежуточная.Количество() = 0 Тогда // Нет Чеков или ОРП загружен из ККМОффлайн.
	МенеджерВременныхТаблиц.Закрыть();
	ЗапросТовары = Новый Запрос();
	ЗапросТовары.Текст =
	"ВЫБРАТЬ
	|	Товары.Номенклатура       		КАК Номенклатура,
	|	Товары.Характеристика     		КАК Характеристика,
	|	СУММА(Товары.Количество)  		КАК Количество,
	|	СУММА(Товары.КоличествоУпаковок) КАК КоличествоУпаковок,
	|	ВЫБОР
	|		КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
	|			ТОГДА СпрНоменклатура.ЕдиницаИзмерения
	|		ИНАЧЕ Товары.Упаковка
	|	КОНЕЦ КАК Упаковка,
	|	Товары.СтавкаНДС          		КАК СтавкаНДС,
	|	Товары.Цена           		    КАК Цена,
	|	СУММА(Товары.Сумма)             КАК Сумма,
	|	СУММА(Товары.СуммаНДС)          КАК СуммаНДС,
	|	Товары.СтатусУказанияСерий 		КАК СтатусУказанияСерий,
	|	Товары.ДисконтнаяКарта 	  		КАК ДисконтнаяКарта,
	|	Товары.Продавец		 	  		КАК Продавец
	|ИЗ
	|	Документ.ОтчетОРозничныхПродажах.Товары КАК Товары
	|ЛЕВОЕ СОЕДИНЕНИЕ
	|	Справочник.Номенклатура КАК СпрНоменклатура
	|ПО
	|	СпрНоменклатура.Ссылка = Товары.Номенклатура
	|ГДЕ
	|	Товары.Ссылка = &Ссылка
	|	И СпрНоменклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.ПодарочныйСертификат)
	|
	|СГРУППИРОВАТЬ ПО
	|	Товары.Номенклатура,
	|	Товары.Характеристика,
	|	ВЫБОР
	|		КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
	|			ТОГДА СпрНоменклатура.ЕдиницаИзмерения
	|		ИНАЧЕ Товары.Упаковка
	|	КОНЕЦ,
	|	Товары.СтавкаНДС,
	|	Товары.Цена,
	|	Товары.СтатусУказанияСерий,
	|	Товары.ДисконтнаяКарта,
	|	Товары.Продавец
	|
	|ИМЕЮЩИЕ
	|	СУММА(Товары.Количество) <> 0
	|";

	ЗапросТовары.УстановитьПараметр("Ссылка", Источник.Ссылка);
	ТаблицаТовары = ЗапросТовары.Выполнить().Выгрузить();
	Если ТаблицаТовары.Количество() = 0 Тогда
		Отказ = Истина;
	Иначе
		ВходящиеДанные.Вставить("Запасы", ТаблицаТовары);
	КонецЕсли;
	
	ЗапросОплаты = Новый Запрос();
	ЗапросОплаты.Текст = 
	"ВЫБРАТЬ
	|	СУММА(ВЫБОР
	|			КОГДА ОтчетОРозничныхПродажахТовары.Количество < 0
	|				ТОГДА ОтчетОРозничныхПродажахТовары.Сумма
	|			ИНАЧЕ 0
	|		КОНЕЦ) КАК Сумма
	|ПОМЕСТИТЬ СуммаВозвратаТоваров
	|ИЗ
	|	Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
	|ГДЕ
	|	ОтчетОРозничныхПродажахТовары.Ссылка = &Ссылка
	|;
	|ВЫБРАТЬ
	|	ОплатаПК.ЭквайринговыйТерминал 	КАК ЭквайринговыйТерминал,
	|	ОплатаПК.ВидОплаты 				КАК ВидОплаты,
	|	СУММА(ОплатаПК.Сумма) 			КАК Сумма,
	|	ВЫБОР
	|		КОГДА ОплатаПК.Сумма = СуммаВозвратаТоваров.Сумма
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ПолеГруппировки
	|ИЗ
	|	Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОплатаПК,
	|	СуммаВозвратаТоваров КАК СуммаВозвратаТоваров
	|ГДЕ
	|	ОплатаПК.Ссылка = &Ссылка
	|
	|СГРУППИРОВАТЬ ПО
	|	ОплатаПК.ЭквайринговыйТерминал,
	|	ОплатаПК.ВидОплаты,
	|	ВЫБОР
	|		КОГДА ОплатаПК.Сумма = СуммаВозвратаТоваров.Сумма
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ
	|
	|ИМЕЮЩИЕ
	|	СУММА(ОплатаПК.Сумма) <> 0
	|";

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

Иначе
	
	Запрос = Новый Запрос();
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.Текст = "
	|ВЫБРАТЬ
	|	Док.Номенклатура КАК Номенклатура,
	|	Док.Характеристика КАК Характеристика,
	|	Док.Продавец КАК Продавец,
	|	СУММА(ВЫБОР
	|			КОГДА Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
	|				ТОГДА Док.Количество
	|			ИНАЧЕ -Док.Количество
	|		КОНЕЦ) КАК Количество,
	|	Док.Цена КАК Цена,
	|	Док.СтавкаНДС КАК СтавкаНДС,
	|	СУММА(ВЫБОР
	|			КОГДА Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
	|				ТОГДА Док.СуммаНДС
	|			ИНАЧЕ -Док.СуммаНДС
	|		КОНЕЦ) КАК СуммаНДС,
	|	СУММА(ВЫБОР
	|			КОГДА Док.Ссылка.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
	|				ТОГДА Док.Сумма
	|			ИНАЧЕ -Док.Сумма
	|		КОНЕЦ) КАК Сумма,
	|	Док.Упаковка КАК Упаковка,
	|	СУММА(ВЫБОР
	|			КОГДА Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
	|				ТОГДА Док.КоличествоУпаковок
	|			ИНАЧЕ -Док.КоличествоУпаковок
	|		КОНЕЦ) КАК КоличествоУпаковок,
	|	Док.СтатусУказанияСерий КАК СтатусУказанияСерий
	|ИЗ
	|	ТаблицаПромежуточная КАК Док
	|
	|СГРУППИРОВАТЬ ПО
	|	Док.Номенклатура,
	|	Док.Характеристика,
	|	Док.Продавец,
	|	Док.СтавкаНДС,
	|	Док.Цена,
	|	Док.Упаковка,
	|	Док.СтатусУказанияСерий,
	|	Док.ЭтоВозвратПослеЗакрытияСмены
	|
	|ИМЕЮЩИЕ
	|	СУММА(ВЫБОР
	|			КОГДА Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)
	|				ТОГДА Док.Количество
	|			ИНАЧЕ -Док.Количество
	|		КОНЕЦ) <> 0
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ЧекККМОплата.Ссылка КАК Ссылка,
	|	ЧекККМОплата.НомерСтроки КАК НомерСтроки,
	|	ЧекККМОплата.ВидОплаты КАК ВидОплаты,
	|	ЧекККМОплата.ВидОплаты.ТипОплаты КАК ТипОплаты,
	|	ЧекККМОплата.ЭквайринговыйТерминал КАК ЭквайринговыйТерминал,
	|	ЧекККМОплата.Сумма КАК Сумма,
	|	ВЫБОР
	|		КОГДА Док.ВидОперации = &ВидОперацииПродажа
	|			ТОГДА 1
	|		ИНАЧЕ -1
	|	КОНЕЦ КАК КоэффициентВидаОплаты,
	|	ВЫБОР
	|		КОГДА Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Возврат)
	|				И (Док.ЧекККМПродажа.ОтчетОРозничныхПродажах <> &Ссылка
	|					ИЛИ Док.ЧекККМПродажа = ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка))
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ЭтоВозвратПослеЗакрытияСмены
	|ПОМЕСТИТЬ ТаблицаОплат
	|ИЗ
	|	Документ.ЧекККМ.Оплата КАК ЧекККМОплата
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМ КАК Док
	|		ПО (Док.Ссылка = ЧекККМОплата.Ссылка)
	|ГДЕ
	|	ЧекККМОплата.ВидОплаты.ТипОплаты = &ТипОплатыПлатежнаяКарта
	|	И НЕ Док.Ссылка В
	|				(ВЫБРАТЬ
	|					ЧЕКИ54ФЗ.Ссылка КАК Ссылка
	|				ИЗ
	|					ЧЕКИ54ФЗ КАК ЧЕКИ54ФЗ)
	|	И Док.ОтчетОРозничныхПродажах = &Ссылка
	|	И Док.Проведен
	|	И НЕ Док.ОперацияСДенежнымиСредствами
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ТаблицаОплат.ВидОплаты КАК ВидОплаты,
	|	ТаблицаОплат.ТипОплаты КАК ТипОплаты,
	|	ТаблицаОплат.ЭквайринговыйТерминал КАК ЭквайринговыйТерминал,
	|	ТаблицаОплат.КоэффициентВидаОплаты * ТаблицаОплат.Сумма КАК Сумма,
	|	ТаблицаОплат.ЭтоВозвратПослеЗакрытияСмены КАК ЭтоВозвратПослеЗакрытияСмены
	|ПОМЕСТИТЬ ПодготовительнаяТаблица
	|ИЗ
	|	ТаблицаОплат КАК ТаблицаОплат
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ПодготовительнаяТаблица.ВидОплаты КАК ВидОплаты,
	|	ПодготовительнаяТаблица.ТипОплаты КАК ТипОплаты,
	|	ПодготовительнаяТаблица.ЭквайринговыйТерминал КАК ЭквайринговыйТерминал,
	|	СУММА(ПодготовительнаяТаблица.Сумма) КАК Сумма
	|ИЗ
	|	ПодготовительнаяТаблица КАК ПодготовительнаяТаблица
	|
	|СГРУППИРОВАТЬ ПО
	|	ПодготовительнаяТаблица.ТипОплаты,
	|	ПодготовительнаяТаблица.ЭквайринговыйТерминал,
	|	ПодготовительнаяТаблица.ВидОплаты,
	|	ПодготовительнаяТаблица.ЭтоВозвратПослеЗакрытияСмены
	|
	|ИМЕЮЩИЕ
	|	СУММА(ПодготовительнаяТаблица.Сумма) <> 0
	|";

	Запрос.УстановитьПараметр("ВидОплаты", СписокВидовОплаты);
	Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
	Запрос.УстановитьПараметр("ВидОперацииПродажа"		, Перечисления.ВидыОперацийЧекККМ.Продажа);
	Запрос.УстановитьПараметр("ТипОплатыПлатежнаяКарта"	, Перечисления.ТипыОплатЧекаККМ.ПлатежнаяКарта);

	РезультатЗапроса = Запрос.ВыполнитьПакет();
	МенеджерВременныхТаблиц.Закрыть();
	
	Если ТаблицаПромежуточная.Количество() > 0 Тогда
		ТаблицаТовары =  РезультатЗапроса[0].Выгрузить();
		Если ТаблицаТовары.Количество() = 0 Тогда
			Отказ = Истина;
		Иначе
			ВходящиеДанные.Вставить("Запасы", ТаблицаТовары);
		КонецЕсли;
		ТаблицаОплаты =  РезультатЗапроса[3].Выгрузить();
		ВходящиеДанные.Вставить("Оплаты", ТаблицаОплаты);
	КонецЕсли;
КонецЕсли;
Показать


Запрос ОтчетОРозничныхПродажах_ТаблицаПромежуточная :
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ            // ЧЕКИ54ФЗ
	ЧекККМ.Ссылка КАК Ссылка
ПОМЕСТИТЬ ЧЕКИ54ФЗ
ИЗ
	РегистрНакопления.РасчетыСКлиентами КАК РасчетыСКлиентами
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМ КАК ЧекККМ
		ПО РасчетыСКлиентами.Регистратор = ЧекККМ.ОтчетОРозничныхПродажах
ГДЕ
	ЧекККМ.ОтчетОРозничныхПродажах = &Ссылка
	И (ЧекККМ.Оплата.ВидОплаты В (&ВидОплаты)
			ИЛИ ЧекККМ.ОперацияСДенежнымиСредствами = ИСТИНА)
;

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Док.Ссылка КАК Ссылка,
	Док.Номер КАК Номер,
	Док.ДисконтнаяКарта КАК ДисконтнаяКарта,
	Док.ВидОперации КАК ВидОперации,
	ТаблицаТовары.Номенклатура КАК Номенклатура,
	ТаблицаТовары.Характеристика КАК Характеристика,
	ВЫБОР
		КОГДА ТаблицаТовары.Продавец = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)
			ТОГДА Док.Продавец
			ИНАЧЕ ТаблицаТовары.Продавец
	КОНЕЦ КАК Продавец,
	ТаблицаТовары.Количество КАК Количество,
	ТаблицаТовары.Цена КАК Цена,
	ТаблицаТовары.СтавкаНДС КАК СтавкаНДС,
	ТаблицаТовары.СуммаНДС КАК СуммаНДС,
	ТаблицаТовары.Сумма КАК Сумма,
	ВЫБОР
		КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
			ТОГДА СпрНоменклатура.ЕдиницаИзмерения
		ИНАЧЕ ТаблицаТовары.Упаковка
	КОНЕЦ КАК Упаковка,
	ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
	ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
	ВЫБОР
		КОГДА Док.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Возврат)
				И (Док.ЧекККМПродажа.ОтчетОРозничныхПродажах <> &Ссылка
					ИЛИ Док.ЧекККМПродажа = ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка))
			ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК ЭтоВозвратПослеЗакрытияСмены
ПОМЕСТИТЬ ТаблицаПромежуточная
ИЗ
	Документ.ЧекККМ КАК Док
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЧекККМ.Товары КАК ТаблицаТовары
		ПО Док.Ссылка = ТаблицаТовары.Ссылка
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
		ПО (ТаблицаТовары.Номенклатура = СпрНоменклатура.Ссылка)
ГДЕ
	НЕ Док.Ссылка В
			(ВЫБРАТЬ
				ЧЕКИ54ФЗ.Ссылка КАК Ссылка
			ИЗ
				ЧЕКИ54ФЗ КАК ЧЕКИ54ФЗ)
	И Док.ОтчетОРозничныхПродажах = &Ссылка
	И Док.Проведен
	И НЕ Док.ОперацияСДенежнымиСредствами
	И СпрНоменклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.ПодарочныйСертификат)
;
Показать
Прикрепленные файлы:
Оставьте свое сообщение

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