v3.0.0.5: динамический поиск строки заголовков для xls/xlsm, маппинг Счет БК
This commit is contained in:
@@ -158,6 +158,34 @@
|
|||||||
Возврат -1;
|
Возврат -1;
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
// Находит строку заголовков, содержащую ключевые слова ("Сотрудник" или "Должность").
|
||||||
|
// Обеспечивает совместимость с xls (строка 15) и xlsm (строка 16).
|
||||||
|
&НаКлиенте
|
||||||
|
Функция НайтиСтрокуЗаголовков(ЛистРасчет)
|
||||||
|
// Ключевые слова заголовков (в нижнем регистре)
|
||||||
|
КлючевыеСлова = Новый Массив;
|
||||||
|
КлючевыеСлова.Добавить("сотрудник");
|
||||||
|
КлючевыеСлова.Добавить("должность");
|
||||||
|
КлючевыеСлова.Добавить("счет");
|
||||||
|
|
||||||
|
// Ищем в диапазоне строк 10-20 (с запасом)
|
||||||
|
Для Ном = 10 По Мин(20, ЛистРасчет.Rows.Count) Цикл
|
||||||
|
Для Каждого КлючевоеСлово Из КлючевыеСлова Цикл
|
||||||
|
Для Колонка = 1 По Мин(5, ЛистРасчет.Columns.Count) Цикл
|
||||||
|
Значение = ЛистРасчет.Cells(Ном, Колонка).Value;
|
||||||
|
Если Значение <> Неопределено Тогда
|
||||||
|
Если СтрНайти(НРег(СокрЛП("" + Значение)), КлючевоеСлово) > 0 Тогда
|
||||||
|
Возврат Ном;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЦикла;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Если не нашли — возвращаем 15 по умолчанию (для xls)
|
||||||
|
Возврат 15;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
// Определяет номер строки первого сотрудника (первая непустая строка после заголовков).
|
// Определяет номер строки первого сотрудника (первая непустая строка после заголовков).
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Функция НайтиСтрокуПервогоСотрудника(ЛистРасчет, НомерСтрокиЗаголовков)
|
Функция НайтиСтрокуПервогоСотрудника(ЛистРасчет, НомерСтрокиЗаголовков)
|
||||||
@@ -197,6 +225,7 @@
|
|||||||
Строка.Вставить("ФИО", ФИО);
|
Строка.Вставить("ФИО", ФИО);
|
||||||
|
|
||||||
// Поиск колонок по заголовкам
|
// Поиск колонок по заголовкам
|
||||||
|
// Маппинг: "Счет БК" в Excel = "Лицевой счет сотрудника в банке для зарплатного проекта" в 1С ЗиКГУ
|
||||||
КолДолжность = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "должность");
|
КолДолжность = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "должность");
|
||||||
КолСчетБК = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "счет");
|
КолСчетБК = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "счет");
|
||||||
КолВидЗанятости = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "вид занятости");
|
КолВидЗанятости = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "вид занятости");
|
||||||
@@ -327,7 +356,7 @@
|
|||||||
СтатусЗагрузки = "Анализ заголовков...";
|
СтатусЗагрузки = "Анализ заголовков...";
|
||||||
Состояние("Анализ заголовков...", 22);
|
Состояние("Анализ заголовков...", 22);
|
||||||
|
|
||||||
НомерСтрокиЗаголовков = 15;
|
НомерСтрокиЗаголовков = НайтиСтрокуЗаголовков(ЛистРасчет);
|
||||||
ИндексЗаголовков = СоздатьИндексЗаголовков(ЛистРасчет, НомерСтрокиЗаголовков);
|
ИндексЗаголовков = СоздатьИндексЗаголовков(ЛистРасчет, НомерСтрокиЗаголовков);
|
||||||
|
|
||||||
// Этап 6: Определение строки первого сотрудника
|
// Этап 6: Определение строки первого сотрудника
|
||||||
|
|||||||
Reference in New Issue
Block a user