Решено: ошибка при выполнении обмена между
1С:Розница и 1С:Бухгалтерия предприятия

Проблема: ошибка при выполнении обмена между 1С:Розница и 1С:Бухгалтерия предприятия:

				
					Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
{ОбщийМодуль.ОбщегоНазначения.Модуль(6158)}:Возврат Вычислить(Выражение);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(7895)}:Значение  = ОбщегоНазначения.ВычислитьВБезопасномРежиме(Выражение);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(8937)}:ЗначениеСвойства = ПрочитатьСвойство(ТипСвойства,,, ИмяПКО);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9158)}:УстановитьСвойстваКоллекцииФайлаОбмена(Объект, КоллекцияФайлаОбмена, ИнформацияОТипах, ПараметрыОбъекта, НомерЗаписи, ИмяТабличнойЧасти, ИмяПоляСортировки);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9028)}:ЗаполнитьКоллекциюФайлаОбмена(Объект, КоллекцияФайлаОбмена, ИмяТабличнойЧасти, ОбщаяИнформацияОТипеДокумента, ПараметрыОбъекта, МассивКлючевыхПолейПоиска, ИмяПоляСортировки);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10655)}:ЗагрузитьТабличнуюЧасть(Объект, Имя, ИнформацияОТипах, ПараметрыОбъекта, Правило);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(16252)}:ПоследнийОбъектЗагрузки = ПрочитатьОбъект();
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(2423)}:ПроизвестиЧтениеДанных(ЧтениеСообщения);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(5208)}:ОбработкаОбменаДаннымиXML.ВыполнитьЗагрузкуДанных();
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(9150)}:ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СообщениеОбмена, , ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(391)}:ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена, ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(9492)}:ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(41)}:ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(6016)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1819)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1780)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ПараметрыВыполнения);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
по причине:
{<Неизвестный модуль>(1,1)}: Ожидается выражение
[ОшибкаКомпиляцииВстроенногоЯзыка]
				
			

Расследование: на тестовом контуре поставили “Остановка по ошибке”, включили автоматическое подключение фоновых заданий при отладке, в тестовый контур попытались загрузить файл обмена, выгруженный с рабочего контура.

В результате расследования выяснилось, что проблема в данном месте файла обмена “<Выражение/>”

				
					<ТабличнаяЧасть Имя="Возвраты"/><ТабличнаяЧасть Имя="ВозвратОплаты">
	<Запись>
		<Свойство Имя="ВидОплаты" Тип="СправочникСсылка.ВидыОплатОрганизаций">
			<Выражение>ПсевдоПредопределенные_3с.Получить("Справочники.ВидыОплатОрганизаций.ОплатаПлатежнойКартой")</Выражение>
		</Свойство>
		<Свойство Имя="СуммаОплаты" Тип="Число">
			<Выражение/>
		</Свойство>
	</Запись>
</ТабличнаяЧасть>
				
			

Оказалось, проблему вызывает код в правиле конвертации группы свойств, в событии “Перед обработкой”:

				
					ОплатаПлатежнымиКартами = КоллекцияОбъектов.Добавить();
ОплатаПлатежнымиКартами.ВидОплаты = "ПсевдоПредопределенные_3с.Получить(""Справочники.ВидыОплатОрганизаций.ОплатаПлатежнойКартой"")";
ОплатаПлатежнымиКартами.СуммаОплаты = СуммаОплатыИзЗапроса;
				
			

Переменная СуммаОплатыИзЗапроса была типа NULL или Неопределено.

Внесли исправление:

				
					Если ЗначениеЗаполнено(СуммаОплатыИзЗапроса) Тогда
	// в противном случае крашилось при загрузке с ошибкой {<Неизвестный модуль>(1,1)}: Ожидается выражение
	ОплатаПлатежнымиКартами = КоллекцияОбъектов.Добавить();
	ОплатаПлатежнымиКартами.ВидОплаты = "ПсевдоПредопределенные_3с.Получить(""Справочники.ВидыОплатОрганизаций.ОплатаПлатежнойКартой"")";
	ОплатаПлатежнымиКартами.СуммаОплаты = СуммаОплатыИзЗапроса;
КонецЕсли;
				
			

Задача решена! Будем рады, если данное решение оказалось вам полезно, и вы оставите отзыв на Яндекс.Картах о нас.

А если вам нужен аутсорс 1С – обращайтесь к нам.