Имя: Пароль:
1C
1С v8
Нет доступа к Объекту при загрузке (обмен данными)
,
0 PaulMuller
 
28.12.18
15:31
Правила обмена данными. ПКО Контрагенты. При загрузке вызываю алгоритм ПереносКИ передавая в него параметр Объект.

Код алгоритма:



Если не объект = неопределено тогда
    НетуСоответствия = ложь;
    
    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    УдалитьКонтактнаяИнформация.Вид,
    |    УдалитьКонтактнаяИнформация.Вид.Наименование
    |ИЗ
    |    РегистрСведений.УдалитьКонтактнаяИнформация КАК УдалитьКонтактнаяИнформация
    |ГДЕ
    |    НЕ УдалитьКонтактнаяИнформация.Вид.Предопределенный
    |    И УдалитьКонтактнаяИнформация.Вид.ВидОбъектаКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.УдалитьВидыОбъектовКонтактнойИнформации.Контрагенты)
    |    И УдалитьКонтактнаяИнформация.Объект.Ссылка = &Объект";
    Запрос.Параметры.Вставить("Объект", Объект.Ссылка);
    ТаблицаУдалитьВидыКонтактнойИнформации = Запрос.Выполнить().Выгрузить();
    
    СоответствиеВидовКИ = Новый Соответствие;
    
    // Справочник "КонтактныеЛица"
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ИнформАдресКонтактногоЛица     , Справочники.ВидыКонтактнойИнформации.АдресДляИнформированияКонтактныеЛица);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ТелефонКонтактногоЛица         , Справочники.ВидыКонтактнойИнформации.ТелефонРабочийКонтактныеЛица);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ТелефонМобильный               , Справочники.ВидыКонтактнойИнформации.ТелефонМобильныйКонтактныеЛица);    
    
    // Справочник "Контрагенты"
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ЮрАдресКонтрагента         , Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ФактАдресКонтрагента       , Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ТелефонКонтрагента         , Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);
    
    НайденнаяСтрока = ТаблицаУдалитьВидыКонтактнойИнформации.Найти("Почтовый адрес", "ВидНаименование");
    Если НайденнаяСтрока <> Неопределено Тогда
        СоответствиеВидовКИ.Вставить(НайденнаяСтрока.Вид, Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента);
    КонецЕсли;
    
    НайденнаяСтрока = ТаблицаУдалитьВидыКонтактнойИнформации.Найти("Факс", "ВидНаименование");
    Если НайденнаяСтрока <> Неопределено Тогда
        СоответствиеВидовКИ.Вставить(НайденнаяСтрока.Вид, Справочники.ВидыКонтактнойИнформации.ФаксКонтрагенты);
    КонецЕсли;
    
    // Справочник "Организации"
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ТелефонОрганизации          , Справочники.ВидыКонтактнойИнформации.ТелефонОрганизации);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ТелефонПоЮрАдресуОрганизации, Справочники.ВидыКонтактнойИнформации.ТелефонПоЮридическомуАдресуОрганизации);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ФаксОрганизации             , Справочники.ВидыКонтактнойИнформации.ФаксОрганизации);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ФактАдресОрганизации        , Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ЮрАдресОрганизации          , Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.АдресОрганизацииПочтовый    , Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресОрганизации);
    
    
    // Справочник "ФизическиеЛица"
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ИнформАдресФизЛица     , Справочники.ВидыКонтактнойИнформации.АдресДляИнформированияФизическиеЛица);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ФактАдресФизЛица       , Справочники.ВидыКонтактнойИнформации.АдресМестаПроживанияФизическиеЛица);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ЮрАдресФизЛица         , Справочники.ВидыКонтактнойИнформации.АдресПоПропискеФизическиеЛица);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ТелефонФизЛица         , Справочники.ВидыКонтактнойИнформации.ТелефонДомашнийФизическиеЛица);
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.ТелефонСлужебный        , Справочники.ВидыКонтактнойИнформации.ТелефонРабочийФизическиеЛица);
    
    // Справочник "Пользователи"
    СоответствиеВидовКИ.Вставить(Справочники.УдалитьВидыКонтактнойИнформации.СлужебныйАдресЭлектроннойПочтыПользователя, Справочники.ВидыКонтактнойИнформации.EmailПользователя);
    
    СоответствиеГруппВидовКИ = Новый Соответствие;
    СоответствиеГруппВидовКИ.Вставить(Тип("СправочникСсылка.КонтактныеЛица")          , Справочники.ВидыКонтактнойИнформации.СправочникКонтактныеЛица);
    СоответствиеГруппВидовКИ.Вставить(Тип("СправочникСсылка.Контрагенты")             , Справочники.ВидыКонтактнойИнформации.СправочникКонтрагенты);
    СоответствиеГруппВидовКИ.Вставить(Тип("СправочникСсылка.Организации")             , Справочники.ВидыКонтактнойИнформации.СправочникОрганизации);
    СоответствиеГруппВидовКИ.Вставить(Тип("СправочникСсылка.Пользователи")            , Справочники.ВидыКонтактнойИнформации.СправочникПользователи);
    СоответствиеГруппВидовКИ.Вставить(Тип("СправочникСсылка.ФизическиеЛица")          , Справочники.ВидыКонтактнойИнформации.СправочникФизическиеЛица);
    
    // Перенос контактной информации из РС в табличные части справочников
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ОрганизацииКонтактнаяИнформация.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ОбъектыСКИ
    |ИЗ
    |    Справочник.Организации.КонтактнаяИнформация КАК ОрганизацииКонтактнаяИнформация
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ПользователиКонтактнаяИнформация.Ссылка
    |ИЗ
    |    Справочник.Пользователи.КонтактнаяИнформация КАК ПользователиКонтактнаяИнформация
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    ФизическиеЛицаКонтактнаяИнформация.Ссылка
    |ИЗ
    |    Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    КонтрагентыКонтактнаяИнформация.Ссылка
    |ИЗ
    |    Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    КонтактныеЛицаКонтактнаяИнформация.Ссылка
    |ИЗ
    |    Справочник.КонтактныеЛица.КонтактнаяИнформация КАК КонтактныеЛицаКонтактнаяИнформация
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    УдалитьКонтактнаяИнформация.Объект КАК Объект,
    |    УдалитьКонтактнаяИнформация.Тип,
    |    УдалитьКонтактнаяИнформация.Вид,
    |    УдалитьКонтактнаяИнформация.Вид.Наименование КАК ВидНаименование,
    |    УдалитьКонтактнаяИнформация.Вид.Тип КАК ВидТип,
    |    УдалитьКонтактнаяИнформация.Представление,
    |    УдалитьКонтактнаяИнформация.Поле1,
    |    УдалитьКонтактнаяИнформация.Поле2,
    |    УдалитьКонтактнаяИнформация.Поле3,
    |    УдалитьКонтактнаяИнформация.Поле4,
    |    УдалитьКонтактнаяИнформация.Поле5,
    |    УдалитьКонтактнаяИнформация.Поле6,
    |    УдалитьКонтактнаяИнформация.Поле7,
    |    УдалитьКонтактнаяИнформация.Поле8,
    |    УдалитьКонтактнаяИнформация.Поле9,
    |    УдалитьКонтактнаяИнформация.Поле10
    |ИЗ
    |    РегистрСведений.УдалитьКонтактнаяИнформация КАК УдалитьКонтактнаяИнформация
    |        ЛЕВОЕ СОЕДИНЕНИЕ ОбъектыСКИ КАК ОбъектыСКИ
    |        ПО УдалитьКонтактнаяИнформация.Объект = ОбъектыСКИ.Ссылка
    |ГДЕ
    |    НЕ УдалитьКонтактнаяИнформация.Объект.Ссылка ЕСТЬ NULL
    |    И ОбъектыСКИ.Ссылка ЕСТЬ NULL
    |    И УдалитьКонтактнаяИнформация.Объект.Ссылка = Объект
    |ИТОГИ ПО
    |    Объект";
    
    Запрос.Параметры.Вставить("Объект", Объект);
    ВыборкаОбъект = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаОбъект.Следующий() Цикл
        Выборка = ВыборкаОбъект.Выбрать();
        Пока Выборка.Следующий() Цикл
            Если СоответствиеВидовКИ[Выборка.Вид] = Неопределено Тогда
                НайденныйВидКИ = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию(Выборка.Вид, Истина, СоответствиеГруппВидовКИ[ТипЗнч(Выборка.Объект)]);
                Если Не ЗначениеЗаполнено(НайденныйВидКИ) Тогда

                    ВидКИДругое    = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Другое (любая другая контактная информация)", Истина, СоответствиеГруппВидовКИ[ТипЗнч(Выборка.Объект)]);
    
                    Если ЗначениеЗаполнено(ВидКИДругое) тогда
                        СоответствиеВидовКИ.Вставить(Выборка.Вид, ВидКИДругое);
                    Иначе
                        НетуСоответствия = Истина;
                    КонецЕсли;
                Иначе
                    СоответствиеВидовКИ.Вставить(Выборка.Вид, НайденныйВидКИ);
                КонецЕсли;
            КонецЕсли;
            
            Если НетуСоответствия тогда
                НетуСоответствия = ложь;
                продолжить;
            КонецЕсли;
            
            НоваяСтрока = Объект.КонтактнаяИнформация.Добавить();
            ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
            НоваяСтрока.Вид = СоответствиеВидовКИ[Выборка.Вид];
            НоваяСтрока.Тип = Выборка.Тип;
            
            Если Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
                НоваяСтрока.ЗначенияПолей = "Индекс=" + Выборка.Поле1 + Символы.ПС
                + "Регион="           + Выборка.Поле2 + Символы.ПС
                + "Район="            + Выборка.Поле3 + Символы.ПС
                + "Город="            + Выборка.Поле4 + Символы.ПС
                + "НаселенныйПункт="  + Выборка.Поле5 + Символы.ПС
                + "Улица="            + Выборка.Поле6 + Символы.ПС
                + "Дом="              + Выборка.Поле7 + Символы.ПС
                + "Корпус="           + Выборка.Поле8 + Символы.ПС
                + "Квартира="         + Выборка.Поле9 + Символы.ПС
                + "ТипДома=дом"       + Символы.ПС
                + "ТипКорпуса=корпус" + Символы.ПС
                + "ТипКвартиры=кв.";
            ИначеЕсли Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
                НоваяСтрока.ЗначенияПолей = "КодСтраны=" + Выборка.Поле1 + Символы.ПС
                + "КодГорода="     + Выборка.Поле2 + Символы.ПС
                + "НомерТелефона=" + Выборка.Поле3 + Символы.ПС
                + "Добавочный="    + Выборка.Поле4;
                
                НоваяСтрока.НомерТелефонаБезКодов = Выборка.Поле3;
                НоваяСтрока.НомерТелефона         = Выборка.Поле1 + Выборка.Поле2 + Выборка.Поле3;
            ИначеЕсли Выборка.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
                НоваяСтрока.АдресЭП = Выборка.Представление;
            КонецЕсли;
            
            // Удаление символов переноса строк.
            НоваяСтрока.Представление = СтрЗаменить(НоваяСтрока.Представление, Символы.ПС," ");
            
        КонецЦикла;
        НетуСоответствия = ложь;
    КонецЦикла;
