обмен УТ 10.3 БП 3.0

Новая тема
Показывать по сообщений
УТ 10.3.35.1
БП 3.0.43.52
правила обмена в УТ загружены из комплекта обновления БП,


после обновления на эти релизы при обмене:

Ошибка в обработчике события ПослеЗагрузкиОбъекта
ИмяПКО = Контрагенты
ТипОбъекта = Контрагент
Объект = "..."
Обработчик = ПослеЗагрузкиОбъекта
ОписаниеОшибки = Получение элемента по индексу для значения не определено


в чем может быть проблема?

код из обработчика:
Если Не Объект.ЭтоГруппа И Не ЗначениеЗаполнено(Объект.СтранаРегистрации) Тогда
Объект.СтранаРегистрации = ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.СтраныМира.Россия");
КонецЕсли;

Если Объект.ИсторияКПП.Количество() = 1 Тогда
// Если запись в истории КПП одна, то считается, что изменений нет
// и значение КПП нужно определять из данных объекта.
Объект.ИсторияКПП.Очистить();
ИначеЕсли Объект.ИсторияКПП.Количество() > 1 Тогда
// Первая запись в истории должна иметь пустую дату
Объект.ИсторияКПП.Сортировать("Период");
Объект.ИсторияКПП[0].Период = '00010101';

// Последняя запись в истории всегда должна соответствовать КПП в объекте
Справочники.Контрагенты.УстановитьАктуальноеЗначениеИсторииКПП(Объект.КПП, Объект.ИсторияКПП);
КонецЕсли;

РаботаСДоговорамиКонтрагентовБП.УстановитьОсновнойДоговорКонтрагента(ПараметрыОбъекта["ОсновнойДоговорКонтрагента"]);
Ответили: пост #2
Ответ на пост №1
MaryS, у всех контрагентов введен КПП (в бухгалтерии)?
существующий обмен пока не трогаем,
в УТ в Дек2015 г. появилось новое юр.лицо, сейчас в Янв2016 разворачиваю пустую БП 3.0 и из УТ в БП настраиваю совсем новый обмен, соответственно контрагентов в бухгалтерии еще вообще нет


пока в правилах закоментировала последнюю строку:
РаботаСДоговорамиКонтрагентовБП.УстановитьОсновнойДоговорКонтрагента(ПараметрыОбъекта["ОсновнойДоговорКонтрагента"]);

и обмен пошел
а вот обмен, который уже существовал такие ошибки дает:

при получении данных из УТ:
{ОбщийМодуль.ОбменДаннымиСобытия.Модуль(3321)}: Значение не является значением объектного типа (Метаданные)
      Если Отправитель.Метаданные().РаспределеннаяИнформационнаяБаза Тогда

и
Не удалось загрузить данные из "%1" (этап анализа данных).


т.е. он совсем перестал работать.
обмен настроен через промежуточный файл (не прямым подключением),
из УТ все выгружается без проблем,
при загрузке в БП выходят две ошибки, которые чуть выше напечала

что же могло произойти, в какую сторону смотреть?????
Ответили: пост #5 , пост #7 , пост #12
Ответ на пост №4
MaryS, В первую очередь стоит проверить версии правил конвертации и регистрации и в УТ и в Бух-е. В идеале они, если типовые,перекрестно должны совпадать с версиями конфигураций например (см. скрин). Само собой, протестить обе БД. При необходимости еще раз обновить их.

Не поможет - дальше - смотреть в списке значения по ошибке:

ИмяПКО = Контрагенты
ТипОбъекта = Контрагент
Объект = "..."
Обработчик = ПослеЗагрузкиОбъекта
ОписаниеОшибки = Получение элемента по индексу для значения не определено  

возможно в УТ и/или Бух есть безымянные контрагенты или бесхозные договора или незаполненные реквизиты, или подобный косяк типа того, и учитывая эффект от коммента:

РаботаСДоговорамиКонтрагентовБП.УстановитьОсновнойДоговорКонтрагента(ПараметрыОбъекта["ОсновнойДоговорКонтрагента"]);  

особо обратить внимание на этот реквизит. ОсновнойДоговорКонтрагента

В списке с реквизитами иногда их хорошо видно - или в стандартном, или отчет какой быстренько сделать или обработкой ГрупповаяОбработкаСправочниковИДокументов - все подойдет.

Несколько сложнее и не всегда дает результат, но как вариант, целевым образом иногда помогает - в отладке, при синхронизации найти значение, которое блочит обмен, например через попытку, возможно станет понятно так, где косяк в данных, если он есть. При этом отрицательный результат - это уже отсыл к правилам. (Понятно, нужно умение пользоваться отладкой, конфигуратором и эл. знание языка, XML и понятия о правилах)

Более продвинутый вариант: В конфигурации "конвертация" загрузить МД УТ и Бух, подсунуть правила и посмотреть, нет ли в них косяков при конвертации объектов, особенно где Вам выкидывает ошибки.

Метод небыстрый, непростой, требует квалификации, достаточной для написания правил, но это - почти последняя инстанция перед веревкой )
Ответили: пост #6
Ответ на пост №5
Хрюша,
правила идентичны.

по поводу ОсновногоДоговора, да Вы правы он есть не у всех Контрагентов, а почему? а потому что в базе УТ два юр.лица, Основной Договор у Контрагента только один, да и не могут оба юр.лица одновременно работать со 100% Контрагентами, так что правила однозначно пришлось подправлять, на скорую руку, для проверки, просто комментированием строки, а так надо условие добавить в код в посте 1.


а по поводу поста 4 есть идеи??
по поводу ошибки:
при получении данных из УТ:
{ОбщийМодуль.ОбменДаннымиСобытия.Модуль(3321)}: Значение не является значением объектного типа (Метаданные)
      Если Отправитель.Метаданные().РаспределеннаяИнформационнаяБаза Тогда
и
Не удалось загрузить данные из "%1" (этап анализа данных).  
Ответ на пост №4
MaryS, на первый взгляд я бы обратил внимание вот на это:

Процедура ПроверитьНаличиеЗапретаЗагрузкиПоДате(ЭлементДанных, ПолучениеЭлемента, Знач Отправитель)

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

ОбщийМодуль.ОбменДаннымиСобытия.Модуль(3321)}: Значение не является значением объектного типа (Метаданные)

посмотреть бы в отладке, что вообще за значение прилетает там:

Отправитель.Метаданные().РаспределеннаяИнформационнаяБаза

а без этого можно только гадать, например, что сначала не было выгрузки из Бух в УТ, а оно вроде обязательно или желательно должно быть, или что то еще, ну типа звезды не так на небе... )
Ответили: пост #8
Ответ на пост №7
Хрюша,
отладчик мимо пролетает строки 3321...
как правильно пользоваться отладчиком при типовой встроенной синхронизации файловых баз? где бы прочитать, не подскажете?  
Ответили: пост #9
Ответ на пост №8
MaryS,погуглить в поисках мануала ) А вообще-то оно не сложно см. скрин:

например:
1. Открываем нужный модуль в конфигураторе
2. 2х лк мыши ставим точки останова
3. Запускаем отладку, затем в режиме 1С толстый - тонкий как получится - запускаем синхронизацию
4. Если по ходу правильно поставили точки (используется код при выполнении синхронизации в вашем случае), интерпретатор остановится на точке и на месте 4 или где то еще рядом (рамка будет панель с функциями просмотра)

5. открываем форму вычисления текущих выражений
6. вводим эту форму интересующее и правее будет кнопка вычислить
7. можно их несколько внизу в табло загнать, если надо

там есть еще несколько полезных функций, например замер производительности, ну и экзотика
самое замечательное, что в окне формы отладки 5 можно просмотреть весь объект в деталях, а также таблицы, структуры

но в данном случае интересно, что за план обмена используется, раз так косячит.
Ответили: пост #10
Ответ на пост №9
Хрюша,

так это обычное использование отладчика,
но именно при синхронизации не останавливается на точке останова на этой строке 3321, думала может есть какая необычность в отладке именно синхронизации...

а план обмена типовой,
обмен настроен из УТ 10.3 в БП3.0 через промежуточный каталог

кто настраивал, когда и как история умалчивает....

попробовала настроить новую синхронизацию с 01.01.2015 прямым подключением, прошел обмен, пару новых тестовых документов тоже попали из УТ в БП, в БП даже оборотка осталась без изменений...видимо так и останется
Читают тему

Быстрый переход