From f57df971bab9684429e1dd8e448414b4e409117c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=80=D0=BE=D1=84=D0=B8-=D0=A1=D0=BE=D1=84=D1=82?= Date: Wed, 8 Jul 2026 11:48:39 +0000 Subject: [PATCH] v3.0.0.9: fix col index 0->1, fix insurance from RASSCHET, fix Index 1-based --- Configuration.xml | 2 +- .../Forms/Форма/Ext/Form/Module.bsl | 27 +++++++++++-------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Configuration.xml b/Configuration.xml index 1aac6a4..5ed77b0 100755 --- a/Configuration.xml +++ b/Configuration.xml @@ -60,7 +60,7 @@ Russian Language.Русский ООО "Профи-Софт", код партнера 42575-13, г.Байконур. - 3.0.0.7 + 3.0.0.8 Language.Русский diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl index c263b58..015ea10 100644 --- a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl +++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl @@ -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) - ФИО = ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 0); + ФИО = ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 1); // Попытка 2: если значение пустое — проверяем формулу (xlsm) ЛистСотрудника = Неопределено; @@ -450,12 +459,8 @@ МассивДанных.Добавить(Строка); - // Чтение страховых взносов - Если ЛистСотрудника <> Неопределено Тогда - СтрВзносов = ПрочитатьСтрокуВзносов(ЛистСотрудника, 2, ФИО, ИндексЗаголовков); - Иначе - СтрВзносов = ПрочитатьСтрокуВзносов(ЛистРасчет, Ном, ФИО, ИндексЗаголовков); - КонецЕсли; + // Чтение страховых взносов (из РАСЧЕТ, т.к. на листах сотрудников взносов нет) + СтрВзносов = ПрочитатьСтрокуВзносов(ЛистРасчет, Ном, ФИО, ИндексЗаголовков); Если СтрВзносов <> Неопределено Тогда МассивВзносов.Добавить(СтрВзносов); КонецЕсли;