Ошибка при выполнении обмена УНФ и БП

1. Zakuskin 13.05.18 12:18 Сейчас в теме
Доброго времени суток. После одного из последний обновлений конфигурации, начала появляться ошибка при обмене между УНФ и БП:
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(4462)}: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(4328)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
	ИмяПКО                 =  СчетФактураПолученный
	ТипОбъекта             =  Счет-фактура полученный
	Объект                 =  Счет-фактура полученный ТСАС-000057 от 01.04.2018 12:00:01
	Обработчик             =  ПослеЗагрузкиОбъекта
	ОписаниеОшибки         =  Метод объекта не обнаружен (Выгрузить)
	ПозицияМодуля          =  Документ.СчетФактураПолученный.МодульМенеджера(53)
	КСообщенияОбОшибках    =  21
		ВызватьИсключение СтрокаСообщенияОбОшибке;
		ВызватьИсключение СтруктураНастроекОбмена.СтрокаСообщенияОбОшибке;
Показать


Как я понимаю, ругается он на полученые фактуры. При отмене регистрации счет-фактур полученых - обмен проходит без ошибок.
Подскажите в какую сторону копать?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
21. BabloPavel 18.05.18 12:06 Сейчас в теме +1 $m
Проблема в правилах конвертации данных.

Скорее всего у Вас не актуальные правила конвертации.
ПКО "СчетФактураПолученный" после загрузки раньше имел код

Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда

	Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
		Объект.Организация = Параметры.ОсновнаяОрганизация;
	КонецЕсли;
	
	Объект.КодСпособаПолучения = 1; //УНФ не предполагает получение СФ в электронном виде
	
	СтруктураПараметров	= Новый Структура;
	СтруктураПараметров.Вставить("Дата",                     Объект.Дата);
	СтруктураПараметров.Вставить("ВидСчетаФактуры",          Объект.ВидСчетаФактуры);
	СтруктураПараметров.Вставить("Исправление",              Объект.Исправление);
	СтруктураПараметров.Вставить("ВидДоговора",              ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
		Объект.ДоговорКонтрагента, "ВидДоговора"));
	СтруктураПараметров.Вставить("СчетФактураБезНДС",        Объект.СчетФактураБезНДС);
	СтруктураПараметров.Вставить("КодВидаОперации",          Объект.КодВидаОперации);
	СтруктураПараметров.Вставить("КодВидаОперацииОснования", Неопределено);
	СтруктураПараметров.Вставить("ДокументыОснования",       Объект.ДокументыОснования.Выгрузить(,"ДокументОснование"));
	
	Объект.КодВидаОперации = Документы.СчетФактураПолученный.ПолучитьКодВидаОперации(СтруктураПараметров);
	Объект.КодСпособаПолучения = 1;
	
	Выполнить(Алгоритмы.ОбработатьДоговорКонтрагента);
	
КонецЕсли;
Показать


Актуальный фрагмент указанного участка

Попытка
	Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда
		
		Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
			Объект.Организация = Параметры.ОсновнаяОрганизация;
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(Объект.КодВидаОперации) Тогда
			Объект.КодВидаОперации = Документы.СчетФактураПолученный.ПолучитьКодВидаОперации(Объект);
			Если НЕ ЗначениеЗаполнено(Объект.КодВидаОперации) Тогда
				Объект.КодВидаОперации = "01";
			КонецЕсли;
		КонецЕсли;
		
		Объект.КодСпособаПолучения = 1;
		
		Выполнить(Алгоритмы.ОбработатьДоговорКонтрагента);
		
	КонецЕсли;
Исключение
КонецПопытки;
Показать


В старых редакция правил в процедуру СчетФактураПолученный.ПолучитьКодВидаОперации отправляется структура, где ДокументыОснования является таблицей значений и не имеет метод Выгрузить, а в текущем идет Объект и ДокументыОснования уже табличная часть.

Решение: Править правила если они измененные или обновить на актуальные.
user705522_constantin_h; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. MaxS 2854 14.05.18 12:16 Сейчас в теме
(1)
Подскажите в какую сторону копать?

в эту:
ПозицияМодуля          =  Документ.СчетФактураПолученный.МодульМенеджера(53)

Вероятно что-то недозагружено - какой-нибудь справочник или документ основание.
3. Zakuskin 14.05.18 12:54 Сейчас в теме
(2)
Вероятно что-то недозагружено - какой-нибудь справочник или документ основание.

