v3.0.0.7: TableBox->Table, fix header search (2+ keywords match)

This commit is contained in:
Профи-Софт
2026-07-08 08:14:01 +00:00
parent 6ba8139062
commit fec6b6b2c2
3 changed files with 21 additions and 12 deletions
+1 -1
View File
@@ -60,7 +60,7 @@
<ScriptVariant>Russian</ScriptVariant>
<DefaultLanguage>Language.Русский</DefaultLanguage>
<Vendor>ООО "Профи-Софт", код партнера 42575-13, г.Байконур.</Vendor>
<Version>3.0.0.5</Version>
<Version>3.0.0.6</Version>
<DefaultLanguage>Language.Русский</DefaultLanguage>
<BriefInformation>
<v8:item>
@@ -89,7 +89,7 @@
</v8:item>
</Title>
<ChildItems>
<TableBox name="ТаблицаРасчетЗП" id="32">
<Table name="ТаблицаРасчетЗП" id="32">
<DataPath>Объект.ДанныеРасчетаЗП</DataPath>
<ChildItems>
@@ -194,7 +194,7 @@
<Width>35</Width>
</Column>
</ChildItems>
</TableBox>
</Table>
</ChildItems>
</Page>
<Page name="СтраницаСтраховыеВзносы" id="39">
@@ -205,7 +205,7 @@
</v8:item>
</Title>
<ChildItems>
<TableBox name="ТаблицаСтраховыеВзносы" id="40">
<Table name="ТаблицаСтраховыеВзносы" id="40">
<DataPath>Объект.ДанныеСтраховыхВзносов</DataPath>
<ChildItems>
@@ -270,7 +270,7 @@
<Width>12</Width>
</Column>
</ChildItems>
</TableBox>
</Table>
</ChildItems>
</Page>
</ChildItems>
@@ -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;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
// Если не нашли — возвращаем 15 по умолчанию (для xls)
// Строка заголовков содержит 2+ ключевых слова
Если КоличествоСовпадений >= 2 Тогда
Возврат Ном;
КонецЕсли;
КонецЦикла;
// Fallback: строка 15 (для старых xls)
Возврат 15;
КонецФункции