v3.0.0.16: fix xlsm reading - direct cell access for employee sheets
This commit is contained in:
+1
-1
@@ -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.14</Version>
|
<Version>3.0.0.15</Version>
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
<BriefInformation>
|
<BriefInformation>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
|
|||||||
@@ -220,6 +220,36 @@
|
|||||||
Возврат 15;
|
Возврат 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);
|
ПрогрессЗаписи = 25 + 65 * (Ном - 1) / Макс(КоличествоСтрок, 1);
|
||||||
Состояние("Расчет ЗП: " + ФИО, ПрогрессЗаписи);
|
Состояние("Расчет ЗП: " + ФИО, ПрогрессЗаписи);
|
||||||
|
|
||||||
// Если есть лист сотрудника — читаем из него, иначе из РАСЧЕТ
|
// Если есть лист сотрудника — читаем напрямую из его ячеек
|
||||||
Если ЛистСотрудника <> Неопределено Тогда
|
Если ЛистСотрудника <> Неопределено Тогда
|
||||||
Строка = ПрочитатьСтрокуРасчета(ЛистСотрудника, 2, ФИО, ИндексЗаголовков);
|
Строка = ПрочитатьДанныеИзЛистаСотрудника(ЛистСотрудника, ФИО);
|
||||||
Иначе
|
Иначе
|
||||||
Строка = ПрочитатьСтрокуРасчета(ЛистРасчет, Ном, ФИО, ИндексЗаголовков);
|
Строка = ПрочитатьСтрокуРасчета(ЛистРасчет, Ном, ФИО, ИндексЗаголовков);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|||||||
Reference in New Issue
Block a user