Все документы и справочники перегружаются полностью, если отменить регистрацию счет-фактур полученных
4. lefthander 14.05.18 13:01 Сейчас в теме
(1)Все ли версии конфигураций последние? Обычно такое бывает когда разработчик меняет объекты, или переносит методы из одного модуля в другой, а правила не изменяет.
Если что то обновляли, проверьте, в 53 строке модуля менеджера СФ полученный должен быть метод Выгрузить, вот теперь его там нет. и посмотрите тоже в предыдущей версии, можно в новой версии поискать куда его перенесли.
5. Zakuskin 14.05.18 13:19 Сейчас в теме
(4)
Если что то обновляли, проверьте, в 53 строке модуля менеджера СФ полученный должен быть метод Выгрузить, вот теперь его там нет. и посмотрите тоже в предыдущей версии, можно в новой версии поискать куда его перенесли.

53 строка модуля менеджера сф полученной:
ДокументыОснования = Параметры.ДокументыОснования.Выгрузить(,"ДокументОснование");


Процедура, в которой содержится эта строка:
Функция ПолучитьКодВидаОперации(Параметры) Экспорт
	
	КодВидаОперации = "";
	
	ПараметрыОпределенияКВО = НовыйПараметрыОпределенияКВО();
	ЗаполнитьЗначенияСвойств(ПараметрыОпределенияКВО, Параметры);
	
	Если НЕ УчетНДСПереопределяемый.ИспользуетсяПостановлениеНДС1137(ПараметрыОпределенияКВО.Дата) Тогда
		Возврат КодВидаОперации;
	КонецЕсли;
	
	ДокументыОснования = Параметры.ДокументыОснования.Выгрузить(,"ДокументОснование");
	
	ВерсияКодовВидовОпераций = УчетНДСКлиентСервер.ВерсияКодовВидовОпераций(ПараметрыОпределенияКВО.Дата);
	
	Если ПараметрыОпределенияКВО.НДСПоСтавкам4и2
	   И ВерсияКодовВидовОпераций < 3 Тогда
		Возврат "99";
	КонецЕсли;
	
	Если ВерсияКодовВидовОпераций >= 4 И ПараметрыОпределенияКВО.НДСИсчисляетсяНалоговымАгентом Тогда
		Если ПараметрыОпределенияКВО.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.НаПоступление Тогда
			Возврат "42";
		ИначеЕсли ПараметрыОпределенияКВО.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.НаАванс Тогда
			Возврат "41";
		КонецЕсли;
	КонецЕсли;
	
	Если ПараметрыОпределенияКВО.Исправление
	 ИЛИ ПараметрыОпределенияКВО.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.Корректировочный Тогда
		// Код операции наследуется из исправляемого (корректируемого) счета-фактуры
		Если ЗначениеЗаполнено(ПараметрыОпределенияКВО.КодВидаОперацииОснования) Тогда
			Возврат УчетНДС.АктуальныйКодВидаОперации(
				ПараметрыОпределенияКВО.КодВидаОперацииОснования, ВерсияКодовВидовОпераций);
		КонецЕсли;
	КонецЕсли;
	
	Если ПараметрыОпределенияКВО.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.НаПоступление Тогда
		
		МассивКомиссияПоЗакупке = Новый Массив;

		Для Каждого СтрокаТабличнойЧасти ИЗ ДокументыОснования Цикл
			
			ТипОснования = ТипЗнч(СтрокаТабличнойЧасти.ДокументОснование);
			
			Если ТипОснования = Тип("ДокументСсылка.ОтражениеНДСКВычету")
				И ВерсияКодовВидовОпераций > 1 Тогда
				// Код операции указывается в документе
				КодВидаОперацииИзДокумента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
					СтрокаТабличнойЧасти.ДокументОснование, "КодВидаОперации");
				КодВидаОперации = УчетНДС.АктуальныйКодВидаОперации(КодВидаОперацииИзДокумента, ВерсияКодовВидовОпераций);
				Прервать;
			ИначеЕсли ВерсияКодовВидовОпераций = 3 Тогда
				// По умолчанию код "01", но необходимо проверить случай "смешанной" закупки (код 15),
				// которая может быть оформлена документом "Поступление товаров услуг".
				КодВидаОперации = "01";
				Если ТипОснования = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
					МассивКомиссияПоЗакупке.Добавить(СтрокаТабличнойЧасти.ДокументОснование);
				Иначе
					МассивКомиссияПоЗакупке.Очистить();
					Прервать;
				КонецЕсли;
			// Коды операций до 1 июля 2016 года.
			ИначеЕсли ТипОснования = Тип("ДокументСсылка.ВозвратТоваровОтПокупателя")
				ИЛИ ПараметрыОпределенияКВО.ВозвратЧерезКомиссионера Тогда
				КодВидаОперации = "03";
			ИначеЕсли ТипОснования = Тип("ДокументСсылка.ОтчетКомитентуОПродажах") Тогда
				КодВидаОперации = "04";
			ИначеЕсли ТипОснования = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
				МассивКомиссияПоЗакупке.Добавить(СтрокаТабличнойЧасти.ДокументОснование);
			КонецЕсли;
			
		КонецЦикла;
		
		Если МассивКомиссияПоЗакупке.Количество() > 0 Тогда
			
			СчетаУчетаКомиссионногоТовара = Новый Массив;
			СчетаУчетаКомиссионногоТовара.Добавить(ПланыСчетов.Хозрасчетный.ТМЦпринятыеНаОтветственноеХранение);
			
			Запрос = Новый Запрос;
			Запрос.УстановитьПараметр("ДокументыОснования", МассивКомиссияПоЗакупке);
			Запрос.УстановитьПараметр("СчетаУчетаКомиссионногоТовара", СчетаУчетаКомиссионногоТовара);
			Запрос.Текст = ТекстЗапросаКВОКомиссияПоЗакупке();
			
			Результат = Запрос.Выполнить();
			Если НЕ Результат.Пустой() Тогда
				Выборка = Результат.Выбрать();
				Если Выборка.Следующий() Тогда
					Если Выборка.ЕстьСобственныеТоварыИУслуги > 0
						И Выборка.ЕстьКомиссионныеТоварыИУслуги > 0 Тогда
						КодВидаОперации = ?(ВерсияКодовВидовОпераций < 3, "01;04", "15");
					ИначеЕсли ВерсияКодовВидовОпераций < 3 И Выборка.ЕстьКомиссионныеТоварыИУслуги > 0 Тогда 
						КодВидаОперации = "04";
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
		
	ИначеЕсли ВерсияКодовВидовОпераций = 3 Тогда 
		Если ПараметрыОпределенияКВО.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.НаАванс
		 ИЛИ ПараметрыОпределенияКВО.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.НаАвансКомитента Тогда
			КодВидаОперации = "02";
		КонецЕсли;
	// Коды операций до 1 июля 2016 года
	ИначеЕсли ПараметрыОпределенияКВО.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.НаАванс Тогда
		Если ДокументыОснования.Количество() > 0
			И ТипЗнч(ДокументыОснования[0].ДокументОснование) = Тип("ДокументСсылка.ОтчетКомитентуОПродажах") Тогда
			КодВидаОперации = "05";
		Иначе
			КодВидаОперации = "02";
		КонецЕсли;
	ИначеЕсли ПараметрыОпределенияКВО.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыПолученного.НаАвансКомитента Тогда
		КодВидаОперации = "05";
	Иначе
		Для Каждого СтрокаТабличнойЧасти ИЗ ДокументыОснования Цикл
			Если ТипЗнч(СтрокаТабличнойЧасти.ДокументОснование) = Тип("ДокументСсылка.ОтчетКомитентуОПродажах") Тогда
				КодВидаОперации = "04";
				Прервать;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(КодВидаОперации) Тогда
		КодВидаОперации = "01";
	КонецЕсли;
	
	Возврат КодВидаОперации;
	
