v3.0.0.109
This commit is contained in:
+1
-1
@@ -56,7 +56,7 @@
|
||||
<ScriptVariant>Russian</ScriptVariant>
|
||||
<DefaultRoles/>
|
||||
<Vendor>ООО "Профи-Софт", код партнера 42575-13, г.Байконур.</Vendor>
|
||||
<Version>3.0.0.108</Version>
|
||||
<Version>3.0.0.109</Version>
|
||||
<Caption/>
|
||||
<ShortCaption/>
|
||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗаписатьДанныеНаСервере(ГодЗагрузкиПараметр, МесяцЗагрузки, ОрганизацияНаименование, СтатьяФинансированияНаименование, СтатьяРасходовКод)
|
||||
Период = Дата(Год(ТекущаяДата()), МесяцЗагрузки, 1);
|
||||
@@ -38,15 +36,21 @@
|
||||
Сообщить("Выберите файл!");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Состояние("Загрузка файла...");
|
||||
АдресТабДока = ЗагрузитьФайлНаСервере(Объект.ПутьКФайлу);
|
||||
Если АдресТабДока = Неопределено Тогда
|
||||
Состояние("Загрузка и чтение файла...");
|
||||
Результат = ПрочитатьФайлНаСервере(Объект.ПутьКФайлу);
|
||||
Если Результат = Неопределено Тогда
|
||||
Сообщить("Ошибка загрузки файла!");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Состояние("Чтение данных...");
|
||||
ПрочитатьДанные(АдресТабДока);
|
||||
СтатусЗагрузки = "Загружено: " + Объект.Сотрудники.Количество() + " сотр., " + Объект.ДанныеРасчетаЗП.Количество() + " записей";
|
||||
// Заполняем реквизиты формы
|
||||
Объект._ГодЗагрузки = Результат.ГодЗагрузки;
|
||||
Объект.МесяцЗагрузки = Результат.МесяцЗагрузки;
|
||||
Объект._ОрганизацияНаименование = Результат.Организация;
|
||||
Объект._СтатьяФинансированияНаименование = Результат.СтатьяФинансирования;
|
||||
Объект._СтатьяРасходовКод = "211";
|
||||
// Заполняем таблицы
|
||||
ЗаполнитьТаблицыНаСервере(Результат.Данные, Результат.Взносы, Результат.НДФЛ, Результат.Сотрудники);
|
||||
СтатусЗагрузки = "Загружено: " + Результат.Данные.Количество() + " записей, " + Результат.Сотрудники.Количество() + " сотр.";
|
||||
Состояние("Готово", 100);
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -63,237 +67,172 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ЧтениеДанных
|
||||
#Область СерверныеПроцедуры
|
||||
|
||||
// Главная функция: читает Excel файл целиком на сервере и возвращает структуру результатов
|
||||
&НаСервере
|
||||
Функция ПрочитатьФайлНаСервере(ПутьКФайлу) Экспорт
|
||||
ФайлНаДиске = Новый Файл(ПутьКФайлу);
|
||||
Если Не ФайлНаДиске.Существует() Тогда
|
||||
Сообщить("Файл не найден: " + ПутьКФайлу);
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
// Копируем во временный каталог (обход проблем с кириллицей)
|
||||
ВремКаталог = КаталогВременныхФайлов();
|
||||
ИмяФайла = "temp_load" + Формат(ТекущаяДатаСеанса(), "ДФ=yyyyMMddHHmmss") + ФайлНаДиске.Расширение;
|
||||
ПутьВрем = ВремКаталог + ИмяФайла;
|
||||
КопироватьФайл(ПутьКФайлу, ПутьВрем);
|
||||
// Читаем в ТабличныйДокумент
|
||||
ТаблДок = Новый ТабличныйДокумент;
|
||||
ТаблДок.Прочитать(ПутьВрем);
|
||||
УдалитьФайлы(ПутьВрем);
|
||||
|
||||
// Проверяем наличие листа "Расчет"
|
||||
ЛистРасчет = Неопределено;
|
||||
Для Каждого Область Из ТаблДок.Области Цикл
|
||||
Если Область.ТипОбласти = 1 И ВРег(Область.Имя) = "РАСЧЕТ" Тогда
|
||||
ЛистРасчет = Область.Имя;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Если ЛистРасчет = Неопределено Тогда
|
||||
Сообщить("Лист 'Расчет' не найден!");
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
// Читаем шапку листа "Расчет"
|
||||
ГодЗагрузки = "" + ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, 4, 1);
|
||||
МесяцЗагрузки = Число(ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, 4, 1));
|
||||
Организация = СокрЛП("" + ТаблДок.Область(ЛистРасчет + "|T4").Текст);
|
||||
СтатьяФинансирования = СокрЛП("" + ТаблДок.Область(ЛистРасчет + "|T8").Текст);
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПрочитатьДанные(АдресТабДока)
|
||||
// === ЭТАП 1: Обход листов сотрудников ===
|
||||
Листы = ПолучитьЛистыНаСервере(АдресТабДока);
|
||||
КэшФИО = Новый Соответствие;
|
||||
МассивДанных = Новый Массив;
|
||||
МассивВзносов = Новый Массив;
|
||||
МассивНДФЛ = Новый Массив;
|
||||
МассивСотрудников = Новый Массив;
|
||||
МассивНДФЛ = Новый Массив;
|
||||
Счетчик = 0;
|
||||
Для Каждого Лист Из Листы Цикл
|
||||
ФИО = ПрочитатьСтрокуНаСервере(АдресТабДока, Лист.Имя, 2, 3);
|
||||
Для Каждого Область Из ТаблДок.Области Цикл
|
||||
Если Область.ТипОбласти <> 1 Тогда Продолжить; КонецЕсли;
|
||||
ИмяЛиста = Область.Имя;
|
||||
Если ВРег(ИмяЛиста) = "РАСЧЕТ" Тогда Продолжить; КонецЕсли;
|
||||
ФИО = СокрЛП("" + ТаблДок.Область(ИмяЛиста + "|C2").Текст);
|
||||
Если Не ЗначениеЗаполнено(ФИО) Тогда Продолжить; КонецЕсли;
|
||||
Если СтрНачинаетсяС(ВРег(ФИО), "ИТОГО") Тогда Продолжить; КонецЕсли;
|
||||
Счетчик = Счетчик + 1;
|
||||
Состояние("Этап 1: " + ФИО, 20 + 30 * Счетчик / 50);
|
||||
Карточка = ПрочитатьКарточкуНаСервере(АдресТабДока, Лист.Имя);
|
||||
Карточка.Вставить("Идентификатор", Счетчик);
|
||||
// Карточка сотрудника
|
||||
Карточка = Новый Структура;
|
||||
Карточка.Вставить("ФИО", ФИО);
|
||||
ДанныеНДФЛ = ПрочитатьНДФЛНаСервере(АдресТабДока, Лист.Имя, Объект.МесяцЗагрузки, ФИО);
|
||||
Если ДанныеНДФЛ <> Неопределено Тогда ДанныеНДФЛ.Вставить("ИдентификаторСотрудника", Счетчик); КонецЕсли;
|
||||
СтрокаМесяца = 35 + Объект.МесяцЗагрузки;
|
||||
ОтрДнейКал = ПрочитатьЧислоНаСервере(АдресТабДока, Лист.Имя, СтрокаМесяца, 4);
|
||||
КэшФИО.Вставить(ФИО, Новый Структура("Карточка, НДФЛ, ОтработаноДнейКалендарных, Идентификатор", Карточка, ДанныеНДФЛ, ОтрДнейКал, Счетчик));
|
||||
Карточка.Вставить("ИНН", "");
|
||||
Карточка.Вставить("СНИЛС", "");
|
||||
Карточка.Вставить("ЛицевойСчетВБанке", СокрЛП("" + ТаблДок.Область(ИмяЛиста + "|D3").Текст));
|
||||
Карточка.Вставить("ВидЗанятости", СокрЛП("" + ТаблДок.Область(ИмяЛиста + "|A5").Текст));
|
||||
Карточка.Вставить("АдресРегистрации", "");
|
||||
Карточка.Вставить("Идентификатор", Счетчик);
|
||||
МассивСотрудников.Добавить(Карточка);
|
||||
// НДФЛ
|
||||
СтрокаМесяца = 35 + МесяцЗагрузки;
|
||||
Если СтрокаМесяца <= 47 Тогда
|
||||
ДанныеНДФЛ = Новый Структура;
|
||||
ДанныеНДФЛ.Вставить("ФИО", ФИО);
|
||||
ДанныеНДФЛ.Вставить("ИдентификаторСотрудника", Счетчик);
|
||||
ДанныеНДФЛ.Вставить("МесяцРасчета", СокрЛП("" + ТаблДок.Область(ИмяЛиста + "|A" + СтрокаМесяца).Текст));
|
||||
ДанныеНДФЛ.Вставить("СуммаВаловогоДохода", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 4));
|
||||
ДанныеНДФЛ.Вставить("СкидкаДляНДФЛЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 8));
|
||||
ДанныеНДФЛ.Вставить("ВычетНаРаботникаЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 12));
|
||||
ДанныеНДФЛ.Вставить("ВычетНаИждивенцевЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 13));
|
||||
ДанныеНДФЛ.Вставить("ИтогоНДФЛЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 18));
|
||||
ДанныеНДФЛ.Вставить("НалоговаяБазаПоСВЗаМесяц", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 23));
|
||||
ДанныеНДФЛ.Вставить("ИтогоФСС", ПрочитатьЧислоИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 37));
|
||||
МассивНДФЛ.Добавить(ДанныеНДФЛ);
|
||||
КонецЕсли;
|
||||
КэшФИО.Вставить(ФИО, Счетчик);
|
||||
КонецЦикла;
|
||||
|
||||
// === ЭТАП 2: Чтение листа "Расчет" ===
|
||||
ЛистРасчет = НайтиЛистНаСервере(АдресТабДока, "Расчет");
|
||||
Если ЛистРасчет = Неопределено Тогда Сообщить("Лист 'Расчет' не найден!"); Возврат; КонецЕсли;
|
||||
Объект._ГодЗагрузки = Строка(ПрочитатьЧислоНаСервере(АдресТабДока, ЛистРасчет, 4, 1));
|
||||
Объект._ОрганизацияНаименование = ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, 4, 20);
|
||||
Объект._СтатьяФинансированияНаименование = ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, 8, 20);
|
||||
Объект._СтатьяРасходовКод = "211";
|
||||
Объект.МесяцЗагрузки = Число(ПрочитатьЧислоНаСервере(АдресТабДока, ЛистРасчет, 4, 1));
|
||||
МассивДанных = Новый Массив;
|
||||
МассивВзносов = Новый Массив;
|
||||
НачальнаяСтрока = 0;
|
||||
Для Ном = 17 По 30 Цикл
|
||||
ФТ = СокрЛП(ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, Ном, 1));
|
||||
ФТ = СокрЛП("" + ТаблДок.Область(ЛистРасчет + "|A" + Ном).Текст);
|
||||
Если Не ЗначениеЗаполнено(ФТ) Тогда Продолжить; КонецЕсли;
|
||||
Если Не СтрНачинаетсяС(ВРег(ФТ), "ИТОГО") И Не СтрНачинаетсяС(ВРег(ФТ), "СОТРУДНИК") И Не СтрНачинаетсяС(ВРег(ФТ), "ФАМИЛИЯ") И СтрДлина(ФТ) > 3 Тогда
|
||||
НачальнаяСтрока = Ном; Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Если НачальнаяСтрока = 0 Тогда Сообщить("Данные не найдены!"); Возврат; КонецЕсли;
|
||||
МассивДанных = Новый Массив;
|
||||
МассивВзносов = Новый Массив;
|
||||
МассивНДФЛ = Новый Массив;
|
||||
МассивСотрудников = Новый Массив;
|
||||
Если НачальнаяСтрока = 0 Тогда
|
||||
Сообщить("Данные не найдены!");
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Счетчик = 0;
|
||||
Для Ном = НачальнаяСтрока По 500 Цикл
|
||||
ФИОТекст = СокрЛП(ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, Ном, 1));
|
||||
ФИОТекст = СокрЛП("" + ТаблДок.Область(ЛистРасчет + "|A" + Ном).Текст);
|
||||
Если Не ЗначениеЗаполнено(ФИОТекст) Тогда Продолжить; КонецЕсли;
|
||||
Если СтрНачинаетсяС(ВРег(ФИОТекст), "ИТОГО") Тогда Прервать; КонецЕсли;
|
||||
ЛистСотр = КэшФИО.Получить(ФИОТекст);
|
||||
Если ЛистСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||
ИдСотр = КэшФИО.Получить(ФИОТекст);
|
||||
Если ИдСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||
Счетчик = Счетчик + 1;
|
||||
Состояние("Этап 2: " + ФИОТекст, 50 + 40 * Счетчик / 50);
|
||||
Строка = ПрочитатьРасчетныеДанные(АдресТабДока, ЛистРасчет, Ном, ФИОТекст, ЛистСотр);
|
||||
МассивДанных.Добавить(Строка);
|
||||
МассивСотрудников.Добавить(ЛистСотр.Карточка);
|
||||
Если ЛистСотр.НДФЛ <> Неопределено Тогда МассивНДФЛ.Добавить(ЛистСотр.НДФЛ); КонецЕсли;
|
||||
КонецЦикла;
|
||||
ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников);
|
||||
СтатусЗагрузки = "Загружено: " + Счетчик + " записей";
|
||||
Состояние("Готово", 100);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Функция ПрочитатьРасчетныеДанные(АдресТабДока, ЛистРасчет, Ном, ФИО, ЛистСотр)
|
||||
С = Новый Структура;
|
||||
С.Вставить("ФИО", ФИО);
|
||||
С.Вставить("ИдентификаторСотрудника", ЛистСотр.Идентификатор);
|
||||
С.Вставить("Должность", ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, Ном, 2));
|
||||
С.Вставить("СчетБК", ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, Ном, 3));
|
||||
С.Вставить("ВидЗанятости", ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, Ном, 4));
|
||||
С.Вставить("Оклад", ПрочитатьЧислоНаСервере(АдресТабДока, ЛистРасчет, Ном, 8));
|
||||
С.Вставить("КоличествоСтавок", ПрочитатьЧислоНаСервере(АдресТабДока, ЛистРасчет, Ном, 7));
|
||||
С.Вставить("ОтработаноДней", ПрочитатьЧислоНаСервере(АдресТабДока, ЛистРасчет, Ном, 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));
|
||||
С.Вставить("ФИО", ФИОТекст);
|
||||
С.Вставить("ИдентификаторСотрудника", ИдСотр);
|
||||
С.Вставить("Должность", СокрЛП("" + ТаблДок.Область(ЛистРасчет + "|B" + Ном).Текст));
|
||||
С.Вставить("СчетБК", СокрЛП("" + ТаблДок.Область(ЛистРасчет + "|C" + Ном).Текст));
|
||||
С.Вставить("ВидЗанятости", СокрЛП("" + ТаблДок.Область(ЛистРасчет + "|D" + Ном).Текст));
|
||||
С.Вставить("КоличествоСтавок", ПрочитатьЧислоИзТД(ТаблДок, ЛистРасчет, Ном, 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);
|
||||
С.Вставить("ОтработаноДнейКалендарных", ЛистСотр.ОтработаноДнейКалендарных);
|
||||
С.Вставить("ОтработаноДнейКалендарных", 0);
|
||||
С.Вставить("ИтогоУдержано", С.НДФЛ + С.ПрофВзнос + С.ИсполнительныеДокументы);
|
||||
С.Вставить("ИтогоВыплачено", С.Аванс + С.Касса1 + С.Касса2 + С.Касса3 + С.БезналичныеПеречисления);
|
||||
Возврат С;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СерверныеПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Функция ЗагрузитьФайлНаСервере(ПутьКФайлу) Экспорт
|
||||
ФайлНаДиске = Новый Файл(ПутьКФайлу);
|
||||
Если Не ФайлНаДиске.Существует() Тогда Сообщить("Файл не найден: " + ПутьКФайлу); Возврат Неопределено; КонецЕсли;
|
||||
ВремКаталог = КаталогВременныхФайлов();
|
||||
ИмяФайла = "temp_load" + Формат(ТекущаяДатаСеанса(), "ДФ=yyyyMMddHHmmss") + ФайлНаДиске.Расширение;
|
||||
ПутьВрем = ВремКаталог + ИмяФайла;
|
||||
КопироватьФайл(ПутьКФайлу, ПутьВрем);
|
||||
ТаблДок = Новый ТабличныйДокумент;
|
||||
ТаблДок.Прочитать(ПутьВрем);
|
||||
УдалитьФайлы(ПутьВрем);
|
||||
Возврат ПоместитьВоВременноеХранилище(ТаблДок);
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПолучитьЛистыНаСервере(АдресТабДока) Экспорт
|
||||
ТаблДок = ПолучитьИзВременногоХранилища(АдресТабДока);
|
||||
Список = Новый Массив;
|
||||
Для Каждого Область Из ТаблДок.Области Цикл
|
||||
Если Область.ТипОбласти = 1 Тогда
|
||||
Список.Добавить(Новый Структура("Имя", Область.Имя));
|
||||
КонецЕсли;
|
||||
МассивДанных.Добавить(С);
|
||||
КонецЦикла;
|
||||
Возврат Список;
|
||||
|
||||
// Возвращаем результат
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("ГодЗагрузки", ГодЗагрузки);
|
||||
Результат.Вставить("МесяцЗагрузки", МесяцЗагрузки);
|
||||
Результат.Вставить("Организация", Организация);
|
||||
Результат.Вставить("СтатьяФинансирования", СтатьяФинансирования);
|
||||
Результат.Вставить("Данные", МассивДанных);
|
||||
Результат.Вставить("Взносы", МассивВзносов);
|
||||
Результат.Вставить("НДФЛ", МассивНДФЛ);
|
||||
Результат.Вставить("Сотрудники", МассивСотрудников);
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция НайтиЛистНаСервере(АдресТабДока, ИмяЛиста) Экспорт
|
||||
ТаблДок = ПолучитьИзВременногоХранилища(АдресТабДока);
|
||||
Для Каждого Область Из ТаблДок.Области Цикл
|
||||
Если Область.ТипОбласти = 1 Тогда
|
||||
Если ВРег(Область.Имя) = ВРег(ИмяЛиста) Тогда Возврат Область.Имя; КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Возврат Неопределено;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПрочитатьСтрокуНаСервере(АдресТабДока, ИмяОбласти, Строка, Колонка) Экспорт
|
||||
ТаблДок = ПолучитьИзВременногоХранилища(АдресТабДока);
|
||||
Функция ПрочитатьЧислоИзТД(ТаблДок, ИмяОбласти, Строка, Колонка)
|
||||
Попытка
|
||||
Область = ТаблДок.Область(ИмяОбласти + "|C" + Колонка + "|" + Строка + "|" + Строка);
|
||||
Возврат СокрЛП("" + Область.Текст);
|
||||
Исключение
|
||||
Возврат "";
|
||||
КонецПопытки;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПрочитатьЧислоНаСервере(АдресТабДока, ИмяОбласти, Строка, Колонка) Экспорт
|
||||
ТаблДок = ПолучитьИзВременногоХранилища(АдресТабДока);
|
||||
Попытка
|
||||
Область = ТаблДок.Область(ИмяОбласти + "|C" + Колонка + "|" + Строка + "|" + Строка);
|
||||
Значение = Область.Текст;
|
||||
Если Не ЗначениеЗаполнено(Значение) Тогда Возврат 0; КонецЕсли;
|
||||
Возврат Число(СокрЛП(Значение));
|
||||
Исключение
|
||||
Возврат 0;
|
||||
КонецПопытки;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПрочитатьКарточкуНаСервере(АдресТабДока, ИмяЛиста) Экспорт
|
||||
ТаблДок = ПолучитьИзВременногоХранилища(АдресТабДока);
|
||||
Данные = Новый Структура;
|
||||
Данные.Вставить("ФИО", СокрЛП("" + ТаблДок.Область(ИмяЛиста + "|C2").Текст));
|
||||
Данные.Вставить("ИНН", "");
|
||||
Данные.Вставить("СНИЛС", "");
|
||||
Данные.Вставить("ЛицевойСчетВБанке", СокрЛП("" + ТаблДок.Область(ИмяЛиста + "|D3").Текст));
|
||||
Данные.Вставить("ВидЗанятости", СокрЛП("" + ТаблДок.Область(ИмяЛиста + "|A5").Текст));
|
||||
Данные.Вставить("АдресРегистрации", "");
|
||||
Возврат Данные;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПрочитатьНДФЛНаСервере(АдресТабДока, ИмяЛиста, МесяцЗагрузки, ФИО) Экспорт
|
||||
ТаблДок = ПолучитьИзВременногоХранилища(АдресТабДока);
|
||||
СтрокаМесяца = 35 + МесяцЗагрузки;
|
||||
Если СтрокаМесяца > 47 Тогда Возврат Неопределено; КонецЕсли;
|
||||
Данные = Новый Структура;
|
||||
Данные.Вставить("ФИО", ФИО);
|
||||
Данные.Вставить("МесяцРасчета", СокрЛП("" + ТаблДок.Область(ИмяЛиста + "|A" + СтрокаМесяца).Текст));
|
||||
Данные.Вставить("СуммаВаловогоДохода", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 4));
|
||||
Данные.Вставить("СкидкаДляНДФЛЗаМесяц", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 8));
|
||||
Данные.Вставить("ВычетНаРаботникаЗаМесяц", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 12));
|
||||
Данные.Вставить("ВычетНаИждивенцевЗаМесяц", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 13));
|
||||
Данные.Вставить("ИтогоНДФЛЗаМесяц", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 18));
|
||||
Данные.Вставить("НалоговаяБазаПоСВЗаМесяц", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 23));
|
||||
Данные.Вставить("ИтогоФСС", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ИмяЛиста, СтрокаМесяца, 37));
|
||||
Возврат Данные;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПрочитатьВзносыНаСервере(АдресТабДока, ЛистРасчет, Ном, ФИО) Экспорт
|
||||
ТаблДок = ПолучитьИзВременногоХранилища(АдресТабДока);
|
||||
Данные = Новый Структура;
|
||||
Данные.Вставить("ФИО", ФИО);
|
||||
Данные.Вставить("ДТ6Процент", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ЛистРасчет, Ном, 58));
|
||||
Данные.Вставить("ДТ4Процент", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ЛистРасчет, Ном, 59));
|
||||
Данные.Вставить("ПФСтраховая", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ЛистРасчет, Ном, 60));
|
||||
Данные.Вставить("ФССФОМС", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ЛистРасчет, Ном, 61));
|
||||
Данные.Вставить("НСПЗ", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ЛистРасчет, Ном, 62));
|
||||
Данные.Вставить("Итого", ПрочитатьЧислоНаСервереИзТД(ТаблДок, ЛистРасчет, Ном, 63));
|
||||
Данные.Вставить("НалоговаяБазаПоСВЗаМесяц", 0);
|
||||
Данные.Вставить("ИтогоФСС", 0);
|
||||
Возврат Данные;
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ПрочитатьЧислоНаСервереИзТД(ТаблДок, ИмяОбласти, Строка, Колонка)
|
||||
Попытка
|
||||
Область = ТаблДок.Область(ИмяОбласти + "|C" + Колонка + "|" + Строка + "|" + Строка);
|
||||
Значение = Область.Текст;
|
||||
Значение = ТаблДок.Область(ИмяОбласти + "|C" + Колонка + "|" + Строка + "|" + Строка).Текст;
|
||||
Если Не ЗначениеЗаполнено(Значение) Тогда Возврат 0; КонецЕсли;
|
||||
Возврат Число(СокрЛП(Значение));
|
||||
Исключение
|
||||
|
||||
Reference in New Issue
Block a user