v3.0.0.9: fix col index 0->1, fix insurance from RASSCHET, fix Index 1-based

This commit is contained in:
Профи-Софт
2026-07-08 11:48:39 +00:00
parent d131d0aad5
commit f57df971ba
2 changed files with 17 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.7</Version> <Version>3.0.0.8</Version>
<DefaultLanguage>Language.Русский</DefaultLanguage> <DefaultLanguage>Language.Русский</DefaultLanguage>
<BriefInformation> <BriefInformation>
<v8:item> <v8:item>
@@ -148,12 +148,21 @@
// ============================================================================ // ============================================================================
// Создаёт Соответствие для поиска колонок по имени заголовка. // Создаёт Соответствие для поиска колонок по имени заголовка.
// Ключ — имя заголовка (нижний регистр), значение — номер колонки (0-based). // Ключ — имя заголовка (нижний регистр), значение — номер колонки (1-based).
&НаКлиенте &НаКлиенте
Функция СоздатьИндексЗаголовков(Лист, НомерСтрокиЗаголовков) Функция СоздатьИндексЗаголовков(Лист, НомерСтрокиЗаголовков)
Индекс = Новый Соответствие; Индекс = Новый Соответствие;
Для Колонка = 0 По Лист.Cells(НомерСтрокиЗаголовков, 1).End(-4161).Column - 1 Цикл // Определяем количество колонок: ищем последнюю непустую колонку
Имя = СокрЛП(НРег(Лист.Cells(НомерСтрокиЗаголовков, Колонка + 1).Value)); ПоследняяКолонка = 1;
Для Колонка = 1 По 100 Цикл
Значение = Лист.Cells(НомерСтрокиЗаголовков, Колонка).Value;
Если Значение <> Неопределено И Значение <> "" Тогда
ПоследняяКолонка = Колонка;
КонецЕсли;
КонецЦикла;
Для Колонка = 1 По ПоследняяКолонка Цикл
Имя = СокрЛП(НРег(Лист.Cells(НомерСтрокиЗаголовков, Колонка).Value));
Если ЗначениеЗаполнено(Имя) Тогда Если ЗначениеЗаполнено(Имя) Тогда
Индекс.Вставить(Имя, Колонка); Индекс.Вставить(Имя, Колонка);
КонецЕсли; КонецЕсли;
@@ -162,7 +171,7 @@
КонецФункции КонецФункции
// Находит номер колонки по ключевому слову в заголовке. // Находит номер колонки по ключевому слову в заголовке.
// Возвращает номер колонки (0-based) или -1 если не найдено. // Возвращает номер колонки (1-based) или -1 если не найдено.
&НаКлиенте &НаКлиенте
Функция НайтиКолонкуПоЗаголовку(ИндексЗаголовков, КлючевоеСлово) Функция НайтиКолонкуПоЗаголовку(ИндексЗаголовков, КлючевоеСлово)
Ключ = НРег(КлючевоеСлово); Ключ = НРег(КлючевоеСлово);
@@ -404,7 +413,7 @@
Пока Истина Цикл Пока Истина Цикл
// Попытка 1: читаем значение напрямую (xls) // Попытка 1: читаем значение напрямую (xls)
ФИО = ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 0); ФИО = ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 1);
// Попытка 2: если значение пустое — проверяем формулу (xlsm) // Попытка 2: если значение пустое — проверяем формулу (xlsm)
ЛистСотрудника = Неопределено; ЛистСотрудника = Неопределено;
@@ -450,12 +459,8 @@
МассивДанных.Добавить(Строка); МассивДанных.Добавить(Строка);
// Чтение страховых взносов // Чтение страховых взносов (из РАСЧЕТ, т.к. на листах сотрудников взносов нет)
Если ЛистСотрудника <> Неопределено Тогда СтрВзносов = ПрочитатьСтрокуВзносов(ЛистРасчет, Ном, ФИО, ИндексЗаголовков);
СтрВзносов = ПрочитатьСтрокуВзносов(ЛистСотрудника, 2, ФИО, ИндексЗаголовков);
Иначе
СтрВзносов = ПрочитатьСтрокуВзносов(ЛистРасчет, Ном, ФИО, ИндексЗаголовков);
КонецЕсли;
Если СтрВзносов <> Неопределено Тогда Если СтрВзносов <> Неопределено Тогда
МассивВзносов.Добавить(СтрВзносов); МассивВзносов.Добавить(СтрВзносов);
КонецЕсли; КонецЕсли;