КонецФункции
Показать
6. lefthander 14.05.18 13:25 Сейчас в теме
(5) Это понятно. Посмотрите - Параметры.ДокументыОснования - вот здесь должен быть метод Выгрузить с признаком Экспорт
7. Zakuskin 15.05.18 11:46 Сейчас в теме
(6)
(5) Это понятно. Посмотрите - Параметры.ДокументыОснования - вот здесь должен быть метод Выгрузить с признаком Экспорт

А можно подробнее (для чайников) где посмотреть?
8. lefthander 15.05.18 21:04 Сейчас в теме
(7)В конфигурации, в отладчике.
9. Zakuskin 16.05.18 06:16 Сейчас в теме
(8)Ну это я догадался:) Где это может быть
Параметры.ДокументыОснования
?
10. evakuzmina 16.05.18 08:41 Сейчас в теме
(9)Смогли решить проблему?
Столкнулись с такой же проблемой, не можем пока решить.
11. lefthander 16.05.18 09:31 Сейчас в теме
(9)Документы основания - это табличная часть некоторых документов, в том числе и Поступление Товаров и Услуг СФПолученной.
Смысл данной строки - из таблицы значений Документы основания выгрузить колонку с именем Документы основания.
Когда возникает ошибка метод не обнаружен -это означает что в параметре под ДокументыОснования НЕ таблицазначений, там что то, что не имеет метода Выгрузить.
Вот вам и надо посмотреть что именно передается в Параметр.ДокументыОснования.
По идее в режиме отладки ставите точку останова на эту строчку и начинаете загрузку, точка сработает и посмотрите что передается в Параметр.ДокументыОснования, подозреваю все что угодно, но не таблицаЗначений.
12. Zakuskin 16.05.18 10:35 Сейчас в теме
(11)
что именно передается в Параметр.ДокументыОснования

