v3.0.0.120
This commit is contained in:
@@ -88,41 +88,24 @@
|
||||
ТаблДок.Прочитать(ПутьВрем);
|
||||
УдалитьФайлы(ПутьВрем);
|
||||
|
||||
// Диагностика: выводим все области
|
||||
Сообщить("Всего областей: " + ТаблДок.Области.Количество());
|
||||
// Строим карту: ИмяОбласти -> Верх (абсолютная строка)
|
||||
КартаОбластей = Новый Соответствие;
|
||||
Для Каждого Область Из ТаблДок.Области Цикл
|
||||
Сообщить(" Область: [" + Область.Имя + "] тип=" + Область.ТипОбласти);
|
||||
КартаОбластей.Вставить(Область.Имя, Область.Верх);
|
||||
КонецЦикла;
|
||||
|
||||
// Проверяем наличие листа "Расчет"
|
||||
ЛистРасчет = Неопределено;
|
||||
Для Каждого Область Из ТаблДок.Области Цикл
|
||||
Если ВРег(Область.Имя) = "РАСЧЕТ" Тогда
|
||||
ЛистРасчет = Область.Имя;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Если ЛистРасчет = Неопределено Тогда
|
||||
// Находим лист "Расчет"
|
||||
ВерхРасчет = КартаОбластей.Получить("Расчет");
|
||||
Если ВерхРасчет = Неопределено Тогда
|
||||
Сообщить("Лист 'Расчет' не найден!");
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
Сообщить("Лист 'Расчет' найден: " + ЛистРасчет);
|
||||
|
||||
// Диагностика: координаты области и чтение
|
||||
ОблРасчет = ТаблДок.Области.Найти("Расчет");
|
||||
Если ОблРасчет <> Неопределено Тогда
|
||||
Сообщить(" TopRow=" + ОблРасчет.Верх + " BottomRow=" + ОблРасчет.Низ);
|
||||
// Абсолютные координаты: строка 4 листа = TopRow + 3
|
||||
АбсСтрока4 = ОблРасчет.Верх + 3;
|
||||
Сообщить(" AbsRow4: " + СокрЛП("" + ТаблДок.Область(АбсСтрока4, 1, АбсСтрока4, 1).Текст));
|
||||
Сообщить(" AbsRow15: " + СокрЛП("" + ТаблДок.Область(ОблРасчет.Верх + 14, 1, ОблРасчет.Верх + 14, 1).Текст));
|
||||
КонецЕсли;
|
||||
|
||||
// Читаем шапку листа "Расчет"
|
||||
ГодЗагрузки = "" + ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, 4, 1);
|
||||
МесяцЗагрузки = Число(ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, 4, 1));
|
||||
Организация = СокрЛП(ПрочитатьСтрокуИзТД(ТаблДок, ЛистРасчет, 4, 20));
|
||||
СтатьяФинансирования = СокрЛП(ПрочитатьСтрокуИзТД(ТаблДок, ЛистРасчет, 8, 20));
|
||||
ГодЗагрузки = "" + ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, 4, 1);
|
||||
МесяцЗагрузки = Число(ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, 4, 1));
|
||||
Организация = СокрЛП(ПрочитатьСтрокуИзТД(ТаблДок, ВерхРасчет, 4, 20));
|
||||
СтатьяФинансирования = СокрЛП(ПрочитатьСтрокуИзТД(ТаблДок, ВерхРасчет, 8, 20));
|
||||
|
||||
// === ЭТАП 1: Обход листов сотрудников ===
|
||||
КэшФИО = Новый Соответствие;
|
||||
@@ -130,9 +113,9 @@
|
||||
МассивНДФЛ = Новый Массив;
|
||||
Счетчик = 0;
|
||||
Для Каждого Область Из ТаблДок.Области Цикл
|
||||
ИмяЛиста = Область.Имя;
|
||||
Если ВРег(ИмяЛиста) = "РАСЧЕТ" Тогда Продолжить; КонецЕсли;
|
||||
ФИО = ПрочитатьСтрокуИзТД(ТаблДок, ИмяЛиста, 2, 3);
|
||||
Если Область.Верх = ВерхРасчет Тогда Продолжить; КонецЕсли;
|
||||
Вх = Область.Верх;
|
||||
ФИО = ПрочитатьСтрокуИзТД(ТаблДок, Вх, 2, 3);
|
||||
Если Не ЗначениеЗаполнено(ФИО) Тогда Продолжить; КонецЕсли;
|
||||
Если СтрНачинаетсяС(ВРег(ФИО), "ИТОГО") Тогда Продолжить; КонецЕсли;
|
||||
Счетчик = Счетчик + 1;
|
||||
@@ -141,8 +124,8 @@
|
||||
Карточка.Вставить("ФИО", ФИО);
|
||||
Карточка.Вставить("ИНН", "");
|
||||
Карточка.Вставить("СНИЛС", "");
|
||||
Карточка.Вставить("ЛицевойСчетВБанке", ПрочитатьСтрокуИзТД(ТаблДок, ИмяЛиста, 3, 4));
|
||||
Карточка.Вставить("ВидЗанятости", ПрочитатьСтрокуИзТД(ТаблДок, ИмяЛиста, 5, 1));
|
||||
Карточка.Вставить("ЛицевойСчетВБанке", ПрочитатьСтрокуИзТД(ТаблДок, Вх, 3, 4));
|
||||
Карточка.Вставить("ВидЗанятости", ПрочитатьСтрокуИзТД(ТаблДок, Вх, 5, 1));
|
||||
Карточка.Вставить("АдресРегистрации", "");
|
||||
Карточка.Вставить("Идентификатор", Счетчик);
|
||||
МассивСотрудников.Добавить(Карточка);
|
||||
@@ -152,14 +135,14 @@
|
||||
ДанныеНДФЛ = Новый Структура;
|
||||
ДанныеНДФЛ.Вставить("ФИО", ФИО);
|
||||
ДанныеНДФЛ.Вставить("ИдентификаторСотрудника", Счетчик);
|
||||
ДанныеНДФЛ.Вставить("МесяцРасчета", ПрочитатьСтрокуИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 1));
|
||||
ДанныеНДФЛ.Вставить("СуммаВаловогоДохода", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 4));
|
||||
ДанныеНДФЛ.Вставить("СкидкаДляНДФЛЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 8));
|
||||
ДанныеНДФЛ.Вставить("ВычетНаРаботникаЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 12));
|
||||
ДанныеНДФЛ.Вставить("ВычетНаИждивенцевЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 13));
|
||||
ДанныеНДФЛ.Вставить("ИтогоНДФЛЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 18));
|
||||
ДанныеНДФЛ.Вставить("НалоговаяБазаПоСВЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 23));
|
||||
ДанныеНДФЛ.Вставить("ИтогоФСС", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 37));
|
||||
ДанныеНДФЛ.Вставить("МесяцРасчета", ПрочитатьСтрокуИзТД(ТаблДок, Вх, СтрокаМесяца, 1));
|
||||
ДанныеНДФЛ.Вставить("СуммаВаловогоДохода", ПрочитатьЧислоИзТД(ТаблДок, Вх, СтрокаМесяца, 4));
|
||||
ДанныеНДФЛ.Вставить("СкидкаДляНДФЛЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, Вх, СтрокаМесяца, 8));
|
||||
ДанныеНДФЛ.Вставить("ВычетНаРаботникаЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, Вх, СтрокаМесяца, 12));
|
||||
ДанныеНДФЛ.Вставить("ВычетНаИждивенцевЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, Вх, СтрокаМесяца, 13));
|
||||
ДанныеНДФЛ.Вставить("ИтогоНДФЛЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, Вх, СтрокаМесяца, 18));
|
||||
ДанныеНДФЛ.Вставить("НалоговаяБазаПоСВЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, Вх, СтрокаМесяца, 23));
|
||||
ДанныеНДФЛ.Вставить("ИтогоФСС", ПрочитатьЧислоИзТД(ТаблДок, Вх, СтрокаМесяца, 37));
|
||||
МассивНДФЛ.Добавить(ДанныеНДФЛ);
|
||||
КонецЕсли;
|
||||
КэшФИО.Вставить(ФИО, Счетчик);
|
||||
@@ -170,7 +153,7 @@
|
||||
МассивВзносов = Новый Массив;
|
||||
НачальнаяСтрока = 0;
|
||||
Для Ном = 17 По 30 Цикл
|
||||
ФТ = ПрочитатьСтрокуИзТД(ТаблДок, ЛистРасчет, Ном, 1);
|
||||
ФТ = ПрочитатьСтрокуИзТД(ТаблДок, ВерхРасчет, Ном, 1);
|
||||
Если Не ЗначениеЗаполнено(ФТ) Тогда Продолжить; КонецЕсли;
|
||||
Если Не СтрНачинаетсяС(ВРег(ФТ), "ИТОГО") И Не СтрНачинаетсяС(ВРег(ФТ), "СОТРУДНИК") И Не СтрНачинаетсяС(ВРег(ФТ), "ФАМИЛИЯ") И СтрДлина(ФТ) > 3 Тогда
|
||||
НачальнаяСтрока = Ном; Прервать;
|
||||
@@ -183,7 +166,7 @@
|
||||
|
||||
Счетчик = 0;
|
||||
Для Ном = НачальнаяСтрока По 500 Цикл
|
||||
ФИОТекст = ПрочитатьСтрокуИзТД(ТаблДок, ЛистРасчет, Ном, 1);
|
||||
ФИОТекст = ПрочитатьСтрокуИзТД(ТаблДок, ВерхРасчет, Ном, 1);
|
||||
Если Не ЗначениеЗаполнено(ФИОТекст) Тогда Продолжить; КонецЕсли;
|
||||
Если СтрНачинаетсяС(ВРег(ФИОТекст), "ИТОГО") Тогда Прервать; КонецЕсли;
|
||||
ИдСотр = КэшФИО.Получить(ФИОТекст);
|
||||
@@ -192,38 +175,38 @@
|
||||
С = Новый Структура;
|
||||
С.Вставить("ФИО", ФИОТекст);
|
||||
С.Вставить("ИдентификаторСотрудника", ИдСотр);
|
||||
С.Вставить("Должность", ПрочитатьСтрокуИзТД(ТаблДок, ЛистРасчет, Ном, 2));
|
||||
С.Вставить("СчетБК", ПрочитатьСтрокуИзТД(ТаблДок, ЛистРасчет, Ном, 3));
|
||||
С.Вставить("ВидЗанятости", ПрочитатьСтрокуИзТД(ТаблДок, ЛистРасчет, Ном, 4));
|
||||
С.Вставить("КоличествоСтавок", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 7));
|
||||
С.Вставить("Оклад", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 8));
|
||||
С.Вставить("ОтработаноДней", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 6));
|
||||
С.Вставить("РабочиеЧасыПоТабелю", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 12));
|
||||
С.Вставить("ДоплатаСовместительство", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 14));
|
||||
С.Вставить("ДоплатаИнтенсивность", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 16));
|
||||
С.Вставить("ДоплатаНочные", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 18));
|
||||
С.Вставить("ДоплатаПраздничные", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 19));
|
||||
С.Вставить("НадбавкаЗаКатегорию", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 21));
|
||||
С.Вставить("НадбавкаЗаВредность", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 22));
|
||||
С.Вставить("ПовышающийКоэффициент", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 23));
|
||||
С.Вставить("СтимулирующиеВыплаты", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 24));
|
||||
С.Вставить("РайонныйКоэффициент", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 26));
|
||||
С.Вставить("ПремияРазовая", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 28));
|
||||
С.Вставить("Отпуск", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 32));
|
||||
С.Вставить("КомпенсацияЗаОтпуск", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 33));
|
||||
С.Вставить("ВыходноеПособие", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 35));
|
||||
С.Вставить("ДоплатаДоМРОТ", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 37));
|
||||
С.Вставить("Родовые", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 38));
|
||||
С.Вставить("ИтогоНачислено", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 39));
|
||||
С.Вставить("НДФЛ", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 40));
|
||||
С.Вставить("ПрофВзнос", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 41));
|
||||
С.Вставить("ИсполнительныеДокументы", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 42));
|
||||
С.Вставить("Аванс", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 43));
|
||||
С.Вставить("Касса1", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 46));
|
||||
С.Вставить("Касса2", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 47));
|
||||
С.Вставить("Касса3", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 48));
|
||||
С.Вставить("БезналичныеПеречисления", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 50));
|
||||
С.Вставить("ВсегоНаРуки", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 55));
|
||||
С.Вставить("Должность", ПрочитатьСтрокуИзТД(ТаблДок, ВерхРасчет, Ном, 2));
|
||||
С.Вставить("СчетБК", ПрочитатьСтрокуИзТД(ТаблДок, ВерхРасчет, Ном, 3));
|
||||
С.Вставить("ВидЗанятости", ПрочитатьСтрокуИзТД(ТаблДок, ВерхРасчет, Ном, 4));
|
||||
С.Вставить("КоличествоСтавок", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 7));
|
||||
С.Вставить("Оклад", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 8));
|
||||
С.Вставить("ОтработаноДней", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 6));
|
||||
С.Вставить("РабочиеЧасыПоТабелю", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 12));
|
||||
С.Вставить("ДоплатаСовместительство", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 14));
|
||||
С.Вставить("ДоплатаИнтенсивность", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 16));
|
||||
С.Вставить("ДоплатаНочные", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 18));
|
||||
С.Вставить("ДоплатаПраздничные", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 19));
|
||||
С.Вставить("НадбавкаЗаКатегорию", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 21));
|
||||
С.Вставить("НадбавкаЗаВредность", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 22));
|
||||
С.Вставить("ПовышающийКоэффициент", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 23));
|
||||
С.Вставить("СтимулирующиеВыплаты", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 24));
|
||||
С.Вставить("РайонныйКоэффициент", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 26));
|
||||
С.Вставить("ПремияРазовая", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 28));
|
||||
С.Вставить("Отпуск", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 32));
|
||||
С.Вставить("КомпенсацияЗаОтпуск", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 33));
|
||||
С.Вставить("ВыходноеПособие", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 35));
|
||||
С.Вставить("ДоплатаДоМРОТ", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 37));
|
||||
С.Вставить("Родовые", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 38));
|
||||
С.Вставить("ИтогоНачислено", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 39));
|
||||
С.Вставить("НДФЛ", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 40));
|
||||
С.Вставить("ПрофВзнос", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 41));
|
||||
С.Вставить("ИсполнительныеДокументы", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 42));
|
||||
С.Вставить("Аванс", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 43));
|
||||
С.Вставить("Касса1", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 46));
|
||||
С.Вставить("Касса2", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 47));
|
||||
С.Вставить("Касса3", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 48));
|
||||
С.Вставить("БезналичныеПеречисления", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 50));
|
||||
С.Вставить("ВсегоНаРуки", ПрочитатьЧислоИзТД(ТаблДок, ВерхРасчет, Ном, 55));
|
||||
С.Вставить("ЗарплатаЗаПервуюПоловину", 0);
|
||||
С.Вставить("ПремияАванс", 0);
|
||||
С.Вставить("ВыплатыВМежрасчетный", 0);
|
||||
@@ -247,9 +230,10 @@
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПрочитатьЧислоИзТД(ТаблДок, ИмяОбласти, Строка, Колонка)
|
||||
Функция ПрочитатьЧислоИзТД(ТаблДок, ВерхОбласти, Строка, Колонка)
|
||||
Попытка
|
||||
Значение = ТаблДок.Область(ИмяОбласти + "|R" + Строка + "C" + Колонка).Текст;
|
||||
АбсСтрока = ВерхОбласти + Строка - 1;
|
||||
Значение = ТаблДок.Область(АбсСтрока, Колонка, АбсСтрока, Колонка).Текст;
|
||||
Если Не ЗначениеЗаполнено(Значение) Тогда Возврат 0; КонецЕсли;
|
||||
Возврат Число(СокрЛП(Значение));
|
||||
Исключение
|
||||
@@ -258,9 +242,10 @@
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПрочитатьСтрокуИзТД(ТаблДок, ИмяОбласти, Строка, Колонка)
|
||||
Функция ПрочитатьСтрокуИзТД(ТаблДок, ВерхОбласти, Строка, Колонка)
|
||||
Попытка
|
||||
Возврат СокрЛП("" + ТаблДок.Область(ИмяОбласти + "|R" + Строка + "C" + Колонка).Текст);
|
||||
АбсСтрока = ВерхОбласти + Строка - 1;
|
||||
Возврат СокрЛП("" + ТаблДок.Область(АбсСтрока, Колонка, АбсСтрока, Колонка).Текст);
|
||||
Исключение
|
||||
Возврат "";
|
||||
КонецПопытки;
|
||||
|
||||
Reference in New Issue
Block a user