|   |   | 
| 
 | Конвертация данных. Вопрос по справочнику контрагенты | ☑ | ||
|---|---|---|---|---|
| 0
    
        AlexKulikov 12.12.16✎ 18:57 | 
        Добрый вечер, уважаемые форумчане.
 Источник - УТ 10.1 Приемник - УТ 10.3 Столкнулся с следующей проблемой: Когда переношу данные из Источника, а именно документ "Корректировка долга", то хотелось бы получить информацию о "контактных данных" выгружаемого контрагента. В результате у меня получилось следующее: В ПКО, для справочника "Контрагенты" в меню "После Выгрузки", написал следующий код: <code> Если (Не Источник.ЭтоГруппа) И (Не Источник.ПометкаУдаления) Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактнаяИнформация.Объект, | КонтактнаяИнформация.Тип, | КонтактнаяИнформация.Вид, | КонтактнаяИнформация.Представление, | КонтактнаяИнформация.Поле1, | КонтактнаяИнформация.Поле2, | КонтактнаяИнформация.Поле3, | КонтактнаяИнформация.Поле4, | КонтактнаяИнформация.Поле5, | КонтактнаяИнформация.Поле6, | КонтактнаяИнформация.Поле7, | КонтактнаяИнформация.Поле8, | КонтактнаяИнформация.Поле9, | КонтактнаяИнформация.Поле10, | КонтактнаяИнформация.Комментарий |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект = &Объект"; Запрос.УстановитьПараметр("Объект", Источник); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ВыгрузитьПоПравилу(Выборка,,,,"КонтактнаяИнформация"); КонецЦикла; КонецЕсли; </code> Где Объект - это ссылка на элемент справочника "Контрагенты". В результате у меня всегда пустой результат запроса. Хотя данные по контрагенту в регистре сведений есть. Подскажите пожалуйста, где я ошибаюсь? | |||
| 1
    
        AlexKulikov 12.12.16✎ 18:57 | 
        С Уважением, Алексей.     | |||
| 2
    
        Cyberhawk 12.12.16✎ 18:58 | 
        Объект.Ссылка может установить в кач-ве значения параметра?     | |||
| 3
    
        Cyberhawk 12.12.16✎ 18:58 | 
        Ну и заодно покажи свой "пустой результат запроса", где ты его смотришь     | |||
| 4
    
        AlexKulikov 12.12.16✎ 19:10 | 
        В консоли запросов смотрю. Так у меня "Источник" - это значение ссылочного типа(Контрагенты).
 А так, когда запускал режим отладки обработчиков в конвертации данных, ставил точку останову с условием Запрос.Выполнить().Пустой() при 11 итерациях, всегда получалась "Истина." В конфигураторе, у регистра сведений "КонтактнаяИнформация", для реквизита "Объект" указаны типы значений которые он может принимать, среди них СправончикСсылка.Контрагенты. | |||
| 5
    
        Defender aka LINN 12.12.16✎ 19:11 | 
        (0) "Объект - это ссылка", а устанавливаем Источник. Хотя он тоже не ссылка.     | |||
| 6
    
        Aleksey 12.12.16✎ 19:16 | 
        (5) а кто он?
 Источник - Произвольный - выгружаемый объект источник (ссылка или произвольные данные) В данном случае стандартная выборка и Источник - Ссылка | |||
| 7
    
        Defender aka LINN 12.12.16✎ 19:18 | 
        (6) Ну, положим, не ссылка, а выборка...     | |||
| 8
    
        Aleksey 12.12.16✎ 19:19 | 
        С чего ты взял что результат пустое? 
 В ПКО КонтактнаяИнформация он заходит? Не запоминать выгруженные объекты - галку ставил? КлючВыгружаемыхДанных указывать пробовал? | |||
| 9
    
        Aleksey 12.12.16✎ 19:20 | 
        (7) А что выборка? 
 Выборка это как раз случай произвольных данных. Он корректно отработает. | |||
| 10
    
        AlexKulikov 12.12.16✎ 19:24 | 
        Вот как так. В консоли, без этого условия по контрагенту -  есть информация.
 Устанавливаю условие, выбираю любого контрагента, нет информации. <code> Если (Не Источник.ЭтоГруппа) И (Не Источник.ПометкаУдаления) Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактнаяИнформация.Объект, | КонтактнаяИнформация.Тип, | КонтактнаяИнформация.Вид, | КонтактнаяИнформация.Представление, | КонтактнаяИнформация.Поле1, | КонтактнаяИнформация.Поле2, | КонтактнаяИнформация.Поле3, | КонтактнаяИнформация.Поле4, | КонтактнаяИнформация.Поле5, | КонтактнаяИнформация.Поле6, | КонтактнаяИнформация.Поле7, | КонтактнаяИнформация.Поле8, | КонтактнаяИнформация.Поле9, | КонтактнаяИнформация.Поле10, | КонтактнаяИнформация.Комментарий |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект = &Объект"; Запрос.УстановитьПараметр("Объект", Источник); РезультатЗапроса = Запрос.Выполнить(); Если НЕ РезультатЗапроса.Пустой() Тогда Сообщить("Что то есть"); КонецЕсли; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ВыгрузитьПоПравилу(Выборка,,,,"КонтактнаяИнформация"); КонецЦикла; КонецЕсли; </code> | |||
| 11
    
        AlexKulikov 12.12.16✎ 19:24 | 
        Источник    акватерм-Руссланд    СправочникСсылка.Контрагенты     | |||
| 12
    
        AlexKulikov 12.12.16✎ 19:24 | 
        Вот так в отладчике выглядит Источник.     | |||
| 13
    
        h-sp 12.12.16✎ 19:28 | 
        (12) скопируй с других правил это. Вот не лень сидеть изобретать велосипед? Когда всё уже давным-давно написано, надо просто скопипастить.     | |||
| 14
    
        GANR 12.12.16✎ 19:45 | 
        (0) Это Запрос.УстановитьПараметр("Объект", Источник);  на это Запрос.УстановитьПараметр("Объект", Источник.Ссылка); попробуйте заменить     | |||
| 15
    
        AlexKulikov 14.12.16✎ 16:53 | 
        Добрый день, уважаемые форумчане. Проблему с параметром я переборол, оказывается в УТ 10.1 для того, чтобы получить данные о контактной информации, нужно в качестве параметра передавать не ссылку на элемент справочника контрагенты, а ссылку на элемент справочников юридические лица или физические лица. 
 В итоге у меня получилась вот такая простыня для ПКО Контрагенты - закладка После выгрузки: <code> Если (Не Источник.ЭтоГруппа) И (Не Источник.ПометкаУдаления) Тогда мУсловие = ""; ЗапросКЮридЛицам = Новый Запрос; ЗапросКЮридЛицам.УстановитьПараметр("Контрагент", Источник); ЗапросКЮридЛицам.Текст = "ВЫБРАТЬ | ЮридическиеЛица.Ссылка, | ЮридическиеЛица.ПометкаУдаления, | ЮридическиеЛица.Предопределенный, | ЮридическиеЛица.Родитель, | ЮридическиеЛица.ЭтоГруппа, | ЮридическиеЛица.Код, | ЮридическиеЛица.Наименование, | ЮридическиеЛица.ИНН, | ЮридическиеЛица.КодПоОКПО, | ЮридическиеЛица.Комментарий, | ЮридическиеЛица.Контрагент, | ЮридическиеЛица.КПП, | ЮридическиеЛица.НаименованиеПолное, | ЮридическиеЛица.ОсновнойБанковскийСчет, | ЮридическиеЛица.Представление |ИЗ | Справочник.ЮридическиеЛица КАК ЮридическиеЛица |ГДЕ | ЮридическиеЛица.Контрагент = &Контрагент"; РезультатЗапросаКЮрикам = ЗапросКЮридЛицам.Выполнить(); Если РезультатЗапросаКЮрикам.Пустой() Тогда ЗапросКФизЛицам = Новый Запрос; ЗапросКФизЛицам.УстановитьПараметр("Контрагент", Источник); ЗапросКФизЛицам.Текст = "ВЫБРАТЬ | ФизическиеЛица.Ссылка, | ФизическиеЛица.ПометкаУдаления, | ФизическиеЛица.Предопределенный, | ФизическиеЛица.Родитель, | ФизическиеЛица.ЭтоГруппа, | ФизическиеЛица.Код, | ФизическиеЛица.Наименование, | ФизическиеЛица.Контрагент, | ФизическиеЛица.ОсновнойБанковскийСчет, | ФизическиеЛица.ИНН, | ФизическиеЛица.КодИМНС, | ФизическиеЛица.Фамилия, | ФизическиеЛица.Имя, | ФизическиеЛица.Отчество, | ФизическиеЛица.Комментарий, | ФизическиеЛица.ВидОбращения, | ФизическиеЛица.ДатаРождения, | ФизическиеЛица.Представление |ИЗ | Справочник.ФизическиеЛица КАК ФизическиеЛица |ГДЕ | ФизическиеЛица.Контрагент = &Контрагент"; РезультатЗапросаКФизикам = ЗапросКФизЛицам.Выполнить(); Если Не РезультатЗапросаКФизикам.Пустой() Тогда ТаблицаРезультатаЗапросаКФизикам = РезультатЗапросаКФизикам.Выгрузить(); Для Каждого Элемента Из ТаблицаРезультатаЗапросаКФизикам Цикл мУсловие = Элемента.Ссылка; КонецЦикла; КонецЕсли; Иначе ТаблицаРезультатЗапросаКЮрикам = РезультатЗапросаКЮрикам.Выгрузить(); Для Каждого Элемента Из ТаблицаРезультатЗапросаКЮрикам Цикл мУсловие = Элемента.Ссылка; КонецЦикла; КонецЕсли; КонецЕсли; Если ЗначениеЗаполнено(мУсловие) Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КонтактнаяИнформация.Объект, | КонтактнаяИнформация.Тип, | КонтактнаяИнформация.Вид, | КонтактнаяИнформация.Представление, | КонтактнаяИнформация.Поле1, | КонтактнаяИнформация.Поле2, | КонтактнаяИнформация.Поле3, | КонтактнаяИнформация.Поле4, | КонтактнаяИнформация.Поле5, | КонтактнаяИнформация.Поле6, | КонтактнаяИнформация.Поле7, | КонтактнаяИнформация.Поле8, | КонтактнаяИнформация.Поле9, | КонтактнаяИнформация.Поле10, | КонтактнаяИнформация.Комментарий, | ИСТИНА КАК Активность |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект = &Условие"; Запрос.УстановитьПараметр("Условие", мУсловие); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ВыгрузитьПоПравилу(Выборка,,,,"КонтактнаяИнформация"); КонецЦикла; КонецЕсли; </code> Однако, при выполнении данного "замечательного" кода возникают следующие ошибки: 1)Не найдено соответствие для значения Источника Источник = Справочник "Юридические лица" ТипИсточника = Виды объектов контактной информации Действительно, в источнике(УТ10.1) для регистра сведений "Контактная информация", указан реквизит составного типа "Объект", в котором присутствует данный справочник. В приемнике(УТ 10.3) такого справочника нет. Соответственно, в правилах конвертации, лезу в регистр сведений "Контактная информация", в ПКС для реквизита "Объект" - закладка Перед выгрузкой, пытаюсь написать свой собственный код и вот тут возникает вторая проблема, чтобы я не писал, я не могу остановиться в этом обработчике с помощью отладчика. Выдает такую ошибку: 2)шибка получения свойства объекта из входящих данных ПКО = КонтактнаяИнформация (Регистр сведений: Контактная информация) ПКС = 4 (--> Объект) Объект = (Выборка из результата запроса) СвойствоПриемника = Объект () ОписаниеОшибки = Получение элемента по индексу для значения не определено ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML(8282) КодСообщения = 68 В итоге получается забавная ситуация, если я снимаю "Режим отладки обработчиков выгрузки", то у меня ошибок не возникает, и идет загрузка этого регистра, как только я его включаю и пишу в обработчике, к примеру: Сообщить("Остановись!"); У меня лезет эта ошибка. Помогите советом, куда дальше копать? Очень надеюсь на Вашу помощь, с уважением Алексей. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |