Конвертация: выгрузка сотрудников и кадровых документов из Бухгалтерии 2.0 в ЗиУП 2.1

Задача: перенести штатных не уволенных сотрудников организации из 1С:Бухгалтерия для Украины 2.0 в Зарплата и Управление Персоналом для Украины 2.1. В ЗУП уже ведется учет по другой организации. Основной сотрудник в нем может является совместителем в другой организации.

Изучение задачи

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

Перенос будем производить при помощи конфигурации "Конвертация данных 2.1". Всего будут задействованы 2 ПВД (правила выгрузки данных):

  1. Сотрудники (произвольный алгоритм). Выгружаем сотрудников вместе полем "ВидЗанятости". На данном этапе никаких сотрудников в базе-приемнике нет.
  2. Кадровые документы (произвольный алгоритм). Получаем список штатных сотрудников и связанные с ними кадровые документы ("Прием на работу" и "Кадровый перевод"). Выгружаем эти документы. Чтобы не перезаписывать уже выгруженных сотрудников создадим отдельное ПКО "СотруникиОрганизацииТолькоПоиск".

ТЧ "Удержания" переность не будем, а, для экономии времени, перенесем вручную.

Выгрузка сотрудников

Для поиска и выгрузки сотрудников в ПВД с типом "Произвольный алгоритм" используем запрос:

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

В ПКО "СотрудникиОрганизации" поле ВидЗанятости будем получать из входящих данных, которые формируем в событии ПКО "Перед выгрузкой":

ВходящиеДанные = Новый Структура("ВидЗанятости");

Попытка
	ВходящиеДанные.ВидЗанятости = Источник.ВидЗанятости;
Исключение
	ВходящиеДанные.ВидЗанятости = "";
КонецПопытки;

У каждого сотрудника имеется связанное с ним поле "Физическое лицо". Поскольку мы выгружаем в базу в которой уже ведется учет по другому предприятию, тут уже может присутствовать нужное нам физ. лицо. Самым разумным будет поиск физ. лица в базе-приемнике по ИНН (КодПоДРФО). Однако, если не нашли по ИНН, можно поискать и просто по наименованию. Для этого используем событие "Поля поиска" в ПКО "ФизическиеЛица":

Если НомерВариантаПоиска = 1 тогда
 
 СтрокаИменСвойствПоиска = "КодПоДРФО, ПометкаУдаления, ЭтоГруппа";
 
ИначеЕсли НомерВариантаПоиска = 2 тогда
 
 СтрокаИменСвойствПоиска = "КодПоДРФО, ЭтоГруппа";
 
Иначе
 
 СтрокаИменСвойствПоиска = "Наименование, ЭтоГруппа";
 
КонецЕсли;

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

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

Выгрузка кадровых документов

В ЗУПе у кадровых документов есть ТЧ "Работники организации". В Бухгалтерии 2.0 в документе есть реквизиты "Сотрудник", "Должность" и прочее. В ПВД "Кадровые документы" используем запрос:

ВЫБРАТЬ
	Сотрудники.Ссылка
ПОМЕСТИТЬ ШтатныеСотрудники
ИЗ
	Справочник.Сотрудники КАК Сотрудники
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
		ПО (ТекущиеКадровыеДанныеСотрудников.Сотрудник = Сотрудники.Ссылка)
ГДЕ
	(ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
	И ТекущиеКадровыеДанныеСотрудников.ТекущаяОрганизация = &Организация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ПриемНаРаботу.Ссылка КАК Документ,
	ПриемНаРаботу.Дата КАК Дата
ПОМЕСТИТЬ КадровыеДокументы
ИЗ
	Документ.ПриемНаРаботу КАК ПриемНаРаботу
ГДЕ
	ПриемНаРаботу.Проведен
	И ПриемНаРаботу.Организация = &Организация
	И ПриемНаРаботу.Сотрудник В
			(ВЫБРАТЬ
				ШтатныеСотрудники.Ссылка
			ИЗ
				ШтатныеСотрудники КАК ШтатныеСотрудники)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	КадровыйПеревод.Ссылка,
	КадровыйПеревод.Дата
ИЗ
	Документ.КадровыйПеревод КАК КадровыйПеревод
ГДЕ
	КадровыйПеревод.Проведен
	И КадровыйПеревод.Организация = &Организация
	И КадровыйПеревод.Сотрудник В
			(ВЫБРАТЬ
				ШтатныеСотрудники.Ссылка
			ИЗ
				ШтатныеСотрудники КАК ШтатныеСотрудники)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	КадровыеДокументы.Документ
ИЗ
	КадровыеДокументы КАК КадровыеДокументы

УПОРЯДОЧИТЬ ПО
	КадровыеДокументы.Дата

Для ПКО "Прием на работу" будем формировать одну строку с работником во входящих данных в событии "Перед выгрузкой":

ВходящиеДанные = Новый Структура("РаботникиОрганизации");
ВходящиеДанные.РаботникиОрганизации = Новый ТаблицаЗначений;
ВходящиеДанные.РаботникиОрганизации.Колонки.Добавить("ДатаПриема");
ВходящиеДанные.РаботникиОрганизации.Колонки.Добавить("ДатаСозданияРабочегоМеста");
ВходящиеДанные.РаботникиОрганизации.Колонки.Добавить("Должность");
ВходящиеДанные.РаботникиОрганизации.Колонки.Добавить("ЗанимаемыхСтавок");
ВходящиеДанные.РаботникиОрганизации.Колонки.Добавить("Подразделение");
ВходящиеДанные.РаботникиОрганизации.Колонки.Добавить("Сотрудник");
ВходящиеДанные.РаботникиОрганизации.Колонки.Добавить("ФизическоеЛицо");

НовСтрока = ВходящиеДанные.РаботникиОрганизации.Добавить();
ЗаполнитьЗначенияСвойств(НовСтрока, Источник);
НовСтрока.ЗанимаемыхСтавок = 1;

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

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

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

НовСтрока.ЗанимаемыхСтавок = 1;

Для поиска сотрудников используем правило "СотрудникиОрганизацииТолькоПоиск":

1.png

Ссылка на правила

Скачать


Похожие материалы

Комментарии