Решено: ошибка при выполнении обмена между
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С – обращайтесь к нам.