From 67c51e9b7fe5643a0f4b4e99cd5ca5914ddb0ac0 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: Wed, 8 Jul 2026 05:49:47 +0000 Subject: [PATCH] =?UTF-8?q?v3.0.0.5:=20=D0=B4=D0=B8=D0=BD=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B9=20=D0=BF=D0=BE=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2=D0=BA=D0=BE=D0=B2=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20xls/xlsm,=20=D0=BC=D0=B0=D0=BF=D0=BF=D0=B8=D0=BD?= =?UTF-8?q?=D0=B3=20=D0=A1=D1=87=D0=B5=D1=82=20=D0=91=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Forms/Форма/Ext/Form/Module.bsl | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl index 076ee85..337d35d 100644 --- a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl +++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl @@ -158,6 +158,34 @@ Возврат -1; КонецФункции +// Находит строку заголовков, содержащую ключевые слова ("Сотрудник" или "Должность"). +// Обеспечивает совместимость с xls (строка 15) и xlsm (строка 16). +&НаКлиенте +Функция НайтиСтрокуЗаголовков(ЛистРасчет) + // Ключевые слова заголовков (в нижнем регистре) + КлючевыеСлова = Новый Массив; + КлючевыеСлова.Добавить("сотрудник"); + КлючевыеСлова.Добавить("должность"); + КлючевыеСлова.Добавить("счет"); + + // Ищем в диапазоне строк 10-20 (с запасом) + Для Ном = 10 По Мин(20, ЛистРасчет.Rows.Count) Цикл + Для Каждого КлючевоеСлово Из КлючевыеСлова Цикл + Для Колонка = 1 По Мин(5, ЛистРасчет.Columns.Count) Цикл + Значение = ЛистРасчет.Cells(Ном, Колонка).Value; + Если Значение <> Неопределено Тогда + Если СтрНайти(НРег(СокрЛП("" + Значение)), КлючевоеСлово) > 0 Тогда + Возврат Ном; + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЦикла; + КонецЦикла; + + // Если не нашли — возвращаем 15 по умолчанию (для xls) + Возврат 15; +КонецФункции + // Определяет номер строки первого сотрудника (первая непустая строка после заголовков). &НаКлиенте Функция НайтиСтрокуПервогоСотрудника(ЛистРасчет, НомерСтрокиЗаголовков) @@ -197,6 +225,7 @@ Строка.Вставить("ФИО", ФИО); // Поиск колонок по заголовкам + // Маппинг: "Счет БК" в Excel = "Лицевой счет сотрудника в банке для зарплатного проекта" в 1С ЗиКГУ КолДолжность = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "должность"); КолСчетБК = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "счет"); КолВидЗанятости = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "вид занятости"); @@ -327,7 +356,7 @@ СтатусЗагрузки = "Анализ заголовков..."; Состояние("Анализ заголовков...", 22); - НомерСтрокиЗаголовков = 15; + НомерСтрокиЗаголовков = НайтиСтрокуЗаголовков(ЛистРасчет); ИндексЗаголовков = СоздатьИндексЗаголовков(ЛистРасчет, НомерСтрокиЗаголовков); // Этап 6: Определение строки первого сотрудника