v3.0.0.16: fix xlsm reading - direct cell access for employee sheets
This commit is contained in:
@@ -220,6 +220,36 @@
|
||||
Возврат 15;
|
||||
КонецФункции
|
||||
|
||||
// Читает данные из листа сотрудника напрямую из ячеек.
|
||||
// Формулы в РАСЧЕТ ссылаются на: C2(ФИО), C3(Должность), D3(Счет), A5(Вид занятости),
|
||||
// и OFFSET-формулы для месячных данных (строка 12 + смещение по A4).
|
||||
&НаКлиенте
|
||||
Функция ПрочитатьДанныеИзЛистаСотрудника(ЛистСотрудника, ФИО)
|
||||
Строка = Новый Структура;
|
||||
Строка.Вставить("ФИО", ФИО);
|
||||
Строка.Вставить("Должность", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 3)); // C3
|
||||
Строка.Вставить("СчетБК", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 4)); // D3
|
||||
Строка.Вставить("ВидЗанятости", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 5, 1)); // A5
|
||||
|
||||
// Месяц загрузки определяет смещение для OFFSET-формул
|
||||
// Базовая строка данных — строка 12, смещение = месяц
|
||||
БазоваяСтрока = 12;
|
||||
Смещение = Объект.МесяцЗагрузки;
|
||||
Если Не ЗначениеЗаполнено(Смещение) Тогда Смещение = 1; КонецЕсли;
|
||||
СтрокаДанных = БазоваяСтрока + Смещение;
|
||||
|
||||
// Часовая норма (столбец C, т.е. колонка 3)
|
||||
Строка.Вставить("Оклад", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 3, ФИО + " Оклад"));
|
||||
Строка.Вставить("КоличествоСтавок", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 4, ФИО + " Ставки"));
|
||||
Строка.Вставить("ОтработаноДней", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 5, ФИО + " Отработано"));
|
||||
Строка.Вставить("ИтогоНачислено", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 10, ФИО + " Итого начислено"));
|
||||
Строка.Вставить("НДФЛ", 0); // НДФЛ не на листе сотрудника
|
||||
Строка.Вставить("ИтогоУдержано", 0); // Удержания не на листе сотрудника
|
||||
Строка.Вставить("ВсегоНаРуки", 0); // Итого на руки не на листе сотрудника
|
||||
|
||||
Возврат Строка;
|
||||
КонецФункции
|
||||
|
||||
// Определяет номер строки первого сотрудника (первая непустая строка после заголовков).
|
||||
&НаКлиенте
|
||||
Функция НайтиСтрокуПервогоСотрудника(ЛистРасчет, НомерСтрокиЗаголовков)
|
||||
@@ -444,9 +474,9 @@
|
||||
ПрогрессЗаписи = 25 + 65 * (Ном - 1) / Макс(КоличествоСтрок, 1);
|
||||
Состояние("Расчет ЗП: " + ФИО, ПрогрессЗаписи);
|
||||
|
||||
// Если есть лист сотрудника — читаем из него, иначе из РАСЧЕТ
|
||||
// Если есть лист сотрудника — читаем напрямую из его ячеек
|
||||
Если ЛистСотрудника <> Неопределено Тогда
|
||||
Строка = ПрочитатьСтрокуРасчета(ЛистСотрудника, 2, ФИО, ИндексЗаголовков);
|
||||
Строка = ПрочитатьДанныеИзЛистаСотрудника(ЛистСотрудника, ФИО);
|
||||
Иначе
|
||||
Строка = ПрочитатьСтрокуРасчета(ЛистРасчет, Ном, ФИО, ИндексЗаголовков);
|
||||
КонецЕсли;
|
||||
|
||||
Reference in New Issue
Block a user