ТаблицаЗначений с типом ТаблицаЗначений
13. lefthander 16.05.18 12:24 Сейчас в теме
(12)Ладно, начнем сначала. Правила обмена Вы сами писали? Или используете типовые?
Версия УНФ и Бух?
14. Zakuskin 16.05.18 12:42 Сейчас в теме
(13) БП 3.0.60.59, УНФ 1.6.13.60 Платформа 8.3.12.1412
Настраивал обмен и правила специалист, до которого теперь невозможно дозвониться, по этому пытаемся решить вопрос своими силами, по возможности.
15. user606894_schana1w3 16.05.18 13:17 Сейчас в теме
(14)Платформу сносите(принудительный запуск) до 8.3.11.3034, на 12 у нас были подобные проблемы, предварительно обновите бухгалтерию и УНФ. Ну и пробуйте. Должно работать. У нас нет никаких ошибок при синхронизации.( это если типовые правила, если нет, то надо смотреть).
16. Zakuskin 16.05.18 13:40 Сейчас в теме
(15) Попробовал на 8.3.10.2699 и 8.3.10.2561, результат тот же
17. evakuzmina 16.05.18 14:05 Сейчас в теме
(13) У нас такая же проблема. Это же ошибка при выгрузке счетов-фактур как полученных, так и выданных.
В правилах обмена вообще закоментировали обращение к процедуре ПолучитьКодВидаОперации(), где происходит эта ошибка, не помогло.
18. Zakuskin 16.05.18 14:13 Сейчас в теме
(17) У нас выданные сф переносятся, только на полученных вылезает ошибка
19. Zakuskin 17.05.18 11:34 Сейчас в теме
(17)У Вас какая версия платформы?
20. evakuzmina 17.05.18 12:05 Сейчас в теме
(19) 8.3.10 какая то там. Сегодня напишу в партнерский форум.
21. BabloPavel 18.05.18 12:06 Сейчас в теме +1 $m
Проблема в правилах конвертации данных.

Скорее всего у Вас не актуальные правила конвертации.
ПКО "СчетФактураПолученный" после загрузки раньше имел код

Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда

	Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
		Объект.Организация = Параметры.ОсновнаяОрганизация;
	КонецЕсли;
	
	Объект.КодСпособаПолучения = 1; //УНФ не предполагает получение СФ в электронном виде
	
	СтруктураПараметров	= Новый Структура;
	СтруктураПараметров.Вставить("Дата",                     Объект.Дата);
	СтруктураПараметров.Вставить("ВидСчетаФактуры",          Объект.ВидСчетаФактуры);
	СтруктураПараметров.Вставить("Исправление",              Объект.Исправление);
	СтруктураПараметров.Вставить("ВидДоговора",              ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
		Объект.ДоговорКонтрагента, "ВидДоговора"));
	СтруктураПараметров.Вставить("СчетФактураБезНДС",        Объект.СчетФактураБезНДС);
	СтруктураПараметров.Вставить("КодВидаОперации",          Объект.КодВидаОперации);
	СтруктураПараметров.Вставить("КодВидаОперацииОснования", Неопределено);
	СтруктураПараметров.Вставить("ДокументыОснования",       Объект.ДокументыОснования.Выгрузить(,"ДокументОснование"));
	
	Объект.КодВидаОперации = Документы.СчетФактураПолученный.ПолучитьКодВидаОперации(СтруктураПараметров);
	Объект.КодСпособаПолучения = 1;
	
	Выполнить(Алгоритмы.ОбработатьДоговорКонтрагента);
	
КонецЕсли;
Показать


Актуальный фрагмент указанного участка

