v3.0.0.5: динамический поиск строки заголовков для xls/xlsm, маппинг Счет БК
This commit is contained in:
@@ -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: Определение строки первого сотрудника
|
||||
|
||||
Reference in New Issue
Block a user