|
Ошибка в обработчике "Перед загрузкой объекта"
| ☑ |
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
|
(7)
|
|
10
Godofsin
15.01.16
✎
06:27
|
(9) ага, а в (8)?
|
|
11
Web00001
15.01.16
✎
06:27
|
(8)
|
|
12
Godofsin
15.01.16
✎
06:28
|
(11) Млять))))
|
|
13
Godofsin
15.01.16
✎
06:31
|
(11) Ну как вариант меняться через файл и закатить отладчик на стороне приемника + поставить точки остановки во всех случаях вызова ЗаписатьИнформацибОбОшибкеЗагрузкиПКО(...)
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший