v3.0.0.5: динамический поиск строки заголовков для xls/xlsm, маппинг Счет БК

This commit is contained in:
Профи-Софт
2026-07-08 05:49:47 +00:00
parent f630279ea6
commit 67c51e9b7f
@@ -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: Определение строки первого сотрудника