Перенос сотрудников

1. Полина Дмитриевна 23.09.14 14:34 Сейчас в теме
Ситуация такая - на предприятии ведётся учёт в нескольких базах ЗиК, теперь в связи с массовым перемещением сотрудников из одного подразделения в другое, возникла задача, переместить сотрудников из одной базы в другую, при этом нужно забить для них базы для расчёта больничных листов, отпусков, оплаты по среднему и т.д.
Подскажите как лучше сделать? Или может есть обработки которые решают эту задачу?
П.С. конфигурации идентичны
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1486 23.09.14 14:42 Сейчас в теме
(1) Полина Дмитриевна, если базы идентичны, может подойти универсальная обработка по переносу данных иначе требуется писать правила переноса в конфигурации КД2.
4. Полина Дмитриевна 07.10.14 17:47 Сейчас в теме
3. jack19 148 23.09.14 16:20 Сейчас в теме
(1) Полина Дмитриевна, Странно, что для одного предприятия учет ведется в нескольких базах. Ведь в ЗиК есть возможность вести учет в одной базе для обособленных подразделений. В этом случае проблем бы не возникало. Теперь же, чтобы иметь данные по каждому сотруднику для расчета среднего заработка отпусков и больничных, нужно переносить данные журнала расчетов "Зарплата" за два последних года. При этом все своды по зарплате за предыдущие периоды изменятся. Что касается самого переноса данных, то можете попробовать стандартную обработку (как сказал Xershi), я же на Вашем месте написал бы свою обработку переноса с использованием OLE.
5. Cooler 22 07.10.14 18:24 Сейчас в теме
Гм! Насколько я помню, записи журнала расчетов не переносятся обработками. Никакими. Поэтому после переноса справочников и документов придется провести все документы, без каких-либо гарантий, что они создадут точно такие же записи, как в базе-источнике.

Скорее, я бы дал гарантию, что эти записи не совпадут с исходными, о чем, впрочем, уже написал jack19 в (3).
6. Полина Дмитриевна 08.10.14 11:36 Сейчас в теме
7. dicwork 09.10.14 11:32 Сейчас в теме
Приходилось мне переносить журнал расчетов Зарплата. Правда полностью из самописной зарплаты в бухгалтерию. Я делал выгрузку в текстовый файл. А затем загрузку в новой базе. может вам пригодится привожу тесксты обработок по выгрузке и загрузке.
Текст выгрузки:
	жрЗарплата 			= СоздатьОбъект("ЖурналРасчетов.Зарплата");
	ТекстДок 			= СоздатьОбъект("Текст");
	жрЗарплата.ВыбратьЗаписи('01.01.11', '31.12.12');
	Пока жрЗарплата.ПолучитьЗапись() = 1 Цикл
		стр = ЗначениеВСтроку(жрЗарплата.Объект) + 
		Формат(ЗначениеВСтроку(жрЗарплата.Видрасч), "С50") +
		Формат(ЗначениеВСтроку(жрЗарплата.Документ), "С100") +
		Формат(ЗначениеВСтроку(жрЗарплата.РодительскийДокумент), "С100") +
		Формат(ЗначениеВСтроку(жрЗарплата.ПервичнаяЗапись), "С100") +
		Формат(жрЗарплата.Дни, "Ч(0)6.2") +
		Формат(жрЗарплата.Часы, "Ч(0)7.2") +
		Формат(ЗначениеВСтроку(жрЗарплата.ВнСовместитель), "С100") +
		Формат(ЗначениеВСтроку(жрЗарплата.ПлатВедомость), "С100") +
		Формат(жрЗарплата.ДокументомЛи, "Ч(0)1") +
		Формат(жрЗарплата.НомерСтроки, "Ч(0)3") +
		Формат(ЗначениеВСтроку(жрЗарплата.Цех), "С50") +
		Формат(жрЗарплата.ДатаНачала, "ДДММГГ") +
		Формат(жрЗарплата.ДатаОкончания, "ДДММГГ") +
		Формат(жрЗарплата.Сторно, "Ч(0)1") +
		Формат(жрЗарплата.Рассчитана, "Ч(0)1") +
		Формат(жрЗарплата.Исправлена, "Ч(0)1") +
		Формат(жрЗарплата.Фиксирована, "Ч(0)1") +
		Формат(жрЗарплата.Перерасчет, "Ч(0)1") +
		Формат(жрЗарплата.Результат, "Ч(0)10.2") +
		Формат(жрЗарплата.ПериодРегистрации, "С20") + 
		Формат(жрЗарплата.ПериодДействия, "С20");
		ТекстДок.ДобавитьСтроку(стр);
	КонецЦикла;
	ТекстДок.Записать("D:\Bugalter\ZPJR-Zarp2011##.txt");
Показать

Текст загрузки:
	жрЗарплата 			= СоздатьОбъект("ЖурналРасчетов.Зарплата");
	ТекстДок 			= СоздатьОбъект("Текст");
	спСотрудники 		= СоздатьОбъект("Справочник.Сотрудники");
	спПодразделения		= СоздатьОбъект("Справочник.Подразделения");
	ТекстДок.Открыть("J:\Test\Klimenko\ZPJR-Zarp2011.txt");
// ********************************************************************************
	Инд1 = 1;
	Инд2 = 0;
	лорез = 9;
	лоДатаПериодаРегистрации = '01.03.12';
	лорез = жрЗарплата.УстановитьТекущийПериод(жрЗарплата.ПериодПоДате(лоДатаПериодаРегистрации), 0);
	Сообщить("" + жрЗарплата.ТекущийПериод());
	Для Инд = 1 По ТекстДок.КоличествоСтрок() Цикл
		стЗагрузка = ТекстДок.ПолучитьСтроку(Инд);
		лоРеквизит = Сред(стЗагрузка, 29, 6);
		Если спСотрудники.НайтиПоРеквизиту("ТабНомер", Число(лоРеквизит), 1) = 1 Тогда
			лоПериодРегистрации = СокрЛП(Сред(стЗагрузка, 685, 20));
			Если лоПериодРегистрации = "Январь 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.01.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Февраль 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.02.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Март 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.03.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Апрель 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.04.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Май 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.05.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Июнь 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.06.10';
 			КонецЕсли;
			Если лоПериодРегистрации = "Июль 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.07.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Август 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.08.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Сентябрь 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.09.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Октябрь 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.10.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Ноябрь 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.11.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Декабрь 2010 г." Тогда
				лоДатаПериодаРегистрации = '01.12.10';
			КонецЕсли;
			Если лоПериодРегистрации = "Январь 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.01.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Февраль 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.02.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Март 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.03.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Апрель 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.04.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Май 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.05.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Июнь 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.06.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Июль 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.07.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Август 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.08.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Сентябрь 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.09.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Октябрь 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.10.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Ноябрь 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.11.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Декабрь 2011 г." Тогда
				лоДатаПериодаРегистрации = '01.12.11';
			КонецЕсли;
			Если лоПериодРегистрации = "Январь 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.01.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Февраль 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.02.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Март 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.03.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Апрель 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.04.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Май 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.05.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Июнь 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.06.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Июль 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.07.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Август 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.08.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Сентябрь 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.09.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Октябрь 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.10.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Ноябрь 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.11.12';
			КонецЕсли;
			Если лоПериодРегистрации = "Декабрь 2012 г." Тогда
				лоДатаПериодаРегистрации = '01.12.12';
			КонецЕсли;
			лорез = жрЗарплата.УстановитьТекущийПериод(жрЗарплата.ПериодПоДате(лоДатаПериодаРегистрации), 0);
			жрЗарплата.Новая();
			жрЗарплата.УстановитьРеквизит("Объект", спСотрудники.ТекущийЭлемент());
			лоДокумент = ЗначениеИзСтроки(Сред(стЗагрузка, 87, 100));
			жрЗарплата.УстановитьРеквизит("Документ", лоДокумент);
			лоДокумент = ЗначениеИзСтроки(Сред(стЗагрузка, 187, 100));
			жрЗарплата.УстановитьРеквизит("РодительскийДокумент", лоДокумент);
			жрЗарплата.УстановитьРеквизит("ВидРасч", ЗначениеИзСтроки(Сред(стЗагрузка, 37, 50)));
			жрЗарплата.УстановитьРеквизит("ДатаНачала", Дата(Сред(стЗагрузка, 654, 8)));
			жрЗарплата.УстановитьРеквизит("ДатаОкончания", Дата(Сред(стЗагрузка, 662, 8)));
			жрЗарплата.УстановитьРеквизит("Сторно", Число(Сред(стЗагрузка, 670, 1)));
			жрЗарплата.УстановитьРеквизит("Рассчитана", Число(Сред(стЗагрузка, 671, 1)));
			жрЗарплата.УстановитьРеквизит("Исправлена", Число(Сред(стЗагрузка, 672, 1)));
			жрЗарплата.УстановитьРеквизит("Фиксирована", Число(Сред(стЗагрузка, 673, 1)));
			жрЗарплата.УстановитьРеквизит("Перерасчет", Число(Сред(стЗагрузка, 674, 1)));
			жрЗарплата.УстановитьРеквизит("ПервичнаяЗапись", ЗначениеИзСтроки(Сред(стЗагрузка, 287,100)));
			жрЗарплата.УстановитьРеквизит("Результат", Число(Сред(стЗагрузка, 675, 10)));
			жрЗарплата.УстановитьРеквизит("Дни", Число(Сред(стЗагрузка, 387, 6)));
			жрЗарплата.УстановитьРеквизит("Часы", Число(Сред(стЗагрузка, 393, 7)));
			жрЗарплата.УстановитьРеквизит("ВнСовместитель", ЗначениеИзСтроки(Сред(стЗагрузка, 400, 100)));
			жрЗарплата.УстановитьРеквизит("ПлатВедомость", ЗначениеИзСтроки(Сред(стЗагрузка, 500, 100)));
			жрЗарплата.УстановитьРеквизит("ДокументомЛи", Число(Сред(стЗагрузка, 600, 1)));
			жрЗарплата.УстановитьРеквизит("НомерСтроки", Число(Сред(стЗагрузка, 601, 3)));
			лоРеквизит = Сред(стЗагрузка, 635, 10);
			Если спПодразделения.НайтиПоРеквизиту("КодЗП", Число(лоРеквизит), 1) = 1 Тогда
				жрЗарплата.УстановитьРеквизит("Цех", спПодразделения.ТекущийЭлемент());
			Иначе
				спПодразделения.НайтиПоНаименованию("$$$~!№;%:?*()_+");
				жрЗарплата.УстановитьРеквизит("Цех", спПодразделения.ТекущийЭлемент());
				Сообщить("-" + спПодразделения.ТекущийЭлемент());
			КонецЕсли;

				жрЗарплата.Записать();


			Инд1=Инд1+1;
		Иначе
			Сообщить("Отсутствует объект таб № " + Сред(стЗагрузка, 29, 6));
		КонецЕсли;
	КонецЦикла;
Показать

При загрузке учитывалось что в БД Зарплата табельный номер был кодом справочника, а в бухгалтерии он стал просто реквизитом.
Коды подразделений также изменились и для правильной перекодировки в справочник подразделений Бухгалтерии был добавлен вручную реквизит КодЗП в котором хранился реквизит кода подразделения из зарплатной базы.
Реквизиты
Дни
Часы
ВнСовместитель
ПлатВедомость
ДокументомЛи
НомерСроки
Цех
входили в наш журнал расчетов

Реквизиты:
Документ
РодительскийДокумент
Объект
ВидРасч
ДатаНачала
ДатаОкончания
Сторно
Рассчитана
Исправлена
Фиксирована
Перерасчет
ПервичнаяЗапись
Результат
Являются стандартными реквизитами любого журнала расчетов
Попробуйте може вам это чем то поможет
Оставьте свое сообщение

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