Попытка
	Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда
		
		Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
			Объект.Организация = Параметры.ОсновнаяОрганизация;
		КонецЕсли;
		
		Если НЕ ЗначениеЗаполнено(Объект.КодВидаОперации) Тогда
			Объект.КодВидаОперации = Документы.СчетФактураПолученный.ПолучитьКодВидаОперации(Объект);
			Если НЕ ЗначениеЗаполнено(Объект.КодВидаОперации) Тогда
				Объект.КодВидаОперации = "01";
			КонецЕсли;
		КонецЕсли;
		
		Объект.КодСпособаПолучения = 1;
		
		Выполнить(Алгоритмы.ОбработатьДоговорКонтрагента);
		
	КонецЕсли;
Исключение
КонецПопытки;
Показать


В старых редакция правил в процедуру СчетФактураПолученный.ПолучитьКодВидаОперации отправляется структура, где ДокументыОснования является таблицей значений и не имеет метод Выгрузить, а в текущем идет Объект и ДокументыОснования уже табличная часть.

Решение: Править правила если они измененные или обновить на актуальные.
user705522_constantin_h; +1 Ответить
22. Zakuskin 22.05.18 09:27 Сейчас в теме
(21)
Решение: Править правила если они измененные или обновить на актуальные.

Вопрос где их теперь найти? Есть возможность выгрузить их из программы и поправить в ручную?
23. BabloPavel 22.05.18 11:09 Сейчас в теме
(22)Правила обычно располагаются в каталоге установки обновления в соответствующих папках.

Правила для конфигурации Автосервис (1.6.13.60) с исправлением ошибкой во вложении.
Прикрепленные файлы:
Правила конвертации БП.zip
user705522_constantin_h; +1 Ответить
24. Zakuskin 22.05.18 11:21 Сейчас в теме
(23) Правила не типовые, самописные, где их сохранили и откуда загружали - неизвестно. Специалист, который этим занимался - не выходит на связь.
25. BabloPavel 22.05.18 11:49 Сейчас в теме
(24)У Вас конфигурация УНФ или отраслевое решение на базе УНФ? И релиз бы желательно знать.

1) Из БП выгрузить правила. Должен получить архив с 3-мя файлами.
2) В файле "CorrespondentExchangeRules.xml" найти и заменить фрагмент вышеуказанного кода на корректный. (любой текстовый редактор)
3) Сохранить файл. Создать zip архив из 3-х файлов и загрузить в БП обратно.
26. Zakuskin 22.05.18 13:04 Сейчас в теме
(25)
У Вас конфигурация УНФ или отраслевое решение на базе УНФ? И релиз бы желательно знать.

Отраслевое, Автосервис (1.6.13.60)
27. BabloPavel 22.05.18 13:32 Сейчас в теме
(26) 23.05 обещают новый релиз и в поставке возможно будут уже исправленные правила, но все равно их потребуется загрузить в БП.
Так же у меня нету уверенности, что Ваши правила конвертации менялись. В любом случае выгрузка правил из БП и замена фрагмента не актуального кода не приведет к повреждению остальных изменений правил конвертации.
Как не крути от загрузки свежих правил не куда не деться. Сейчас можно только установить заплатку. Надеюсь до автора Вашей настройки достучитесь.
28. Zakuskin 22.05.18 14:07 Сейчас в теме
(25)
В файле "CorrespondentExchangeRules.xml" найти и заменить фрагмент вышеуказанного кода на корректный

Ошибка повторилась
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(4462)}: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(4328)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
	ИмяПКО                 =  СчетФактураПолученный
	ТипОбъекта             =  Счет-фактура полученный
	Объект                 =  Счет-фактура полученный ТСАС-000093 от 07.05.2018 14:15:21
	Обработчик             =  ПослеЗагрузкиОбъекта
	ОписаниеОшибки         =  Метод объекта не обнаружен (Выгрузить)
	ПозицияМодуля          =  Документ.СчетФактураПолученный.МодульМенеджера(53)
	КСообщенияОбОшибках    =  21
		ВызватьИсключение СтрокаСообщенияОбОшибке;
		ВызватьИсключение СтруктураНастроекОбмена.СтрокаСообщенияОбОшибке;
Показать
29. BabloPavel 22.05.18 15:28 Сейчас в теме
(28) Отправте мне архив ваших правил.
30. Zakuskin 23.05.18 05:33 Сейчас в теме
31. BabloPavel 23.05.18 09:51 Сейчас в теме
(30)Немножко промазали. Корректировку внесли для сф выданной, а не полученной. Исправил.
Прикрепленные файлы:
Правила конвертации.zip
user705522_constantin_h; +1 Ответить
32. Zakuskin 24.05.18 06:58 Сейчас в теме
(31)Помогло. Огромное спасибо
Оставьте свое сообщение

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