diff --git a/Configuration.xml b/Configuration.xml
index 9d9230c..58d924f 100755
--- a/Configuration.xml
+++ b/Configuration.xml
@@ -56,7 +56,7 @@
Russian
ООО "Профи-Софт", код партнера 42575-13, г.Байконур.
- 3.0.0.51
+ 3.0.0.52
Language.Русский
diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
index dda8535..e94723c 100644
--- a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
+++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
@@ -473,9 +473,29 @@
КонецЦикла;
// Кэш сотрудников: Идентификатор -> (Сотрудник, ФизическоеЛицо)
+ // Приоритет поиска: ИНН → СНИЛС → ФИО
КэшСотрудников = Новый Соответствие;
Для Каждого Эл Из Объект.Сотрудники Цикл
- СотрСсылка = Справочники.Сотрудники.НайтиПоНаименованию(СокрЛП(Эл.ФИО), Истина);
+ СотрСсылка = Неопределено;
+
+ // 1. Поиск по ИНН (уникальный идентификатор)
+ Если ЗначениеЗаполнено(Эл.ИНН) Тогда
+ СотрСсылка = Справочники.Сотрудники.НайтиПоРеквизиту("ИНН", СокрЛП(Эл.ИНН));
+ КонецЕсли;
+
+ // 2. Поиск по СНИЛС
+ Если Не ЗначениеЗаполнено(СотрСсылка) И ЗначениеЗаполнено(Эл.СНИЛС) Тогда
+ ФЛ = Справочники.ФизическиеЛица.НайтиПоРеквизиту("СтраховойНомерПФР", СокрЛП(Эл.СНИЛС));
+ Если ЗначениеЗаполнено(ФЛ) Тогда
+ СотрСсылка = Справочники.Сотрудники.НайтиПоРеквизиту("ФизическоеЛицо", ФЛ, Истина);
+ КонецЕсли;
+ КонецЕсли;
+
+ // 3. Поиск по ФИО (fallback)
+ Если Не ЗначениеЗаполнено(СотрСсылка) И ЗначениеЗаполнено(Эл.ФИО) Тогда
+ СотрСсылка = Справочники.Сотрудники.НайтиПоНаименованию(СокрЛП(Эл.ФИО), Истина);
+ КонецЕсли;
+
Если ЗначениеЗаполнено(СотрСсылка) Тогда
КэшСотрудников.Вставить(Эл.Идентификатор, Новый Структура("Сотрудник, ФизическоеЛицо", СотрСсылка, СотрСсылка.ФизическоеЛицо));
КонецЕсли;
@@ -615,8 +635,32 @@
Процедура ЗаписатьНачисление(ДокПеренос, Строка, ВидРасчета, Сумма, Группа, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка)
Если Сумма = 0 Тогда Возврат; КонецЕсли;
- // Находим вид расчёта по наименованию
- ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета, Истина);
+ // Определяем суффикс ПВР по статье финансирования
+ Суффикс = "";
+ Если СтатьяФинансирования <> Неопределено Тогда
+ НаименованиеСтатьи = СокрЛП(СтатьяФинансирования.Наименование);
+ Если СтрНайти(НаименованиеСтатьи, "\u041e\u041c\u0421") > 0 Тогда
+ Суффикс = " (\u041e\u041c\u0421)";
+ ИначеЕсли СтрНайти(НаименованиеСтатьи, "\u041f\u0414") > 0 Тогда
+ Суффикс = " (\u041f\u0414)";
+ ИначеЕсли СтрНайти(НаименованиеСтатьи, "\u0411\u044e\u0434\u0436\u0435\u0442") > 0 Или СтрНайти(НаименованиеСтатьи, "\u0441\u0443\u0431") > 0 Тогда
+ Суффикс = "";
+ КонецЕсли;
+ КонецЕсли;
+
+ // Ищем ПВР сначала с суффиксом, потом без
+ ВидРасчёта = Неопределено;
+ Если ЗначениеЗаполнено(Суффикс) Тогда
+ ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета + Суффикс, Истина);
+ КонецЕсли;
+ Если ВидРасчёта = Неопределено Тогда
+ ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета, Истина);
+ КонецЕсли;
+
+ Если ВидРасчёта = Неопределено Тогда
+ Сообщить("Не найден ПВР: " + ВидРасчета + Суффикс);
+ Возврат;
+ КонецЕсли;
Движение = ДокПеренос.Движения.НачисленияУдержанияПоСотрудникам.Добавить();
Движение.Период = Период;