Вход | Регистрация
 

КД 2.1 обмен из ЗУП 2.5 КОРП в БП 3.0 КОРП

КД 2.1 обмен из ЗУП 2.5 КОРП в БП 3.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
ну и менеджерзаписи там не нужен, ни для добавления, ни для удаления
   mistеr
 
3 - 21.01.19 - 09:23
(0) Проверь, в какой именно строке возникает ошибка. Может, и не в этом обработчике.
   inkvizitr
 
4 - 21.01.19 - 09:25
(2) я согласен, но на мисте где то нашел, что если отбирать по измерениям которые не индексируются он работать не будет, поменял на отбор про васю, и немного характер ошибки променялся
Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8823)}: Значение не является значением объектного типа (Отбор)
посмотрел в отладке НаборЗаписей.Отбор вообще не определенно

// Нужно отбор установить у регистра.

                        Для Каждого ЭлементОтбора Из НаборЗаписей.Отбор Цикл
                            
                            ЭлементОтбора.Установить(Объект[ЭлементОтбора.Имя]);
                            Если НужноПроверитьДанныеДляВременногоНабора Тогда
                                ВременныйНаборЗаписей.Отбор[ЭлементОтбора.Имя].Установить(Объект[ЭлементОтбора.Имя]);
                            КонецЕсли;
                            
                        КонецЦикла;
   inkvizitr
 
5 - 21.01.19 - 09:26
это в самой обработке Универсальный обмен данными XML
   inkvizitr
 
6 - 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
выкини менеджер  записи и так сделай, для начала:

//    НаборЗаписи.Очистить();

//   НаборЗаписи.Удалить();

 НаборЗаписи.Записать();
   inkvizitr
 
8 - 21.01.19 - 09:50
чета как то странно я сейчас по этой теме, весь код закоментил в всех событиях, а ошибка осталась
   inkvizitr
 
9 - 21.01.19 - 10:18
Короче! решил я данную проблему, все оказалось очень просто
   inkvizitr
 
10 - 21.01.19 - 10:19
(7) теперь буду избавляться от менеджеров
 
 Рекламное место пустует

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует