Где же ты прячешься, Таблица Значений?

При штатной загрузке данных в заказ из табличного документа не грузит, выдает ошибку:

Ошибка при вызове метода контекста (СопоставлениеДанныхТабличногоДокументаНаСервере)
{Обработка.ЗагрузкаДанныхИзВнешнегоИсточника.Форма.ПомощникЗагрузкиДанныхИзВнешнегоИсточника.Форма(2872)}:СопоставлениеДанныхТабличногоДокументаНаСервере();
{(1)}:Подключаемый_СтраницаСопоставлениеДанных_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее)
{Обработка.ЗагрузкаДанныхИзВнешнегоИсточника.Форма.ПомощникЗагрузкиДанныхИзВнешнегоИсточника.Форма(2678)}:А = Вычислить(ИмяПроцедуры);

по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: v	Форма: Элемент	Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: Value	Форма: Элемент	Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'

Ошибка происходит где-то в процедуре СопоставлениеДанныхТабличногоДокументаНаСервере, но где именно, ведь там же нет никакого обращения к реквизитам формы:

Где в этом типовом коде обращение к реквизитам?

&НаСервере
Процедура СопоставлениеДанныхТабличногоДокументаНаСервере()
	
	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
	ПараметрыВыполнения.ЗапуститьВФоне = Истина;
	ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Сопоставление внешних данных и данных нашей программы'");
	Если Параметры.НастройкиЗагрузкиДанных.ЭтоЗагрузкаСправочника
		И Параметры.НастройкиЗагрузкиДанных.ПолноеИмяОбъектаЗаполнения = "Справочник.Номенклатура" Тогда
		ПараметрыВыполнения.Вставить("ДополнительныйРезультат", Истина);
	КонецЕсли;
	
	ПараметрыПроцедуры = Новый Структура;
	ПараметрыПроцедуры.Вставить("ТаблицаСопоставленияДанных", ТаблицаСопоставленияДанных.Выгрузить());
	ПараметрыПроцедуры.Вставить("НастройкиЗагрузкиДанных", Параметры.НастройкиЗагрузкиДанных);
	
	ОбъектЗагрузки = ЗагрузкаДанныхИзВнешнегоИсточника.ОбъектЗагрузкиПоПолномуИмени(Параметры.НастройкиЗагрузкиДанных.ПолноеИмяОбъектаЗаполнения);
	ИмяМетодаДлительнойОперации = СтрШаблон("%1.%2.СопоставитьЗагружаемыеДанныеИзВнешнегоИсточника", СокрЛП(ОбъектЗагрузки.ОбъектЗагрузки.Родитель.Имя), СокрЛП(ОбъектЗагрузки.ОбъектЗагрузки.Имя));
	ФоновоеЗаданиеРезультатФормирования = ДлительныеОперации.ВыполнитьВФоне(ИмяМетодаДлительнойОперации, ПараметрыПроцедуры, ПараметрыВыполнения);
	
	ФоновоеЗаданиеИдентификатор = ФоновоеЗаданиеРезультатФормирования.ИдентификаторЗадания;
	ФоновоеЗаданиеАдресХранилища = ФоновоеЗаданиеРезультатФормирования.АдресРезультата;
	ФоновоеЗаданиеАдресДополнительногоХранилища = ФоновоеЗаданиеРезультатФормирования.АдресДополнительногоРезультата;
	
КонецПроцедуры

Однако если суслика не видно, это не значит, что его нет. Есть еще параметры формы и код сохраняет там таблицу значений, забывая ее удалить на выходе:

Расширение по корректировке этой проблемы получается несложным, на форму ПомощникЗагрузкиДанныхИзВнешнегоИсточника обработки ЗагрузкаДанныхИзВнешнегоИсточника:


&НаСервере
&Вместо("СопоставлениеДанныхТабличногоДокументаНаСервере")
Процедура ТР_СопоставлениеДанныхТабличногоДокументаНаСервере()
	// Вставить содержимое метода.
	ПродолжитьВызов();
	Попытка     
		ЭтаФорма.Параметры.НастройкиЗагрузкиДанных.НастройкиПоиска.Удалить("ТаблицаДублирующихСтрок");
	Исключение
	КонецПопытки;
КонецПроцедуры

Проверяем, ставим точку останова на строке с удалением, при останове таблица есть:

После отработки удаления таблицы уже нет:

После этого обработка уже без ошибки, успешно переходит на следующий этап:

Среда: УНФ 1.6.26.172 Объем: 0.8 час

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *