Имя: Пароль:
1C
 
Ошибка в обработчике "Перед загрузкой объекта"
,
0 Web00001
 
13.01.16
16:17
Доброго времени суток! Переношу данные УТ 10.3 -> БП3
Получаю вот такую ошибку

{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3405)}: ВНЕШНЕЕ СОЕДИНЕНИЕ: {Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(4211)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
    ИмяПКО                 =  Контрагенты
    ТипОбъекта             =  Контрагент
    Объект                 =  ЗдесьНаименованиеКонтрагента
    Обработчик             =  ПослеЗагрузкиОбъекта
    ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
    ПозицияМодуля          =  (21)
    КСообщенияОбОшибках    =  21
        ВызватьИсключение СтрокаСообщенияОбОшибке;
            ВызватьИсключение СтрокаСообщения;

Как быть? Куда копать?
1 Web00001
 
13.01.16
16:18
Ошибся в заголовке перед, а на самом деле "ПослеЗагрузкиОбъекта"
2 Cumpuciy
 
13.01.16
16:21
А текст обработчика?
3 Web00001
 
13.01.16
16:25
в обработчике только Выполнить(Алгоритмы.ЗаполнитьРеквизитыПоУмолчанию)
а в алгоритмах

Процедура ЗаполнитьРеквизитыПоУмолчанию(Объект) Экспорт

    //подставляет обязательные значения
    МетаданныеДокумента = Объект.Метаданные();
    Если Метаданные.Документы.Содержит(МетаданныеДокумента) Тогда
        
        ОбъектСодержитРеквизитОрганизация      = ОбщегоНазначения.ЕстьРеквизитОбъекта("Организация", МетаданныеДокумента);
        ОбъектСодержитРеквизитСклад            = ОбщегоНазначения.ЕстьРеквизитОбъекта("Склад", МетаданныеДокумента);
        ОбъектСодержитПодразделениеОрганизации = ОбщегоНазначения.ЕстьРеквизитОбъекта("ПодразделениеОрганизации", МетаданныеДокумента);
        
        Если ОбъектСодержитРеквизитОрганизация И НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
            Объект.Организация = Параметры.ОсновнаяОрганизация;
        КонецЕсли;
        
        Если ОбъектСодержитРеквизитСклад Тогда
            Если (НЕ ЗначениеЗаполнено(Объект.Склад)) Тогда
                Объект.Склад = Параметры.СкладДляОбменаДаннымиСУТ;
            КонецЕсли;
        КонецЕсли;
        
        // Заполнение реквизита ПодразделениеОрганизации
        Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеСРасчетногоСчета")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаРасчетныйСчет")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
            Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация Тогда
                
                Если ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеСРасчетногоСчета") Тогда
                    // Заполнение подразделения организации
                    Если ЗначениеЗаполнено(Объект.Организация)
                        И ЗначениеЗаполнено(Объект.СчетОрганизации)
                        Тогда
                        СвойстваСчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
                                            Объект.СчетОрганизации,
                                            "ПодразделениеОрганизации"
                        );
                        Объект.ПодразделениеОрганизации = СвойстваСчета.ПодразделениеОрганизации;
                    КонецЕсли;
                    
                    Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.ОплатаПоставщику")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.ВозвратПокупателю")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.ПрочиеРасчетыСКонтрагентами")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийСписаниеДенежныхСредств.РасчетыПоКредитамИЗаймам")
                        Тогда
                        Объект.ПодразделениеДт = Неопределено;
                    // {ОбособленныеПодразделения
                    Иначе
                        Объект.ПодразделениеДт = Объект.ПодразделениеОрганизации;
                    // }ОбособленныеПодразделения
                    КонецЕсли;
                ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеНаРасчетныйСчет") Тогда
                    // Заполнение подразделения организации
                    Если ЗначениеЗаполнено(Объект.Организация)
                        И ЗначениеЗаполнено(Объект.СчетОрганизации)
                        Тогда
                        СвойстваСчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
                                            Объект.СчетОрганизации,
                                            "ПодразделениеОрганизации"
                        );
                        Объект.ПодразделениеОрганизации = СвойстваСчета.ПодразделениеОрганизации;
                    КонецЕсли;
                    
                    Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ОплатаПокупателя")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ВозвратОтПоставщика")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ПрочиеРасчетыСКонтрагентами")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеДенежныхСредств.РасчетыПоКредитамИЗаймам")
                        Тогда
                        Объект.ПодразделениеКт = Неопределено;
                    // {ОбособленныеПодразделения
                    Иначе
                        Объект.ПодразделениеКт = Объект.ПодразделениеОрганизации;
                    // }ОбособленныеПодразделения
                    КонецЕсли;
                ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер") Тогда
                    ОсновноеПодразделение = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
                    Если ОсновноеПодразделение.Владелец = Объект.Организация Тогда
                        Объект.ПодразделениеОрганизации = ОсновноеПодразделение;
                    Иначе
                        Объект.ПодразделениеОрганизации = Неопределено;
                    КонецЕсли;
                    
                    Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ОплатаПокупателя")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ВозвратОтПоставщика")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ВозвратОтПодотчетногоЛица")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.ПолучениеНаличныхВБанке")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПКО.РасчетыПоКредитамИЗаймам")
                        Тогда
                        Объект.ПодразделениеКт = Неопределено;
                    // {ОбособленныеПодразделения
                    Иначе
                        Объект.ПодразделениеКт = ?(ОбъектСодержитПодразделениеОрганизации, Объект.ПодразделениеОрганизации, Неопределено);
                    // }ОбособленныеПодразделения
                    КонецЕсли;
                ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
                    ОсновноеПодразделение = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
                    Если ОсновноеПодразделение.Владелец = Объект.Организация Тогда
                        Объект.ПодразделениеОрганизации = ОсновноеПодразделение;
                    Иначе
                        Объект.ПодразделениеОрганизации = Неопределено;
                    КонецЕсли;
                    
                    Если (Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ОплатаПоставщику")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВозвратПокупателю")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыдачаПодотчетномуЛицу")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.РасчетыПоКредитамИЗаймам")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВзносНаличнымиВБанк")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыплатаДепонентов")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыплатаЗаработнойПлатыПоВедомостям")
                        ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийРКО.ВыплатаЗаработнойПлатыРаботнику"))
                    Тогда
                        Объект.ПодразделениеДт = Неопределено;
                    // {ОбособленныеПодразделения
                    Иначе
                        Объект.ПодразделениеДт = Объект.ПодразделениеОрганизации;
                    // }ОбособленныеПодразделения
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.АвансовыйОтчет")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетКомиссионераОПродажах")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетКомитентуОПродажах")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.КорректировкаДолга") Тогда
            //Выполнить процедуру ЗаполнениеДокументов.ПриИзмененииЗначенияОрганизации(ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"));
            Если ОбъектСодержитРеквизитОрганизация И ОбъектСодержитПодразделениеОрганизации
                И ЗначениеЗаполнено(Объект.Организация) Тогда
                ПодразделениеПоУмолчанию = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
                // Если ПодразделениеОрганизации не заполнено.
                Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация Тогда
                    Если НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации) Тогда
                        // Если ПодразделениеПоУмолчанию соответствует выбранной организации, подставляем его.
                        Если ПодразделениеПоУмолчанию.Владелец = Объект.Организация Тогда
                            Объект.ПодразделениеОрганизации = ПодразделениеПоУмолчанию;
                        КонецЕсли;
                    Иначе // Если ПодразделениеОрганизации заполнено.
                        // Если ПодразделениеОрганизации не соответствует выбранной организации.
                        Если НЕ Объект.ПодразделениеОрганизации.Владелец = Объект.Организация Тогда
                            // Если ПодразделениеПоУмолчанию соответствует выбранной организации, подставляем его.
                            Если ПодразделениеПоУмолчанию.Владелец = Объект.Организация Тогда
                                Объект.ПодразделениеОрганизации = ПодразделениеПоУмолчанию;
                            Иначе // Выбрана не основная организация. ПодразделениеОрганизации нужно очистить.
                                Объект.ПодразделениеОрганизации = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();
                            КонецЕсли;
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли
            КонецЕсли;
        ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ГТДИмпорт") Тогда
            // Выполнить процедуру ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект);
            Если ОбъектСодержитРеквизитОрганизация
                И ЗначениеЗаполнено(Объект.Организация)
                И ОбъектСодержитПодразделениеОрганизации
                И (НЕ ЗначениеЗаполнено(Объект.ПодразделениеОрганизации)) Тогда
                
                ПодразделениеОрганизации = ОбщегоНазначенияБПВызовСервера.ПолучитьЗначениеПоУмолчанию("ОсновноеПодразделениеОрганизации");
                
                Если ЗначениеЗаполнено(ПодразделениеОрганизации) И ПодразделениеОрганизации.Владелец = Объект.Организация Тогда
                    Объект.ПодразделениеОрганизации = ПодразделениеОрганизации;
                КонецЕсли;
            КонецЕсли;
        ИначеЕсли ТипЗнч(Объект) = Тип("ДокументОбъект.ВозвратТоваровОтПокупателя")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ВозвратТоваровПоставщику")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОприходованиеТоваров")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ОтчетОРозничныхПродажах")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.РеализацияТоваровУслуг")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.СписаниеТоваров")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ТребованиеНакладная")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.КомплектацияНоменклатуры")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.СчетНаОплатуПокупателю")
            ИЛИ ТипЗнч(Объект) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
            
            Если ТипЗнч(Объект) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
                Если ОбщегоНазначения.ЕстьРеквизитОбъекта("ПодразделениеОтправитель", МетаданныеДокумента) Тогда
                    Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.СкладОтправитель <> Объект.СкладОтправитель Тогда
                        Объект.ПодразделениеОтправитель = ОбщегоНазначенияБПВызовСервера.ПолучитьПодразделение(Объект.Организация, Объект.СкладОтправитель);
                    КонецЕсли;
                КонецЕсли;
                Если ОбщегоНазначения.ЕстьРеквизитОбъекта("ПодразделениеПолучатель", МетаданныеДокумента) Тогда
                    Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.СкладПолучатель <> Объект.СкладПолучатель Тогда
                        Объект.ПодразделениеПолучатель = ОбщегоНазначенияБПВызовСервера.ПолучитьПодразделение(Объект.Организация, Объект.СкладПолучатель);
                    КонецЕсли;
                КонецЕсли;
            Иначе
                Если ОбъектСодержитРеквизитОрганизация
                    И ОбъектСодержитРеквизитСклад
                    И ОбъектСодержитПодразделениеОрганизации
                    Тогда
                    Если Объект.ЭтоНовый() ИЛИ Объект.Ссылка.Организация <> Объект.Организация ИЛИ Объект.Ссылка.Склад <> Объект.Склад Тогда
                        Объект.ПодразделениеОрганизации = ОбщегоНазначенияБПВызовСервера.ПолучитьПодразделение(Объект.Организация, Объект.Склад);
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры

4 Web00001
 
15.01.16
04:17
Взял новую бухг. Настроил новую синхронизацию. Последний релиз УТ10.3 и последний релиз БУХ3. Ситуация не изменилась. Ошибка один в один. Как я понял проблема в договорах. Если убрать все договора у контрагента, проблема уходит. Никто не видел решения подобной проблемы? Все должно работать же из коробки синхронизация торговли и БП. Все типовое.
5 Godofsin
 
15.01.16
05:06
Ну отладчиком же можно воспользоваться.
6 Web00001
 
15.01.16
05:47
(5)Воспользовался. В какой момент происходит ошибка присвоения по индексу по коду сказать невозможно. Сама ошибка появляется в момент перед записью данных в файл при проверке флага "ЕстьОшибки". Что делать?
7 Godofsin
 
15.01.16
05:52
(6) А что в этой строке? Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(3405)
8 Godofsin
 
15.01.16
05:55
ив этой: Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(4211) на стороне приемника
9 Web00001
 
15.01.16
06:25
10 Godofsin
 
15.01.16
06:27
(9) ага, а в (8)?
11 Web00001
 
15.01.16
06:27
12 Godofsin
 
15.01.16
06:28
(11) Млять))))
13 Godofsin
 
15.01.16
06:31
(11) Ну как вариант меняться через файл и закатить отладчик на стороне приемника + поставить точки остановки во всех случаях вызова ЗаписатьИнформацибОбОшибкеЗагрузкиПКО(...)