|
Нет доступа к Объекту при загрузке (обмен данными) | ☑ | ||
---|---|---|---|---|
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
|
Еще в догоночку по теме. При занрузке у меня есть объект, но соответственно ссылки на него еще нету? При загрузке ведь объект еще не записан?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |