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> <ScriptVariant>Russian</ScriptVariant>
<DefaultLanguage>Language.Русский</DefaultLanguage> <DefaultLanguage>Language.Русский</DefaultLanguage>
<Vendor>ООО "Профи-Софт", код партнера 42575-13, г.Байконур.</Vendor> <Vendor>ООО "Профи-Софт", код партнера 42575-13, г.Байконур.</Vendor>
<Version>3.0.0.5</Version> <Version>3.0.0.6</Version>
<DefaultLanguage>Language.Русский</DefaultLanguage> <DefaultLanguage>Language.Русский</DefaultLanguage>
<BriefInformation> <BriefInformation>
<v8:item> <v8:item>
@@ -89,7 +89,7 @@
</v8:item> </v8:item>
</Title> </Title>
<ChildItems> <ChildItems>
<TableBox name="ТаблицаРасчетЗП" id="32"> <Table name="ТаблицаРасчетЗП" id="32">
<DataPath>Объект.ДанныеРасчетаЗП</DataPath> <DataPath>Объект.ДанныеРасчетаЗП</DataPath>
<ChildItems> <ChildItems>
@@ -194,7 +194,7 @@
<Width>35</Width> <Width>35</Width>
</Column> </Column>
</ChildItems> </ChildItems>
</TableBox> </Table>
</ChildItems> </ChildItems>
</Page> </Page>
<Page name="СтраницаСтраховыеВзносы" id="39"> <Page name="СтраницаСтраховыеВзносы" id="39">
@@ -205,7 +205,7 @@
</v8:item> </v8:item>
</Title> </Title>
<ChildItems> <ChildItems>
<TableBox name="ТаблицаСтраховыеВзносы" id="40"> <Table name="ТаблицаСтраховыеВзносы" id="40">
<DataPath>Объект.ДанныеСтраховыхВзносов</DataPath> <DataPath>Объект.ДанныеСтраховыхВзносов</DataPath>
<ChildItems> <ChildItems>
@@ -270,7 +270,7 @@
<Width>12</Width> <Width>12</Width>
</Column> </Column>
</ChildItems> </ChildItems>
</TableBox> </Table>
</ChildItems> </ChildItems>
</Page> </Page>
</ChildItems> </ChildItems>
@@ -158,8 +158,9 @@
Возврат -1; Возврат -1;
КонецФункции КонецФункции
// Находит строку заголовков, содержащую ключевые слова ("Сотрудник" или "Должность"). // Находит строку заголовков таблицы данных.
// Обеспечивает совместимость с xls (строка 15) и xlsm (строка 16). // Ищет строку, содержащую ХОТЯ БЫ 2 ключевых слова из списка одновременно.
// Это исключает ложные срабатывания на метаданных (строки 0-14).
&НаКлиенте &НаКлиенте
Функция НайтиСтрокуЗаголовков(ЛистРасчет) Функция НайтиСтрокуЗаголовков(ЛистРасчет)
// Ключевые слова заголовков (в нижнем регистре) // Ключевые слова заголовков (в нижнем регистре)
@@ -167,22 +168,30 @@
КлючевыеСлова.Добавить("сотрудник"); КлючевыеСлова.Добавить("сотрудник");
КлючевыеСлова.Добавить("должность"); КлючевыеСлова.Добавить("должность");
КлючевыеСлова.Добавить("счет"); КлючевыеСлова.Добавить("счет");
КлючевыеСлова.Добавить("вид занятости");
// Ищем в диапазоне строк 10-20 (с запасом) // Ищем строку с минимум 2 совпадениями ключевых слов
Для Ном = 10 По Мин(20, ЛистРасчет.Rows.Count) Цикл Для Ном = 1 По Мин(30, ЛистРасчет.Rows.Count) Цикл
КоличествоСовпадений = 0;
Для Каждого КлючевоеСлово Из КлючевыеСлова Цикл Для Каждого КлючевоеСлово Из КлючевыеСлова Цикл
Для Колонка = 1 По Мин(5, ЛистРасчет.Columns.Count) Цикл Для Колонка = 1 По Мин(10, ЛистРасчет.Columns.Count) Цикл
Значение = ЛистРасчет.Cells(Ном, Колонка).Value; Значение = ЛистРасчет.Cells(Ном, Колонка).Value;
Если Значение <> Неопределено Тогда Если Значение <> Неопределено Тогда
Если СтрНайти(НРег(СокрЛП("" + Значение)), КлючевоеСлово) > 0 Тогда Если СтрНайти(НРег(СокрЛП("" + Значение)), КлючевоеСлово) > 0 Тогда
Возврат Ном; КоличествоСовпадений = КоличествоСовпадений + 1;
Прервать;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
КонецЦикла; КонецЦикла;
// Строка заголовков содержит 2+ ключевых слова
Если КоличествоСовпадений >= 2 Тогда
Возврат Ном;
КонецЕсли;
КонецЦикла; КонецЦикла;
// Если не нашли — возвращаем 15 по умолчанию (для xls) // Fallback: строка 15 (для старых xls)
Возврат 15; Возврат 15;
КонецФункции КонецФункции