Имя: Пароль:
1C
1С v8
Правила обмена УТ и БП
0 Gossar1C
 
22.01.14
12:47
Здравствуйте! Пытаюсь настроить правила обмена между УТ 11.0.7.8 и БСО 2.0.54.1. Вылазит эта ошибка:

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

не могу понять в чем дело. ПКО Организации в правилах установлено что либо он ищет по индентификатору, а если не находит то по полям ИНН - КПП и Наименование.

Допустим в том же выгружаемом документе РеализацияТоваровУслуг ПКС Организации вроде бы установлено правильно (СправочникСсылка.Органзации - СправочникСсылка.Организации).

С обменом работаю можно сказать впервые! Строго не судите. Прошу помощи.
1 Godofsin
 
22.01.14
12:48
Открывай модуль и смотри, что там
2 Godofsin
 
22.01.14
12:48
Ну я бы сразу глянул в ПослеВыгрузки
3 Godofsin
 
22.01.14
12:49
упс, то есть послу загрузки
4 МойКодУныл
 
22.01.14
12:49
(0) открываешь в КД правила. Находишь ПКО организации, в нем ищешь обработчик послеЗагрузки. И в нем смотришь, что написано в строке 33.
5 Gossar1C
 
22.01.14
12:53
(4)(2) Открыл ПКО организации в обработчике ПослеЗагрузки:

Выполнить(Алгоритмы.ОбновлениеОтветственныхЛицОрганизации);

Сам алгоритм:

// Обновляем значение периодического реквизита "Руководитель" и его должность

Запрос = Новый Запрос("ВЫБРАТЬ
                      |    ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо,
                      |    ОтветственныеЛицаОрганизацийСрезПоследних.Должность,
                      |    ОтветственныеЛицаОрганизацийСрезПоследних.Период
                      |ИЗ
                      |    РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(
                      |            ,
                      |            СтруктурнаяЕдиница = &Ссылка
                      |                И ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)) КАК ОтветственныеЛицаОрганизацийСрезПоследних");
                      
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда
    
    ПериодЗаписи                = '19800101';
    СтароеЗначениеРуководителя    = Справочники.ФизическиеЛица.ПустаяСсылка();
    СтараяДолжностьРуководителя    = Справочники.ДолжностиОрганизаций.ПустаяСсылка();
    
Иначе
    
    ВыборкаРезультата = Результат.Выбрать();
    ВыборкаРезультата.Следующий();
    
    ПериодЗаписи                = ВыборкаРезультата.Период;
    СтароеЗначениеРуководителя    = ВыборкаРезультата.ФизическоеЛицо;
    СтараяДолжностьРуководителя    = ВыборкаРезультата.Должность;
    
КонецЕсли;

НовоеЗначениеРуководителя = ПараметрыОбъекта["Руководитель"];
НовоеЗначениеРуководителя = ?(ЗначениеЗаполнено(НовоеЗначениеРуководителя), НовоеЗначениеРуководителя, Справочники.ФизическиеЛица.ПустаяСсылка());
                              
НоваяДолжностьРуководителя = ПараметрыОбъекта.Получить("ДолжностьРуководителя");
НоваяДолжностьРуководителя = ?(ЗначениеЗаполнено(НоваяДолжностьРуководителя), НоваяДолжностьРуководителя, Справочники.ДолжностиОрганизаций.ПустаяСсылка());

Если НовоеЗначениеРуководителя <> СтароеЗначениеРуководителя
    ИЛИ НоваяДолжностьРуководителя <> СтараяДолжностьРуководителя Тогда

    ЗаписьРегистра = РегистрыСведений.ОтветственныеЛицаОрганизаций.СоздатьМенеджерЗаписи();
    ЗаписьРегистра.Период                = ПериодЗаписи;
    ЗаписьРегистра.СтруктурнаяЕдиница    = Объект.Ссылка;
    ЗаписьРегистра.ОтветственноеЛицо    = Перечисления.ОтветственныеЛицаОрганизаций.Руководитель;
    ЗаписьРегистра.ФизическоеЛицо        = НовоеЗначениеРуководителя;
    ЗаписьРегистра.Должность            = НоваяДолжностьРуководителя;
    
    ЗаписьРегистра.Записать();
    
КонецЕсли;

// Обновляем значение периодического реквизита "Главный бухгалтер"

Запрос = Новый Запрос("ВЫБРАТЬ
                      |    ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо,
                      |    ОтветственныеЛицаОрганизацийСрезПоследних.Должность,
                      |    ОтветственныеЛицаОрганизацийСрезПоследних.Период
                      |ИЗ
                      |    РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(
                      |            ,
                      |            СтруктурнаяЕдиница = &Ссылка
                      |                И ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер)) КАК ОтветственныеЛицаОрганизацийСрезПоследних");
                      
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда
    
    ПериодЗаписи                        = '19800101';
    СтароеЗначениеГлавногоБухгалтера    = Справочники.ФизическиеЛица.ПустаяСсылка();
    СтараяДолжностьГлавногоБухгалтера    = Справочники.ДолжностиОрганизаций.ПустаяСсылка();
    
Иначе
    
    ВыборкаРезультата = Результат.Выбрать();
    ВыборкаРезультата.Следующий();
    
    ПериодЗаписи                        = ВыборкаРезультата.Период;
    СтароеЗначениеГлавногоБухгалтера    = ВыборкаРезультата.ФизическоеЛицо;
    СтараяДолжностьГлавногоБухгалтера    = ВыборкаРезультата.Должность;
    
КонецЕсли;

НовоеЗначениеГлавногоБухгалтера = ПараметрыОбъекта["ГлавныйБухгалтер"];
НовоеЗначениеГлавногоБухгалтера = ?(ЗначениеЗаполнено(НовоеЗначениеРуководителя), НовоеЗначениеГлавногоБухгалтера, Справочники.ФизическиеЛица.ПустаяСсылка());
                              
Если СтароеЗначениеГлавногоБухгалтера <> НовоеЗначениеГлавногоБухгалтера Тогда

    ЗаписьРегистра = РегистрыСведений.ОтветственныеЛицаОрганизаций.СоздатьМенеджерЗаписи();
    ЗаписьРегистра.Период                = ПериодЗаписи;
    ЗаписьРегистра.СтруктурнаяЕдиница    = Объект.Ссылка;
    ЗаписьРегистра.ОтветственноеЛицо    = Перечисления.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер;
    ЗаписьРегистра.ФизическоеЛицо        = НовоеЗначениеГлавногоБухгалтера;
    ЗаписьРегистра.Должность            = СтараяДолжностьГлавногоБухгалтера;
    
    ЗаписьРегистра.Записать();
    
КонецЕсли;
6 Gossar1C
 
22.01.14
12:55
я так понимаю ошибка кроется в этом фрагменте?

НовоеЗначениеРуководителя = ПараметрыОбъекта["Руководитель"];
НовоеЗначениеРуководителя = ?(ЗначениеЗаполнено(НовоеЗначениеРуководителя), НовоеЗначениеРуководителя, Справочники.ФизическиеЛица.ПустаяСсылка());
                              
НоваяДолжностьРуководителя = ПараметрыОбъекта.Получить("ДолжностьРуководителя");
НоваяДолжностьРуководителя = ?(ЗначениеЗаполнено(НоваяДолжностьРуководителя), НоваяДолжностьРуководителя, Справочники.ДолжностиОрганизаций.ПустаяСсылка());
7 Gossar1C
 
22.01.14
13:07
Ладно. Спасибо за подсказку. Буду разбираться дальше
8 МойКодУныл
 
22.01.14
13:07
(6) ПараметрыОбъекта скорее всего неопределенно или имеют не тот тип.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn