Все об 1С8 - просто и доступно

Добавить в Избранное  Сделать Стартовой  Написать письмо

Главная Статьи Вопрос-ответ Экспресс-справочник Гостевая книга
Статьи по 1С

Выгрузка данных регистра сведений ФИО физических лиц и паспортных данных через правила обмена


      Одним из часто выгружаемых и перегружаемых объектов между конфигурациями являются данные справочника "Физические лица". Одним из способов осуществления этой манипуляции может быть использование обработки универсального обмена данными. Для решения задачи при помощи этого метода нужны правила обмена. В этой статье будет показано, как можно выгрузить данные справочника "Физические лица" вкупе с сопутствующими данными о фамилии, имени и отчестве физ.лица и его паспортных данных.

При создании правил обмена не составит труда сопоставить справочники конфигураций источника и приемника. Но вот данные и ФИО и паспортных данных хранятся в регистрах сведений. И нужно придумать, как при выгрузке элемента справочника заставить подгружать и данных указанных регистров.

Обо всем по порядку. Пример будет приведен для обмена между УПП 1.3 и БП 3.0.

1. Сначала создаем описания конфигураций, если до этого они еще не были созданы. Как это сделать, описано в справке к конфигурации "Конвертация данных".

2. Затем создаем правила выгрузки справочника "Физические лица".

Правила выгрузки физ.лиц

3. При таких правила данных справочника "Физические лица" успешно выгрузятся. Но в базу данных - приемник не попадут данных о паспортных данных. Для этого следующим пунктом добавим правила выгрузки двух регистров сведений.

4. Добавляем правила выгрузки регистров сведений "ФИО физ.лиц" и "Паспортные данные физ.лиц".

Создание правил выгрузки регистров

5. И опять мы не получим данные в базе-приемнике. Можно, конечно, указать периодом выгрузки дату Рождества Христова, тогда выгрузятся все данные. Но далеко не всегда нужно выгружать данные всего регистра. Поэтому добавим код, который заставит данные выгрузить по каждому выгружаемому физ.лицу.

6. Создаем обработчик для выгрузки данных по регистрам с привязкой к физлицу:
Если НЕ Источник.ЭтоГруппа Тогда
	ЗапросПД = Новый Запрос;
	ЗапросПД.Текст = "ВЫБРАТЬ
	|	ПаспортныеДанныеФизЛицСрезПоследних.Период,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения,
	|	ПаспортныеДанныеФизЛицСрезПоследних.ДатаРегистрацииПоМестуЖительства,
	|	Истина КАК Активность
	|ИЗ
	|	РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
	|ГДЕ
	|	ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = &ФизЛицо" ;
	ЗапросПД.УстановитьПараметр("ФизЛицо", Источник);
	ЗапросРезультат = ЗапросПД.Выполнить().Выбрать();
	Пока ЗапросРезультат.Следующий() Цикл
		ВыгрузитьПоПравилу(ЗапросРезультат, , ЗапросРезультат,,"ДокументыФизическихЛиц",,,);
	КонецЦикла;

	ЗапросФФЛ = Новый Запрос;

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

КонецЕсли;
7. Сохраняем правила и пользуемся.