КонецЕсли;



Ошибка:

ЗАГРУЗКА В ПРИЕМНИКЕ: Помилка при завантаженні даних: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1498)}: Помилка в обробнику події ПриЗагрузкеОбъекта
    ИмяПКО                 =  Контрагенты
    ТипОбъекта             =  Контрагент
    Объект                 =  ПОСТАЧАЛЬНИКИ ФОП (послуги)
    Обработчик             =  ПриЗагрузкеОбъекта
    ОписаниеОшибки         =  Ошибка при вызове метода контекста (Добавить): Объект недоступен для изменения.
    ПозицияМодуля          =  (164)
    КодСообщения           =  20

Ошибка при выгрузке данных для узла плана обмена
    ТипОбъекта             =  Справочник объект: Контрагенты
    Объект                 =  Ягельська Ірина Вітольдівна ФО
    ОписаниеОшибки         =  Помилка при завантаженні даних: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1498)}: Помилка в обробнику події ПриЗагрузкеОбъекта
    ИмяПКО                 =  Контрагенты
    ТипОбъекта             =  Контрагент
    Объект                 =  ПОСТАЧАЛЬНИКИ ФОП (послуги)
    Обработчик             =  ПриЗагрузкеОбъекта
    ОписаниеОшибки         =  Ошибка при вызове метода контекста (Добавить): Объект недоступен для изменения.
    ПозицияМодуля          =  (164)
    КодСообщения           =  20
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1304)
    КодСообщения           =  72
    УзелПланаОбмена        =  Бух20

Окончание выгрузки: 28.12.2018 14:14:05

Выгружено объектов: 11


В чем может быть причина? Или же если я не могу так обращаться к Объекту, то как мне по другому добавить значения в ТЧ КонтактнаяИнформация?
1 PaulMuller
 
28.12.18
15:33
НоваяСтрока = Объект.КонтактнаяИнформация.Добавить();

Метод Добавить вызывается только тут.
2 PaulMuller
 
28.12.18
15:35
и да, пройтись отладкой не смог, как не старался. Выполняя этот код во внешней обработке все отрабатовало на ура (обьект получал ранее, тут получения объекта не прописывал так как он, насколько я понял, длолжен уже получаться из параметра алгоритма)
3 ДенисЧ
 
28.12.18
15:35
Судя по названию "ПОСТАЧАЛЬНИКИ ФОП (послуги)" - это группа...
4 PaulMuller
 
28.12.18
15:46
(3) Да, это действительно момент который я упустил, что при выгрузке контрагента, он за собой также тянет группу, и не обработал ее. Теперь вызываю алгоритм с условием что объект не группа. Спасибо.
5 MaxS
 
28.12.18
15:47
> Запрос.Параметры.Вставить("Объект", Объект);
А Объект это Объект?
6 PaulMuller
 
28.12.18
15:50
Объкут который я передаю, по идее (отладку никак не запущу) в параметр алгоритма, это тот объект что Объект в обработчике загрузки в ПКО Контрагенты.
7 PaulMuller
 
28.12.18
15:51
Я там еще буду играться где объект передавать, где ссылки. Тыкаю пальцем в небо
8 PaulMuller
 
28.12.18
16:33
Еще в догоночку по теме. При занрузке у меня есть объект, но соответственно ссылки на него еще нету? При загрузке ведь объект еще не записан?