КД3 синхранизация регистров сведеней

1. NatalkaBal 29 26.09.18 10:34 Сейчас в теме
Добрый день! Подскажите как загружать через КД3 версия формата 1.6 регистры сведений.
Отправка отрабатывает без ошибок

Настрое ПКО

При конвертации данных XDTO
ПолученныеДанные.ДополнительныеСвойства.Вставить("Записи", Неопределено);
Если ДанныеXDTO.Свойство("Записи")
	И ЗначениеЗаполнено(ДанныеXDTO.Записи) Тогда
	ПолученныеДанные.ДополнительныеСвойства.Вставить("Записи", ДанныеXDTO.Записи);
КонецЕсли;

Перед записью полученных данных
// Определение правил конвертации, с помощью которых будет преобразование ОбъектXDTO - ДанныеИБ.
ПравилоКонвертацииФизическиеЛица = ОбменДаннымиXDTOСервер.ПКОПоИмени(КомпонентыОбмена, "Справочник_ФизическиеЛица_Получение");
ПравилоКонвертацииДолжности      = ОбменДаннымиXDTOСервер.ПКОПоИмени(КомпонентыОбмена, "Справочник_Должности_Получение");
ПравилоКонвертацииОрганизации    = ОбменДаннымиXDTOСервер.ПКОПоИмени(КомпонентыОбмена, "Справочник_Организации_Получение");

// Добавление записей в набор записей.		
Если ПолученныеДанные.ДополнительныеСвойства.Записи <> Неопределено Тогда
	Для Каждого СтрокаЗаписи Из ПолученныеДанные.ДополнительныеСвойства.Записи Цикл
		ЗаписьКадровыеДанныеФЛ = ПолученныеДанные.Добавить();
		ЗаписьКадровыеДанныеФЛ.Период        = СтрокаЗаписи.ДатаНачала; 
		ЗаписьКадровыеДанныеФЛ.Организация   = ОбменДаннымиXDTOСервер.СтруктураОбъектаXDTOВДанныеИБ(
				КомпонентыОбмена, СтрокаЗаписи.Организация, ПравилоКонвертацииОрганизации, "ПолучитьСсылку").Ссылка;
		ЗаписьКадровыеДанныеФЛ.ФизЛицо       = ОбменДаннымиXDTOСервер.СтруктураОбъектаXDTOВДанныеИБ(
				КомпонентыОбмена, СтрокаЗаписи.ФизическоеЛицо, ПравилоКонвертацииФизическиеЛица, "ПолучитьСсылку").Ссылка;
		ЗаписьКадровыеДанныеФЛ.Должность     = ОбменДаннымиXDTOСервер.СтруктураОбъектаXDTOВДанныеИБ(
				КомпонентыОбмена, СтрокаЗаписи.Должность, ПравилоКонвертацииДолжности, "ПолучитьСсылку").Ссылка;
		ЗаписьКадровыеДанныеФЛ.Подразделение = ОбменДаннымиXDTOСервер.СсылкаОбъектаПоУИДОбъектаXDTO (СтрокаЗаписи.ПредставлениеДокументаПраваПодписи, 
				Тип("СправочникСсылка.ПодразделенияОрганизаций"), КомпонентыОбмена);
		ЗаписьКадровыеДанныеФЛ.Работает      = СтрокаЗаписи.УполномоченноеЛицо;
		ЗаписьКадровыеДанныеФЛ.Активность    = ИСТИНА;		
	КонецЦикла;
КонецЕсли;
Показать


При попытке получения выдает ошибку

Событие: Получение.
Объект XDTO: Справочник.ОтветственныеЛица, .

{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1685)}: Поле объекта не обнаружено (Ссылка)
МассивЗагруженныхОбъектов.Добавить(ДанныеДляЗаписиВИБ.Ссылка);


Подскажите пожалуйста что не так делаю. И как правильно переносить регистры сведений?
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Healer 1 26.09.18 11:25 Сейчас в теме
Всё правильно: регистры же не являются объектами ссылочного типа. То есть надо в "ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1685)" добавить проверку на тип перед добавлением ссылки.
3. Healer 1 26.09.18 11:26 Сейчас в теме
Точнее не проверку на тип, а проверку наличия свойства "Ссылка". Ну, в общем идея понятна, я думаю :-)
4. NatalkaBal 29 26.09.18 11:36 Сейчас в теме
(3)не думаю что строит Общий модуль редактировать. В типовом обмене ЗУП с Бухгалтерий присутствует регистр сведений, ошибок при этом нет. Думаю что то с обработчиками не так
5. NatalkaBal 29 27.09.18 11:23 Сейчас в теме +1 $m
Вроде нашла решение. Удалила ПКО, и в ПОД При обработке добавила
ПравилоКонвертацииФизическиеЛица = ОбменДаннымиXDTOСервер.ПКОПоИмени(КомпонентыОбмена, "Справочник_ФизическиеЛица_Получение");
ПравилоКонвертацииДолжности      = ОбменДаннымиXDTOСервер.ПКОПоИмени(КомпонентыОбмена, "Справочник_Должности_Получение");
ПравилоКонвертацииОрганизации    = ОбменДаннымиXDTOСервер.ПКОПоИмени(КомпонентыОбмена, "Справочник_Организации_Получение");

Если ДанныеXDTO.Свойство("Записи")
	И ЗначениеЗаполнено(ДанныеXDTO.Записи) Тогда

	Для Каждого СтрокаЗаписи Из ДанныеXDTO.Записи Цикл
		
		КадровыеДанныеФЛ = РегистрыСведений._УГН_КадровыеДанныеФизлиц.СоздатьНаборЗаписей();
		
		КадровыеДанныеФЛ.Отбор.Период.Установить(СтрокаЗаписи.ДатаНачала);
		КадровыеДанныеФЛ.Отбор.Физлицо.Установить(ОбменДаннымиXDTOСервер.СтруктураОбъектаXDTOВДанныеИБ(
			КомпонентыОбмена, СтрокаЗаписи.ФизическоеЛицо, ПравилоКонвертацииФизическиеЛица, "ПолучитьСсылку").Ссылка);
		КадровыеДанныеФЛ.Отбор.Организация.Установить(ОбменДаннымиXDTOСервер.СтруктураОбъектаXDTOВДанныеИБ(
			КомпонентыОбмена, СтрокаЗаписи.Организация, ПравилоКонвертацииОрганизации, "ПолучитьСсылку").Ссылка);

		ЗаписьКадровыеДанныеФЛ = КадровыеДанныеФЛ.Добавить();
			
		Если Не ЗначениеЗаполнено(КадровыеДанныеФЛ.Отбор.Период.Значение) Тогда
			ЗаписьКадровыеДанныеФЛ.Период = СтрокаЗаписи.ДатаНачала; 
		Иначе
			ЗаписьКадровыеДанныеФЛ.Период = КадровыеДанныеФЛ.Отбор.Период.Значение;
		КонецЕсли;
		
		Если Не ЗначениеЗаполнено(КадровыеДанныеФЛ.Отбор.Организация.Значение) Тогда
			ЗаписьКадровыеДанныеФЛ.Организация   = ОбменДаннымиXDTOСервер.СтруктураОбъектаXDTOВДанныеИБ(
				КомпонентыОбмена, СтрокаЗаписи.Организация, ПравилоКонвертацииОрганизации, "ПолучитьСсылку").Ссылка;
		Иначе
			ЗаписьКадровыеДанныеФЛ.Организация = КадровыеДанныеФЛ.Отбор.Организация.Значение;
		КонецЕсли;		
		
		Если Не ЗначениеЗаполнено(КадровыеДанныеФЛ.Отбор.Физлицо.Значение) Тогда
			ЗаписьКадровыеДанныеФЛ.ФизЛицо       = ОбменДаннымиXDTOСервер.СтруктураОбъектаXDTOВДанныеИБ(
				КомпонентыОбмена, СтрокаЗаписи.ФизическоеЛицо, ПравилоКонвертацииФизическиеЛица, "ПолучитьСсылку").Ссылка;
		Иначе
			ЗаписьКадровыеДанныеФЛ.ФизЛицо = КадровыеДанныеФЛ.Отбор.Физлицо.Значение;
		КонецЕсли;
		
		ЗаписьКадровыеДанныеФЛ.Должность = ОбменДаннымиXDTOСервер.СтруктураОбъектаXDTOВДанныеИБ(
				КомпонентыОбмена, СтрокаЗаписи.Должность, ПравилоКонвертацииДолжности, "ПолучитьСсылку").Ссылка;

		ЗаписьКадровыеДанныеФЛ.Подразделение = ОбменДаннымиXDTOСервер.СсылкаОбъектаПоУИДОбъектаXDTO (СтрокаЗаписи.ПредставлениеДокументаПраваПодписи, 
				Тип("СправочникСсылка.ПодразделенияОрганизаций"), КомпонентыОбмена);
			
		ЗаписьКадровыеДанныеФЛ.Работает      = СтрокаЗаписи.УполномоченноеЛицо;
		ЗаписьКадровыеДанныеФЛ.Активность    = ИСТИНА;
		
		КадровыеДанныеФЛ.Записать();
		
	КонецЦикла;
	
КонецЕсли;
Показать
user811769; +1 Ответить
6. NatalkaBal 29 28.09.18 10:58 Сейчас в теме
Не буду создавать новую тему, так как очередной вопрос связан также с переносом регистров сведений.
Переношу из ЗУП 3.1.7 регистр сведений РегистрСведенийЗапись.КадроваяИсторияСотрудниковИнтервальный через объект формата 1.6 Справочник.ОтветственныеЛица, для приемнике БУХ 3.0 в нетиповом регистре Отбор Организация, ФизЛицо, Период. Вопрос как выгрузить значения этих трех реквизитов, два реквизита Отбора выгружаются в ПКО РС_КадроваяИсторияСотрудников_Отправка
    ДанныеXDTO.Вставить("ОрганизацияОтбор", ДанныеИБ.Отбор.ГоловнаяОрганизация.Значение);
	ДанныеXDTO.Вставить("AdditionalInfo",   ДанныеИБ.Отбор.ПериодЗаписи.Значение);
	
	ТаблицаЗаписи = ДанныеИБ.Выгрузить();
	ТаблицаЗаписи.Колонки.Добавить("УполномоченноеЛицо");
	ТаблицаЗаписи.Колонки.Добавить("ВидОтветственногоЛица");
	ТаблицаЗаписи.Колонки.Добавить("ВидДокументаПравоПодписи");
	ТаблицаЗаписи.Колонки.Добавить("ПредставлениеДокументаПраваПодписи");

	Для Каждого СтрокаЗаписи Из ТаблицаЗаписи Цикл
	
		СтрокаЗаписи.ДатаНачала = СтрокаЗаписи.ПериодЗаписи; 
		Если ЗначениеЗаполнено(СтрокаЗаписи.Подразделение) Тогда
			СтрокаЗаписи.ПредставлениеДокументаПраваПодписи = Строка(СтрокаЗаписи.Подразделение.УникальныйИдентификатор());
		КонецЕсли;
		
	 	СтрокаЗаписи.УполномоченноеЛицо       = ?(СтрокаЗаписи.ВидСобытия <> ПредопределенноеЗначение("Перечисление.ВидыКадровыхСобытий.Увольнение"), ИСТИНА, ЛОЖЬ);
		СтрокаЗаписи.ВидОтветственногоЛица    = "Прочее";
		СтрокаЗаписи.ВидДокументаПравоПодписи = "Приказ";
	КонецЦикла;

	ДанныеXDTO.Вставить("Записи", ТаблицаЗаписи);
Показать


Подскажите пожалуйста как выгрузить ФизЛицо, если в объекте формата его нет, а AdditionalInfo уже занят.
7. MaxS 2989 28.09.18 15:03 Сейчас в теме
(6)
AdditionalInfo уже занят
Это как? Что мешает в него структуру загрузить? ;)
8. NatalkaBal 29 28.09.18 17:54 Сейчас в теме
(7)
ДанныеXDTO.Вставить("AdditionalInfo",   ДанныеИБ.Отбор.ПериодЗаписи.Значение);

Что мешает в него структуру загрузить?
Это как?
9. MaxS 2989 28.09.18 18:09 Сейчас в теме +1 $m
(8)
ДопДанные = Новый Структура;
ДопДанные.Вставить("ПериодЗаписи",  ДанныеИБ.Отбор.ПериодЗаписи.Значение);
ДопДанные.Вставить("ФизЛицо",  Строка(ДанныеИБ.ФизЛицо.УникальныйИдентификатор()));
ДанныеXDTO.Вставить("AdditionalInfo",   ДопДанные);

потом при получении проверяем заполненность AdditionalInfo, тип данных, и если структура, проверяем наличие соответствующих свойств.
NatalkaBal; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот