diff --git a/Configuration.xml b/Configuration.xml
index 733ea86..489efa0 100755
--- a/Configuration.xml
+++ b/Configuration.xml
@@ -60,7 +60,7 @@
Russian
Language.Русский
ООО "Профи-Софт", код партнера 42575-13, г.Байконур.
- 3.0.0.14
+ 3.0.0.15
Language.Русский
diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
index 82acc6d..61e2ff3 100644
--- a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
+++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
@@ -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, ФИО, ИндексЗаголовков);
+ Строка = ПрочитатьДанныеИзЛистаСотрудника(ЛистСотрудника, ФИО);
Иначе
Строка = ПрочитатьСтрокуРасчета(ЛистРасчет, Ном, ФИО, ИндексЗаголовков);
КонецЕсли;