![]() |
|
Как применить ВыгрузитьРегистр() для переноса контактной информации м/у идентичн кофигами? | ☑ | ||
---|---|---|---|---|
0
altaykniga
08.01.20
✎
19:51
|
Доброго времени суток, уважаемые! Прошу поделиться знаниями.
Настраиваю обмен между идентичными конфигурациями с помощью плана обмена и правил выгрузки. Контрагенты переносятся по ссылкам из документов. Необходимо добиться, чтобы вместе с контрагентом выгружались все его контактные данные. Как этого добиться? Написал в ПКО "Контрагенты" в ПослеВыгрузкиВФайл следующий код: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |КонтактнаяИнформация.Объект, |КонтактнаяИнформация.Тип, |КонтактнаяИнформация.Вид, |КонтактнаяИнформация.Представление, |КонтактнаяИнформация.Поле1, |КонтактнаяИнформация.Поле2, |КонтактнаяИнформация.Поле3, |КонтактнаяИнформация.Поле4, |КонтактнаяИнформация.Поле5, |КонтактнаяИнформация.Поле6, |КонтактнаяИнформация.Поле7, |КонтактнаяИнформация.Поле8, |КонтактнаяИнформация.Поле9, |КонтактнаяИнформация.Поле10, |КонтактнаяИнформация.Комментарий, |КонтактнаяИнформация.ЗначениеПоУмолчанию, |КонтактнаяИнформация.ТипДома, |КонтактнаяИнформация.ТипКорпуса, |КонтактнаяИнформация.ТипКвартиры |ИЗ |РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект = &Объект"; Запрос.УстановитьПараметр("Объект", Источник.Ссылка); Выборка = Запрос.Выполнить ().Выбрать (); Пока Выборка.Следующий () Цикл Отбор = Новый ТаблицаЗначений; Отбор.Колонки.Добавить ("Имя"); Отбор.Колонки.Добавить ("Значение"); Отбор.Колонки.Добавить ("Использование"); СтрокаОтбора = Отбор.Добавить (); СтрокаОтбора.Имя = "Объект"; СтрокаОтбора.Значение = Выборка.Объект; СтрокаОтбора.Использование = Истина; Строки = Новый ТаблицаЗначений; Строки.Колонки.Добавить("Представление"); Строки.Колонки.Добавить("Вид"); Строки.Колонки.Добавить("Тип"); Строки.Колонки.Добавить("Объект"); Строки.Колонки.Добавить("Поле1"); Строки.Колонки.Добавить("Поле2"); Строки.Колонки.Добавить("Поле3"); Строки.Колонки.Добавить("Поле4"); Строки.Колонки.Добавить("Поле5"); Строки.Колонки.Добавить("Поле6"); Строки.Колонки.Добавить("Поле7"); Строки.Колонки.Добавить("Поле8"); Строки.Колонки.Добавить("Поле9"); Строки.Колонки.Добавить("Поле10"); Строки.Колонки.Добавить("Комментарий"); Строки.Колонки.Добавить("ЗначениеПоУмолчанию"); Строки.Колонки.Добавить("ТипДома"); Строки.Колонки.Добавить("ТипКорпуса"); Строки.Колонки.Добавить("ТипКвартиры"); Строка = Строки.Добавить(); ЗаполнитьЗначенияСвойств(Строка, Выборка); НаборЗаписей = Новый Структура("Отбор, Строки"); НаборЗаписей.Отбор = Отбор; НаборЗаписей.Строки = Строки; ВыгрузитьРегистр(НаборЗаписей,,,,"КонтактнаяИнформация"); Прошу ткнуть носом, что не так написал в коде, выгрузка завершается ошибкой Заранее благодарю за помощь |
|||
1
RomanYS
08.01.20
✎
19:53
|
Надо угадать ошибку?
Может ВыгрузитьПоПравилу()? |
|||
2
altaykniga
08.01.20
✎
19:55
|
ниже приведен текст ошибки при выгрузке:
"Доброго времени суток, уважаемые! Прошу поделиться знаниями. Настраиваю обмен между идентичными конфигурациями с помощью плана обмена и правил выгрузки. Контрагенты переносятся по ссылкам из документов. Необходимо добиться, чтобы вместе с контрагентом выгружались все его контактные данные. Как этого добиться? Написал в ПКО "Контрагенты" в ПослеВыгрузкиВФайл следующий код: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |КонтактнаяИнформация.Объект, |КонтактнаяИнформация.Тип, |КонтактнаяИнформация.Вид, |КонтактнаяИнформация.Представление, |КонтактнаяИнформация.Поле1, |КонтактнаяИнформация.Поле2, |КонтактнаяИнформация.Поле3, |КонтактнаяИнформация.Поле4, |КонтактнаяИнформация.Поле5, |КонтактнаяИнформация.Поле6, |КонтактнаяИнформация.Поле7, |КонтактнаяИнформация.Поле8, |КонтактнаяИнформация.Поле9, |КонтактнаяИнформация.Поле10, |КонтактнаяИнформация.Комментарий, |КонтактнаяИнформация.ЗначениеПоУмолчанию, |КонтактнаяИнформация.ТипДома, |КонтактнаяИнформация.ТипКорпуса, |КонтактнаяИнформация.ТипКвартиры |ИЗ |РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект = &Объект"; Запрос.УстановитьПараметр("Объект", Источник.Ссылка); Выборка = Запрос.Выполнить ().Выбрать (); Пока Выборка.Следующий () Цикл Отбор = Новый ТаблицаЗначений; Отбор.Колонки.Добавить ("Имя"); Отбор.Колонки.Добавить ("Значение"); Отбор.Колонки.Добавить ("Использование"); СтрокаОтбора = Отбор.Добавить (); СтрокаОтбора.Имя = "Объект"; СтрокаОтбора.Значение = Выборка.Объект; СтрокаОтбора.Использование = Истина; Строки = Новый ТаблицаЗначений; Строки.Колонки.Добавить("Представление"); Строки.Колонки.Добавить("Вид"); Строки.Колонки.Добавить("Тип"); Строки.Колонки.Добавить("Объект"); Строки.Колонки.Добавить("Поле1"); Строки.Колонки.Добавить("Поле2"); Строки.Колонки.Добавить("Поле3"); Строки.Колонки.Добавить("Поле4"); Строки.Колонки.Добавить("Поле5"); Строки.Колонки.Добавить("Поле6"); Строки.Колонки.Добавить("Поле7"); Строки.Колонки.Добавить("Поле8"); Строки.Колонки.Добавить("Поле9"); Строки.Колонки.Добавить("Поле10"); Строки.Колонки.Добавить("Комментарий"); Строки.Колонки.Добавить("ЗначениеПоУмолчанию"); Строки.Колонки.Добавить("ТипДома"); Строки.Колонки.Добавить("ТипКорпуса"); Строки.Колонки.Добавить("ТипКвартиры"); Строка = Строки.Добавить(); ЗаполнитьЗначенияСвойств(Строка, Выборка); НаборЗаписей = Новый Структура("Отбор, Строки"); НаборЗаписей.Отбор = Отбор; НаборЗаписей.Строки = Строки; ВыгрузитьРегистр(НаборЗаписей,,,,"КонтактнаяИнформация"); Прошу ткнуть носом, что не так написал в коде, выгрузка завершается ошибкой Заранее благодарю за помощь" |
|||
3
altaykniga
08.01.20
✎
19:56
|
сорян, вот текст ошибки:
"Ошибка при выгрузке данных для узла плана обмена ТипОбъекта = Справочник объект: Контрагенты Объект = Аветян ИП ОписаниеОшибки = Ошибка в обработчике события ПослеВыгрузкиОбъектаВФайл ПКО = Контрагенты (Справочник: Контрагенты) Объект = Аветян ИП (Справочник объект: Контрагенты) Обработчик = ЕстьОбработчикПослеВыгрузкиВФайл ОписаниеОшибки = Ошибка получения значения свойства объекта (по имени свойства источника) ПКО = КонтактнаяИнформация (Регистр сведений: Контактная информация) ПКС = 1 (Активность --> Активность) Объект = КлючИЗначение (Ключ и значение) СвойствоПриемника = Активность (Булево) ОписаниеОшибки = Поле объекта не обнаружено (Активность) ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(8340) КодСообщения = 13 ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(1648) КодСообщения = 79 ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(1617) КодСообщения = 72 УзелПланаОбмена = ЛЛИ ваниль Произошла ошибка при выгрузке объектов. Было выгружено: 5" |
|||
4
ДенисЧ
08.01.20
✎
19:59
|
Есть подозрение, что ВыгрузитьРегистр - некая функция, которая выгружает регистры накопления. (ибо это не штатная функция КД).
А ей подпихивается регистр сведений. ЗЫ. Точнее, даже не так. Ей подпихивается некая выборка из некой таблицы, в которой (выборке) нет тех полей, что ожидает фукнция (в данном случае нет поля Активность). |
|||
5
altaykniga
08.01.20
✎
20:19
|
или здесь нужно пользоваться ВыгрузитьПоПравилу?
|
|||
6
altaykniga
08.01.20
✎
20:36
|
всем спасибо, в итоге написал такой код в ПослеВыгрузки:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |КонтактнаяИнформация.Объект, |КонтактнаяИнформация.Тип, |КонтактнаяИнформация.Вид, |КонтактнаяИнформация.Представление |ИЗ |РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация |ГДЕ | КонтактнаяИнформация.Объект = &Объект"; Запрос.УстановитьПараметр("Объект", Источник.Ссылка); Выборка = Запрос.Выполнить ().Выбрать (); Пока Выборка.Следующий () Цикл Набор = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); Набор.Отбор.Объект.Установить(Источник.Ссылка); Набор.Отбор.Тип.Установить(Выборка.Тип); Набор.Отбор.Вид.Установить(Выборка.Вид); Набор.Прочитать(); ВыгрузитьРегистр(Набор, , , ,"КонтактнаяИнформация"); КонецЦикла; тема закрыта |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |