1с конвертация данных получить из входящих данных

Обновлено: 06.07.2024



Для того, чтобы вытащить сведения о дата регистрации нужно в ПКО ДатаРегистрации в обработчике "Перед выгрузкой" сделать запрос к регистру сведений ПаспортныеДанныеФизЛиц

Источник пустой, т.к. в ЗУП в справочнике нет такого поля. Нюанс в том, что
1. в запросе Источник- это элемент справочника ЗУП ФизЛица.
2. Данные в Дату Регистрации передаются через переменную Значение.

Теперь адреса в ЗУП они хранятся в регистре КонтактнаяИнформация, а в БП в табличной части элемента справочника.
Добавляем через синхронизацию свойств табличную часть КонтактнаяИнформация. Источник оставляем пустым. На папке КонтактнаяИнформация выставляем флажок Получить из входящих данных.



Переходим на вкладку "Правило выгрузки данных" , открываем правило ФизическиеЛица

В обработчике "Перед обработкой" способ выгрузки выбираем Произвольный запрос. И пишем запрос.


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

СписокВидов = Новый СписокЗначений;
СписокВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ФактАдресФизЛица);//проживание
СписокВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица);//прописка

Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.Адрес);
Запрос.УстановитьПараметр("СписокВидов",СписокВидов);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();

ФизЛица = РезультатЗапроса.Скопировать();
ФизЛица.Свернуть("ФизическоеЛицо");
Для Каждого СтрФз Из ФизЛица Цикл

Отбор = Новый Структура;
Отбор.Вставить("ФизическоеЛицо",СтрФз.ФизическоеЛицо);

НайденныеСтроки= РезультатЗапроса.НайтиСтроки(Отбор);
Выборка=Новый ТаблицаЗначений;
Выборка.Колонки.Добавить("Тип");
Выборка.Колонки.Добавить("Вид");
Выборка.Колонки.Добавить("Представление");

Для Каждого СтрРез Из НайденныеСтроки Цикл

НоваяСтрока= Выборка.Добавить();
НоваяСтрока.Тип=СтрРез.Тип;
НоваяСтрока.Вид=СтрРез.Вид;
НоваяСтрока.Представление=СтрРез.Представление;

КонецЦикла;
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("КонтактнаяИнформация", Выборка);
ВыгрузитьПоПравилу(СтрФз.ФизическоеЛицо, , ИсходящиеДанные, , "ФизическиеЛица");

Заполняем структуру ИсходящиеДанные, где "КонтактнаяИнформация" это название табличной части приемника, т.е. справочника физлица в БП
И выгружаем по правилу.

В обработчике "Перед выгрузкой" пишем, что к группам наша выгрузка не относится.



Еще в ПКО ФизическиеЛица напишем, что уволенных и удаленных выгружать не будем.


Ну и в правиле справочника ВидыКонтактнойИнформации нужно синхронизировать пару свойств.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

Комментарии / обсуждение (143):


КонвертацияОбъектовИнформационныхБаз как найти?
Ее нет в конфигураторе Конвертации?

Извиняюсь заранее если вопросы кажутся глупыми.
Открываю Конфигуратор Конвертации
Захожу в Глобальный поиск меню Правка ввожу ПроизвестиЧтениеДанных()
Надеюсь найти все вхождения этой процедуры в Конфигурации
Результата нет
Что делаю не так и как правильно?

У меня к сожалению не получилось войти в отладчик, как было показано на уроке, хотя я повторил все действия.
Мне бы для начала зайти в отладчик при загрузке объекта.
Пока в моем представлении алгоритм работы системы такой:
Конвертация готовит XML файл содержащий Правила и Список Объектов
Этот файл мы открываем в УОД, которая его обрабатывает
Как отловить этот момент.Мне хочется на примере простой конвертации пройти по коду и посмотреть процесс.
Но не получается войти даже в отладчик.В доп материалах, есть видео, где автор показывает, как исправив ошибку в наименовании флага в форме попасть в отладку.Нашел этот фрагмент и кажется все правильно.
Но в отладчик не вхожу.Есть ли способы попасть в отладку миную штатные средства.Ведь ясно же ,что автор нашел ошибку в коде, прогнав УОД через отладку

Спасибо за терпение, в отладчик попал.
Пока через код обработки УОД.

.Конвертация 2.1.8.2
Не могу попасть в отладчик со стороны загрузки

Добрый день. В ПКО для ПланаВидовХарактеристик пишу

ОписаниеТипов = Новый ОписаниеТипов("СправочникСсылка.Сотрудники");
УзелТипы = одПолучитьXMLПредставлениеОписанияТипов(ОписаниеТипов);
ДобавитьПодчиненный(Приемник, УзелТипы);

В источнике у меня справочник называется СотрудникиПоставщиков, а в приемнике Сотрудники. Поскольку я нахожусь на стороне базы источника (в обработчике ПриВыгрузке), когда я пытаюсь передать в ОписаниеТипов СправочникСсылка.Сотрудники, пишет про несоответствие типов, и правильно, потому что в базе источнике нет такого типа. А если я в описании типов передаю СправочникСсылка.СотрудникиПоставщиков, то при выгрузке не ругается, но зато ругается при загрузке, потому что в базе приемнике нет такого типа СправочникСсылка.СотрудникиПоставщиков. Если в обеих базах справочник называется одинаково, проблемы не возникает. Если вот так:

УзелТипы = СоздатьУзел("Типы");
УзелТип = СоздатьУзел("Тип");
УзелТип.ЗаписатьТекст("СправочникСсылка.Сотрудники");
ДобавитьПодчиненный(УзелТипы, УзелТип);
ДобавитьПодчиненный(Приемник, УзелТипы);

то проблемы тоже не возникает.
Но все таки, как использовать функцию одПолучитьXMLПредставлениеОписанияТипов в случае когда справочники в разных базах называются по разному?

Я попробовал задачу 1.7.3 решить с помощью разных ПВД. В первом варианте создал ПВД и соответствующее ПКО «БухгалтерскаяОперация_ВыгрузитьПоПравилу». Во втором варианте изменил структуру ВыборкаДанных и напрямую в ПКО «БухгалтерскаяОперация_УказаниеПравила» указал соответствующее правило выгрузки. И для теста создал 2-ой документ «Инвентаризация».
В первом варианте все выгрузилось без проблем. Во втором варианте выгрузился только 1 документ (но в решении преподавателя (и его правилах) все выгрузилось, буду искать ошибку).

С точки зрения оптимальности, какое лучше ПВД применять на реальных задачах?

Загрузил с сайта разработанные правила и там такая же ошибка получается. Подскажите в чем проблема?


Я дописал ветку иначе стало выгружать но на 1 объект меньше чем в видео у меня 18 объектов выгружает а не 19. Кто не прав в видео дальше комментируется и вопрос просто рано возник?

Добрый день.
Делаю обмен данными договоров из 1С Документооборот (2.1.9) в 1С УПП (1.3.86).

В ПКО.ДоговорыКонтрагентов доп.свойстве ПКС.Сумма ПередВыгрузкой передаю данные в ПКО РС.ЗначенияСвойствОбъектов:

ИсходящиеДанные = Новый Структура("Объект, Свойство, Значение");
ИсходящиеДанные.Свойство = "10 СуммаДоговора(руб)";
ИсходящиеДанные.Значение = Источник.Сумма;
ИсходящиеДанные.Объект = Источник.Ссылка;

В ПКО РС.ЗначенияСвойствОбъектов значение ПКС.Объект (в уроке он назывался Контрагент) передается ссылка на договор контрагента и не находит в уже выгруженных данных и поэтому зацикливается.

Что нужно сделать, чтобы убрать цикличность ссылок?

Благодарю за быстрый ответ.
Использовала ПКС, поскольку аналогичные реквизиты Внутреннего документа из ДО должны загрузиться в соответствующие свойства объектов или категории объектов. Поэтому, ВыгрузитьПоПравилу() тут не подойдет. РС в РС не выгружается, а заполняется из данных справочника ВнутренниеДокументы.

Так как занятие финальное для модуля, посвященного основам переноса данных, задам пару общих вопросов, приближенным к реальным условиям переноса:

В первом подходе будут перебираться все элементы справочника. Второй по скорости должен быть оптимальнее.
Если третий вариант решения задачи, который будет также прост как первый, но также оптимален как второй.

Читайте также: