Передача данных по трудовым договорам из ЗУП 1.0 в ЗУП 3.1

1. Alex_88_kz 04.02.21 13:25 Сейчас в теме
Добрый день. Есть вопрос по конвертации данных 2.1. и ЗУП.
Имеются 2 конфигурации - ЗУП 1.0 (очень старая редакция, но рабочая, все пользователи в ней работают), не типовая но близкая к ней, и ЗУП 3.1.1, типовая. Необходимо передать данные по трудовым договорам из ЗУП 1.0 в ЗУП 3.1. Проблема состоит в том, что при передаче документа "Увольнение из организации" в ЗУП и проведении, в системе некорректно увольняются внутренние совместители, вместо совместителя увольняется основной работник, т.к. в запросе в обработчике "после загрузки" нельзя задать табельный номер, дату приёма и вид занятости работника (код приведён ниже), надо сначала их получить из входящих данных. В источнике в документе "Увольнение из организации", есть поле "Приказ", это ссылка на документ "Приём на работу в организацию", которая и содержит все необходимые реквизиты в табличной части "Работники организации": дату приёма, вид занятости и табельный номер сотрудника. А в приёмнике в документе «Увольнение списком» только поле «Сотрудник», в ЗУП 1.0 вообще нет справочника «Сотрудники» и создавать сотрудника приходится программно, в обработчике ПКО перед загрузкой. Начал делать через Входящие данные и застопорился на моменте, когда нужно передавать данные. Запутался. Через параметр мне точно не подойдёт, параметр надо задавать вручную перед выгрузкой в обработке.
Конкретно по моему случаю, когда при увольнении надо определить табельный номер сотрудника и известно только физлицо и в источнике нет табельного номера, информации в интернете нет.
Мой код перед выгрузкой в ПКО такой, не могу определиться с типом исходящих данных - таблица значений или просто структура, пока этот код не передает исходящие данные:
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|	УвольнениеИзОрганизацийРаботникиОрганизации.Приказ,
|	ПриемНаРаботуВОрганизациюРаботникиОрганизации.ТабельныйНомер,
|	ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо
|ИЗ
|	Документ.УвольнениеИзОрганизаций.РаботникиОрганизации КАК УвольнениеИзОрганизацийРаботникиОрганизации
|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
|		ПО УвольнениеИзОрганизацийРаботникиОрганизации.Приказ = ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка
|			И УвольнениеИзОрганизацийРаботникиОрганизации.Физлицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо
|ГДЕ
|	УвольнениеИзОрганизацийРаботникиОрганизации.Ссылка = &Ссылка
|	И УвольнениеИзОрганизацийРаботникиОрганизации.Физлицо = &Физлицо
|";
ИсходящиеДанные=Новый Структура;

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


После загрузки в том же ПКО код следующий (он работает, но некорректно, как описано выше):

Для Каждого Строка из Объект.Сотрудники Цикл
	Если Строка.Сотрудник = Справочники.Сотрудники.ПустаяСсылка() Тогда
		
		ЗапросПоДокументу = Новый Запрос;
		ЗапросПоДокументу.Текст = "ВЫБРАТЬ
		|	ПриемНаРаботу.Сотрудник
		|	ИЗ
		|	Документ.ПриемНаРаботу КАК ПриемНаРаботу
		|	ГДЕ
		|	ПриемНаРаботу.ФизическоеЛицо = &ФизЛицо //и ПриемНаРаботу.Сотрудник.Код=&ТабНомер и 
                |       //ПриемНаРаботу.Сотрудник.ДатаПриема=&ДатаПриема
		|	";
		
		
		ЗапросПоДокументу.УстановитьПараметр("ФизЛицо", Строка.ФизическоеЛицо);
		//ЗапросПоДокументу.УстановитьПараметр("ДатаПриема", ВходящиеДанные.ДатаПриема);//Необходимо получить дату приема этого совместителя из источника, поля "Приказ"
	        //ЗапросПоДокументу.УстановитьПараметр("ТабНомер", ВходящиеДанные.ТабНомер );//Необходимо получить табельный номер из источника, поля "Приказ"
		ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать();
		
		Если ВыборкаПоДокументу.Следующий() Тогда
			Сотрудник = ВыборкаПоДокументу.Сотрудник;
			Строка.Сотрудник = Сотрудник.Ссылка;
		КонецЕсли;
		//ПереданныеПараметры=ЗначениеИзСтрокиВнутр(ПараметрыОбъекта["ПриказОПриеме"]);
		//Сообщить(ТипЗнч(ПереданныеПараметры));
	КонецЕсли;
КонецЦикла;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. TODD22 18 04.02.21 14:10 Сейчас в теме
Вы делаете переход в 3.1 или вы просто хотите переносить данные, но продолжать вести учет в 1.0 ?
3. Alex_88_kz 04.02.21 14:42 Сейчас в теме
Второе, т.к. ЗУП 3.1 будет как промежуточная база для передачи на портал енбек только трудовых договоров и изменений к ним. Да, и еще, я работаю на крупном предприятии где численность - несколько тысяч работников и вручную вводить данные по ТД на енбек - нереально.
4. TODD22 18 04.02.21 15:14 Сейчас в теме
(3)А из ЗУПа 1.0 раз там весь учёт нельзя передавать?

Зачем выгружать в промежуточную?
5. Alex_88_kz 04.02.21 15:29 Сейчас в теме
(4)Как мне ответили в фирме 1С (адрес etd@1c.kz), разработка сервиса 1С-ЭТД для старых редакций ЗУП не планируется (это дословно).
6. Alex_88_kz 04.02.21 15:38 Сейчас в теме
(4)Потому что, как мне объяснили в фирме 1С, разработка сервиса 1С:ЭТД для старых редакций ЗУП не планируется(даже письмо есть, только на рабочей почте). А автоматически передать ТД на енбек можно только посредством сервиса 1С:ЭТД.
Оставьте свое сообщение

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