diff --git a/Configuration.xml b/Configuration.xml
index 8018b8e..ecbc10a 100755
--- a/Configuration.xml
+++ b/Configuration.xml
@@ -56,7 +56,7 @@
Russian
ООО "Профи-Софт", код партнера 42575-13, г.Байконур.
- 3.0.0.108
+ 3.0.0.109
Language.Русский
diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
index 1b21ee4..4574577 100644
--- a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
+++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
@@ -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);
- Строка = ПрочитатьРасчетныеДанные(АдресТабДока, ЛистРасчет, Ном, ФИОТекст, ЛистСотр);
- МассивДанных.Добавить(Строка);
- МассивСотрудников.Добавить(ЛистСотр.Карточка);
- Если ЛистСотр.НДФЛ <> Неопределено Тогда МассивНДФЛ.Добавить(ЛистСотр.НДФЛ); КонецЕсли;
+ С = Новый Структура;
+ С.Вставить("ФИО", ФИОТекст);
+ С.Вставить("ИдентификаторСотрудника", ИдСотр);
+ С.Вставить("Должность", СокрЛП("" + ТаблДок.Область(ЛистРасчет + "|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 + С.БезналичныеПеречисления);
+ МассивДанных.Добавить(С);
КонецЦикла;
- ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников);
- СтатусЗагрузки = "Загружено: " + Счетчик + " записей";
- Состояние("Готово", 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));
- С.Вставить("ЗарплатаЗаПервуюПоловину", 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; КонецЕсли;
Возврат Число(СокрЛП(Значение));
Исключение