![]() |
|
КД 2.1 обмен из ЗУП 2.5 КОРП в БП 3.0 КОРП | ☑ | ||
---|---|---|---|---|
0
inkvizitr
21.01.19
✎
09:11
|
Пишу правила обмена, обмен из ЗУП 2.5 КОРП в БП 3.0 КОРП, при загрузке в БП 3.0 КОРП возникает ошибка "Значение не является значением объектного типа (Отбор)" но при этом все выполняется как надо, привожу синтаксис модуля ПКО, событие "после загрузки", смысл его в том, что в независимом регистре добавляется новая запись, а старая удаляется. На форумах прочел, что якобы если делать отбор по измерениям регистра сведений которые не индексируются или не установлен флаг ведущие, то будет возникать такая же ошибка и отбор будет не работать, провел данный код в обработке, там все работает как часы, кто знает, в чем может быть причина?
Если ПараметрыОбъекта <> Неопределено Тогда ПереданныеПараметры = ЗначениеИзСтрокиВнутр(ПараметрыОбъекта["Уволен"]); КонецЕсли; Организация = Справочники.Организации.НайтиПоНаименованию(ПереданныеПараметры.ГоловнаяОрганизация); ФизЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(ПереданныеПараметры.ФизическоеЛицо); Если НЕ ПереданныеПараметры.СотрудникУволен Тогда //Отладка+ //Сообщить("Сотрудник уволен: " + (НЕ ПереданныеПараметры.СотрудникУволен)); //Отладка- Сообщить("Сотрудник Работает: " + (НЕ ПереданныеПараметры.СотрудникУволен)); МенеджерЗаписи = РегистрыСведений.ОсновныеСотрудникиФизическихЛиц.СоздатьМенеджерЗаписи(); МенеджерЗаписи.ГоловнаяОрганизация = Организация; МенеджерЗаписи.ФизическоеЛицо = ФизЛицо; МенеджерЗаписи.ДатаНачала = Дата(1,1,1); МенеджерЗаписи.ДатаОкончания = ПереданныеПараметры.ДатаОкончания; МенеджерЗаписи.Сотрудник = ПереданныеПараметры.Сотрудник; МенеджерЗаписи.Записать(); КонецЕсли; Если ПереданныеПараметры.СотрудникУволен Тогда //Отладка+ //Сообщить("Сотрудник уволен: " + ПереданныеПараметры.СотрудникУволен); //Отладка- НаборЗаписи = РегистрыСведений.ОсновныеСотрудникиФизическихЛиц.СоздатьНаборЗаписей(); Отбор = НаборЗаписи.Отбор; Отбор.ГоловнаяОрганизация.Установить(Организация); Отбор.ФизическоеЛицо.Установить(ФизЛицо); НаборЗаписи.Прочитать(); Для Каждого Запись Из НаборЗаписи Цикл Если ЗначениеЗаполнено(Запись.ДатаОкончания) Тогда //Отладка+ //Сообщить("Вход в условие"); //Отладка- МенеджерЗаписи = РегистрыСведений.ОсновныеСотрудникиФизическихЛиц.СоздатьМенеджерЗаписи(); МенеджерЗаписи.ГоловнаяОрганизация = Запись.ГоловнаяОрганизация; МенеджерЗаписи.ФизическоеЛицо = Запись.ФизическоеЛицо; МенеджерЗаписи.ДатаНачала = Запись.ДатаНачала; МенеджерЗаписи.ДатаОкончания= Запись.ДатаОкончания; МенеджерЗаписи.Удалить(); КонецЕсли; КонецЦикла; //Отладка+ //Сообщить("Сотрудник уволен и создана новая запись"); //Отладка- МенеджерЗаписи = РегистрыСведений.ОсновныеСотрудникиФизическихЛиц.СоздатьМенеджерЗаписи(); МенеджерЗаписи.ГоловнаяОрганизация = Организация; МенеджерЗаписи.ФизическоеЛицо = ФизЛицо; МенеджерЗаписи.ДатаНачала = ПереданныеПараметры.ДатаНачала; МенеджерЗаписи.ДатаОкончания = Дата(1,1,1); МенеджерЗаписи.Сотрудник = ПереданныеПараметры.Сотрудник; МенеджерЗаписи.Записать(); КонецЕсли |
|||
1
Ёпрст
гуру
21.01.19
✎
09:20
|
(0)
//Отбор = НаборЗаписи.Отбор; ОтборВаси = НаборЗаписи.Отбор; |
|||
2
Ёпрст
гуру
21.01.19
✎
09:21
|
ну и менеджерзаписи там не нужен, ни для добавления, ни для удаления
|
|||
3
mistеr
21.01.19
✎
09:23
|
(0) Проверь, в какой именно строке возникает ошибка. Может, и не в этом обработчике.
|
|||
4
inkvizitr
21.01.19
✎
09:25
|
(2) я согласен, но на мисте где то нашел, что если отбирать по измерениям которые не индексируются он работать не будет, поменял на отбор про васю, и немного характер ошибки променялся
Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8823)}: Значение не является значением объектного типа (Отбор) посмотрел в отладке НаборЗаписей.Отбор вообще не определенно // Нужно отбор установить у регистра. Для Каждого ЭлементОтбора Из НаборЗаписей.Отбор Цикл ЭлементОтбора.Установить(Объект[ЭлементОтбора.Имя]); Если НужноПроверитьДанныеДляВременногоНабора Тогда ВременныйНаборЗаписей.Отбор[ЭлементОтбора.Имя].Установить(Объект[ЭлементОтбора.Имя]); КонецЕсли; КонецЦикла; |
|||
5
inkvizitr
21.01.19
✎
09:26
|
это в самой обработке Универсальный обмен данными XML
|
|||
6
inkvizitr
21.01.19
✎
09:35
|
(2) для примера отказался от менеджера записи при удалении, запись теперь с регистра не удаляется
Если ПараметрыОбъекта <> Неопределено Тогда ПереданныеПараметры = ЗначениеИзСтрокиВнутр(ПараметрыОбъекта["Уволен"]); КонецЕсли; Организация = Справочники.Организации.НайтиПоНаименованию(ПереданныеПараметры.ГоловнаяОрганизация); ФизЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(ПереданныеПараметры.ФизическоеЛицо); Если НЕ ПереданныеПараметры.СотрудникУволен Тогда //Отладка+ //Сообщить("Сотрудник уволен: " + (НЕ ПереданныеПараметры.СотрудникУволен)); //Отладка- Сообщить("Сотрудник Работает: " + (НЕ ПереданныеПараметры.СотрудникУволен)); МенеджерЗаписи = РегистрыСведений.ОсновныеСотрудникиФизическихЛиц.СоздатьМенеджерЗаписи(); МенеджерЗаписи.ГоловнаяОрганизация = Организация; МенеджерЗаписи.ФизическоеЛицо = ФизЛицо; МенеджерЗаписи.ДатаНачала = Дата(1,1,1); МенеджерЗаписи.ДатаОкончания = ПереданныеПараметры.ДатаОкончания; МенеджерЗаписи.Сотрудник = ПереданныеПараметры.Сотрудник; МенеджерЗаписи.Записать(); КонецЕсли; Если ПереданныеПараметры.СотрудникУволен Тогда //Отладка+ //Сообщить("Сотрудник уволен: " + ПереданныеПараметры.СотрудникУволен); //Отладка- НаборЗаписи = РегистрыСведений.ОсновныеСотрудникиФизическихЛиц.СоздатьНаборЗаписей(); Отбор1 = НаборЗаписи.Отбор; Отбор1.ГоловнаяОрганизация.Установить(Организация); Отбор1.ФизическоеЛицо.Установить(ФизЛицо); Отбор1.ДатаНачала.Установить(Дата(1,1,1)); Отбор1.ДатаОкончания.Установить(3999,12,31); НаборЗаписи.Очистить(); НаборЗаписи.Удалить(); //НаборЗаписи.Прочитать(); //Для Каждого Запись Из НаборЗаписи Цикл // Если ЗначениеЗаполнено(Запись.ДатаОкончания) Тогда // //Отладка+ // //Сообщить("Вход в условие"); // //Отладка- // МенеджерЗаписи = РегистрыСведений.ОсновныеСотрудникиФизическихЛиц.СоздатьМенеджерЗаписи(); // МенеджерЗаписи.ГоловнаяОрганизация = Запись.ГоловнаяОрганизация; // МенеджерЗаписи.ФизическоеЛицо = Запись.ФизическоеЛицо; // МенеджерЗаписи.ДатаНачала = Запись.ДатаНачала; // МенеджерЗаписи.ДатаОкончания= Запись.ДатаОкончания; // МенеджерЗаписи.Удалить(); // КонецЕсли; //КонецЦикла; //Отладка+ //Сообщить("Сотрудник уволен и создана новая запись"); //Отладка- МенеджерЗаписи = РегистрыСведений.ОсновныеСотрудникиФизическихЛиц.СоздатьМенеджерЗаписи(); МенеджерЗаписи.ГоловнаяОрганизация = Организация; МенеджерЗаписи.ФизическоеЛицо = ФизЛицо; МенеджерЗаписи.ДатаНачала = ПереданныеПараметры.ДатаНачала; МенеджерЗаписи.ДатаОкончания = Дата(1,1,1); МенеджерЗаписи.Сотрудник = ПереданныеПараметры.Сотрудник; МенеджерЗаписи.Записать(); КонецЕсли измерения ДатаОкончания и ДатаНачала ни как не индексируются, регистр типовой |
|||
7
Ёпрст
гуру
21.01.19
✎
09:39
|
выкини менеджер записи и так сделай, для начала:
// НаборЗаписи.Очистить(); // НаборЗаписи.Удалить(); НаборЗаписи.Записать(); |
|||
8
inkvizitr
21.01.19
✎
09:50
|
чета как то странно я сейчас по этой теме, весь код закоментил в всех событиях, а ошибка осталась
|
|||
9
inkvizitr
21.01.19
✎
10:18
|
Короче! решил я данную проблему, все оказалось очень просто
|
|||
10
inkvizitr
21.01.19
✎
10:19
|
(7) теперь буду избавляться от менеджеров
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |