Ошибка при выполнении обмена УНФ и БП
Доброго времени суток. После одного из последний обновлений конфигурации, начала появляться ошибка при обмене между УНФ и БП:
Как я понимаю, ругается он на полученые фактуры. При отмене регистрации счет-фактур полученых - обмен проходит без ошибок.
Подскажите в какую сторону копать?
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(4462)}: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(4328)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
ИмяПКО = СчетФактураПолученный
ТипОбъекта = Счет-фактура полученный
Объект = Счет-фактура полученный ТСАС-000057 от 01.04.2018 12:00:01
Обработчик = ПослеЗагрузкиОбъекта
ОписаниеОшибки = Метод объекта не обнаружен (Выгрузить)
ПозицияМодуля = Документ.СчетФактураПолученный.МодульМенеджера(53)
КСообщенияОбОшибках = 21
ВызватьИсключение СтрокаСообщенияОбОшибке;
ВызватьИсключение СтруктураНастроекОбмена.СтрокаСообщенияОбОшибке;
ПоказатьКак я понимаю, ругается он на полученые фактуры. При отмене регистрации счет-фактур полученых - обмен проходит без ошибок.
Подскажите в какую сторону копать?
По теме из базы знаний
- 1С синхронизация УНФ и БП — многофункциональная выгрузка из 1С УНФ в БП2 и БП3 (соответствия товаров, контрагентов, складов, статей ДДС)
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Перенос данных из БП 3.0 в УНФ 3.0. Переносятся остатки, документы и справочная информация
- Перенос данных из УНФ 3.0 в БП 3.0. Переносятся остатки, все возможные документы и справочники
- Автоматизация производства 1С:УНФ (а может 1С:БП, 1С:КА или 1C:ERP)
Найденные решения
Проблема в правилах конвертации данных.
Скорее всего у Вас не актуальные правила конвертации.
ПКО "СчетФактураПолученный" после загрузки раньше имел код
Актуальный фрагмент указанного участка
В старых редакция правил в процедуру СчетФактураПолученный.ПолучитьКодВидаОперации отправляется структура, где ДокументыОснования является таблицей значений и не имеет метод Выгрузить, а в текущем идет Объект и ДокументыОснования уже табличная часть.
Решение: Править правила если они измененные или обновить на актуальные.
Скорее всего у Вас не актуальные правила конвертации.
ПКО "СчетФактураПолученный" после загрузки раньше имел код
Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.Организация = Параметры.ОсновнаяОрганизация;
КонецЕсли;
Объект.КодСпособаПолучения = 1; //УНФ не предполагает получение СФ в электронном виде
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Дата", Объект.Дата);
СтруктураПараметров.Вставить("ВидСчетаФактуры", Объект.ВидСчетаФактуры);
СтруктураПараметров.Вставить("Исправление", Объект.Исправление);
СтруктураПараметров.Вставить("ВидДоговора", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Объект.ДоговорКонтрагента, "ВидДоговора"));
СтруктураПараметров.Вставить("СчетФактураБезНДС", Объект.СчетФактураБезНДС);
СтруктураПараметров.Вставить("КодВидаОперации", Объект.КодВидаОперации);
СтруктураПараметров.Вставить("КодВидаОперацииОснования", Неопределено);
СтруктураПараметров.Вставить("ДокументыОснования", Объект.ДокументыОснования.Выгрузить(,"ДокументОснование"));
Объект.КодВидаОперации = Документы.СчетФактураПолученный.ПолучитьКодВидаОперации(СтруктураПараметров);
Объект.КодСпособаПолучения = 1;
Выполнить(Алгоритмы.ОбработатьДоговорКонтрагента);
КонецЕсли;
ПоказатьАктуальный фрагмент указанного участка
Попытка
Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.Организация = Параметры.ОсновнаяОрганизация;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КодВидаОперации) Тогда
Объект.КодВидаОперации = Документы.СчетФактураПолученный.ПолучитьКодВидаОперации(Объект);
Если НЕ ЗначениеЗаполнено(Объект.КодВидаОперации) Тогда
Объект.КодВидаОперации = "01";
КонецЕсли;
КонецЕсли;
Объект.КодСпособаПолучения = 1;
Выполнить(Алгоритмы.ОбработатьДоговорКонтрагента);
КонецЕсли;
Исключение
КонецПопытки;
ПоказатьВ старых редакция правил в процедуру СчетФактураПолученный.ПолучитьКодВидаОперации отправляется структура, где ДокументыОснования является таблицей значений и не имеет метод Выгрузить, а в текущем идет Объект и ДокументыОснования уже табличная часть.
Решение: Править правила если они измененные или обновить на актуальные.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)Все ли версии конфигураций последние? Обычно такое бывает когда разработчик меняет объекты, или переносит методы из одного модуля в другой, а правила не изменяет.
Если что то обновляли, проверьте, в 53 строке модуля менеджера СФ полученный должен быть метод Выгрузить, вот теперь его там нет. и посмотрите тоже в предыдущей версии, можно в новой версии поискать куда его перенесли.
Если что то обновляли, проверьте, в 53 строке модуля менеджера СФ полученный должен быть метод Выгрузить, вот теперь его там нет. и посмотрите тоже в предыдущей версии, можно в новой версии поискать куда его перенесли.
(4)
53 строка модуля менеджера сф полученной:
Процедура, в которой содержится эта строка:
Если что то обновляли, проверьте, в 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";
КонецЕсли;
Возврат КодВидаОперации;
КонецФункции
Показать
(9)Документы основания - это табличная часть некоторых документов, в том числе и Поступление Товаров и Услуг СФПолученной.
Смысл данной строки - из таблицы значений Документы основания выгрузить колонку с именем Документы основания.
Когда возникает ошибка метод не обнаружен -это означает что в параметре под ДокументыОснования НЕ таблицазначений, там что то, что не имеет метода Выгрузить.
Вот вам и надо посмотреть что именно передается в Параметр.ДокументыОснования.
По идее в режиме отладки ставите точку останова на эту строчку и начинаете загрузку, точка сработает и посмотрите что передается в Параметр.ДокументыОснования, подозреваю все что угодно, но не таблицаЗначений.
Смысл данной строки - из таблицы значений Документы основания выгрузить колонку с именем Документы основания.
Когда возникает ошибка метод не обнаружен -это означает что в параметре под ДокументыОснования НЕ таблицазначений, там что то, что не имеет метода Выгрузить.
Вот вам и надо посмотреть что именно передается в Параметр.ДокументыОснования.
По идее в режиме отладки ставите точку останова на эту строчку и начинаете загрузку, точка сработает и посмотрите что передается в Параметр.ДокументыОснования, подозреваю все что угодно, но не таблицаЗначений.
(14)Платформу сносите(принудительный запуск) до 8.3.11.3034, на 12 у нас были подобные проблемы, предварительно обновите бухгалтерию и УНФ. Ну и пробуйте. Должно работать. У нас нет никаких ошибок при синхронизации.( это если типовые правила, если нет, то надо смотреть).
Проблема в правилах конвертации данных.
Скорее всего у Вас не актуальные правила конвертации.
ПКО "СчетФактураПолученный" после загрузки раньше имел код
Актуальный фрагмент указанного участка
В старых редакция правил в процедуру СчетФактураПолученный.ПолучитьКодВидаОперации отправляется структура, где ДокументыОснования является таблицей значений и не имеет метод Выгрузить, а в текущем идет Объект и ДокументыОснования уже табличная часть.
Решение: Править правила если они измененные или обновить на актуальные.
Скорее всего у Вас не актуальные правила конвертации.
ПКО "СчетФактураПолученный" после загрузки раньше имел код
Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.Организация = Параметры.ОсновнаяОрганизация;
КонецЕсли;
Объект.КодСпособаПолучения = 1; //УНФ не предполагает получение СФ в электронном виде
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Дата", Объект.Дата);
СтруктураПараметров.Вставить("ВидСчетаФактуры", Объект.ВидСчетаФактуры);
СтруктураПараметров.Вставить("Исправление", Объект.Исправление);
СтруктураПараметров.Вставить("ВидДоговора", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Объект.ДоговорКонтрагента, "ВидДоговора"));
СтруктураПараметров.Вставить("СчетФактураБезНДС", Объект.СчетФактураБезНДС);
СтруктураПараметров.Вставить("КодВидаОперации", Объект.КодВидаОперации);
СтруктураПараметров.Вставить("КодВидаОперацииОснования", Неопределено);
СтруктураПараметров.Вставить("ДокументыОснования", Объект.ДокументыОснования.Выгрузить(,"ДокументОснование"));
Объект.КодВидаОперации = Документы.СчетФактураПолученный.ПолучитьКодВидаОперации(СтруктураПараметров);
Объект.КодСпособаПолучения = 1;
Выполнить(Алгоритмы.ОбработатьДоговорКонтрагента);
КонецЕсли;
ПоказатьАктуальный фрагмент указанного участка
Попытка
Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.Организация = Параметры.ОсновнаяОрганизация;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.КодВидаОперации) Тогда
Объект.КодВидаОперации = Документы.СчетФактураПолученный.ПолучитьКодВидаОперации(Объект);
Если НЕ ЗначениеЗаполнено(Объект.КодВидаОперации) Тогда
Объект.КодВидаОперации = "01";
КонецЕсли;
КонецЕсли;
Объект.КодСпособаПолучения = 1;
Выполнить(Алгоритмы.ОбработатьДоговорКонтрагента);
КонецЕсли;
Исключение
КонецПопытки;
ПоказатьВ старых редакция правил в процедуру СчетФактураПолученный.ПолучитьКодВидаОперации отправляется структура, где ДокументыОснования является таблицей значений и не имеет метод Выгрузить, а в текущем идет Объект и ДокументыОснования уже табличная часть.
Решение: Править правила если они измененные или обновить на актуальные.
(22)Правила обычно располагаются в каталоге установки обновления в соответствующих папках.
Правила для конфигурации Автосервис (1.6.13.60) с исправлением ошибкой во вложении.
Правила для конфигурации Автосервис (1.6.13.60) с исправлением ошибкой во вложении.
Прикрепленные файлы:
Правила конвертации БП.zip
(24)У Вас конфигурация УНФ или отраслевое решение на базе УНФ? И релиз бы желательно знать.
1) Из БП выгрузить правила. Должен получить архив с 3-мя файлами.
2) В файле "CorrespondentExchangeRules.xml" найти и заменить фрагмент вышеуказанного кода на корректный. (любой текстовый редактор)
3) Сохранить файл. Создать zip архив из 3-х файлов и загрузить в БП обратно.
1) Из БП выгрузить правила. Должен получить архив с 3-мя файлами.
2) В файле "CorrespondentExchangeRules.xml" найти и заменить фрагмент вышеуказанного кода на корректный. (любой текстовый редактор)
3) Сохранить файл. Создать zip архив из 3-х файлов и загрузить в БП обратно.
(26) 23.05 обещают новый релиз и в поставке возможно будут уже исправленные правила, но все равно их потребуется загрузить в БП.
Так же у меня нету уверенности, что Ваши правила конвертации менялись. В любом случае выгрузка правил из БП и замена фрагмента не актуального кода не приведет к повреждению остальных изменений правил конвертации.
Как не крути от загрузки свежих правил не куда не деться. Сейчас можно только установить заплатку. Надеюсь до автора Вашей настройки достучитесь.
Так же у меня нету уверенности, что Ваши правила конвертации менялись. В любом случае выгрузка правил из БП и замена фрагмента не актуального кода не приведет к повреждению остальных изменений правил конвертации.
Как не крути от загрузки свежих правил не куда не деться. Сейчас можно только установить заплатку. Надеюсь до автора Вашей настройки достучитесь.
(25)
Ошибка повторилась
В файле "CorrespondentExchangeRules.xml" найти и заменить фрагмент вышеуказанного кода на корректный
Ошибка повторилась
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(4462)}: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(4328)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
ИмяПКО = СчетФактураПолученный
ТипОбъекта = Счет-фактура полученный
Объект = Счет-фактура полученный ТСАС-000093 от 07.05.2018 14:15:21
Обработчик = ПослеЗагрузкиОбъекта
ОписаниеОшибки = Метод объекта не обнаружен (Выгрузить)
ПозицияМодуля = Документ.СчетФактураПолученный.МодульМенеджера(53)
КСообщенияОбОшибках = 21
ВызватьИсключение СтрокаСообщенияОбОшибке;
ВызватьИсключение СтруктураНастроекОбмена.СтрокаСообщенияОбОшибке;
Показать
(30)Немножко промазали. Корректировку внесли для сф выданной, а не полученной. Исправил.
Прикрепленные файлы:
Правила конвертации.zip
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот