v3.0.0.7: TableBox->Table, fix header search (2+ keywords match)
This commit is contained in:
@@ -158,8 +158,9 @@
|
||||
Возврат -1;
|
||||
КонецФункции
|
||||
|
||||
// Находит строку заголовков, содержащую ключевые слова ("Сотрудник" или "Должность").
|
||||
// Обеспечивает совместимость с xls (строка 15) и xlsm (строка 16).
|
||||
// Находит строку заголовков таблицы данных.
|
||||
// Ищет строку, содержащую ХОТЯ БЫ 2 ключевых слова из списка одновременно.
|
||||
// Это исключает ложные срабатывания на метаданных (строки 0-14).
|
||||
&НаКлиенте
|
||||
Функция НайтиСтрокуЗаголовков(ЛистРасчет)
|
||||
// Ключевые слова заголовков (в нижнем регистре)
|
||||
@@ -167,22 +168,30 @@
|
||||
КлючевыеСлова.Добавить("сотрудник");
|
||||
КлючевыеСлова.Добавить("должность");
|
||||
КлючевыеСлова.Добавить("счет");
|
||||
КлючевыеСлова.Добавить("вид занятости");
|
||||
|
||||
// Ищем в диапазоне строк 10-20 (с запасом)
|
||||
Для Ном = 10 По Мин(20, ЛистРасчет.Rows.Count) Цикл
|
||||
// Ищем строку с минимум 2 совпадениями ключевых слов
|
||||
Для Ном = 1 По Мин(30, ЛистРасчет.Rows.Count) Цикл
|
||||
КоличествоСовпадений = 0;
|
||||
Для Каждого КлючевоеСлово Из КлючевыеСлова Цикл
|
||||
Для Колонка = 1 По Мин(5, ЛистРасчет.Columns.Count) Цикл
|
||||
Для Колонка = 1 По Мин(10, ЛистРасчет.Columns.Count) Цикл
|
||||
Значение = ЛистРасчет.Cells(Ном, Колонка).Value;
|
||||
Если Значение <> Неопределено Тогда
|
||||
Если СтрНайти(НРег(СокрЛП("" + Значение)), КлючевоеСлово) > 0 Тогда
|
||||
Возврат Ном;
|
||||
КоличествоСовпадений = КоличествоСовпадений + 1;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
// Строка заголовков содержит 2+ ключевых слова
|
||||
Если КоличествоСовпадений >= 2 Тогда
|
||||
Возврат Ном;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
// Если не нашли — возвращаем 15 по умолчанию (для xls)
|
||||
// Fallback: строка 15 (для старых xls)
|
||||
Возврат 15;
|
||||
КонецФункции
|
||||
|
||||
|
||||
Reference in New Issue
Block a user