v3.0.0.52

This commit is contained in:
Профи-Софт
2026-07-12 22:30:41 +00:00
parent 66627825ae
commit 215c470da7
2 changed files with 48 additions and 4 deletions
@@ -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 Тогда
Суффикс = "";
КонецЕсли;
КонецЕсли;
// Ищем ПВР сначала с суффиксом, потом без
ВидРасчёта = Неопределено;
Если ЗначениеЗаполнено(Суффикс) Тогда
ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета + Суффикс, Истина);
КонецЕсли;
Если ВидРасчёта = Неопределено Тогда
ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета, Истина);
КонецЕсли;
Если ВидРасчёта = Неопределено Тогда
Сообщить("Не найден ПВР: " + ВидРасчета + Суффикс);
Возврат;
КонецЕсли;
Движение = ДокПеренос.Движения.НачисленияУдержанияПоСотрудникам.Добавить();
Движение.Период = Период;