From 215c470da70c50baf37445f4e0ea8914f1e80044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=80=D0=BE=D1=84=D0=B8-=D0=A1=D0=BE=D1=84=D1=82?= Date: Sun, 12 Jul 2026 22:30:41 +0000 Subject: [PATCH] v3.0.0.52 --- Configuration.xml | 2 +- .../Forms/Форма/Ext/Form/Module.bsl | 50 +++++++++++++++++-- 2 files changed, 48 insertions(+), 4 deletions(-) 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 Тогда + Суффикс = ""; + КонецЕсли; + КонецЕсли; + + // Ищем ПВР сначала с суффиксом, потом без + ВидРасчёта = Неопределено; + Если ЗначениеЗаполнено(Суффикс) Тогда + ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета + Суффикс, Истина); + КонецЕсли; + Если ВидРасчёта = Неопределено Тогда + ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета, Истина); + КонецЕсли; + + Если ВидРасчёта = Неопределено Тогда + Сообщить("Не найден ПВР: " + ВидРасчета + Суффикс); + Возврат; + КонецЕсли; Движение = ДокПеренос.Движения.НачисленияУдержанияПоСотрудникам.Добавить(); Движение.Период = Период;