|   |   | 
| 
 | КД 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) теперь буду избавляться от менеджеров     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |