v3.0.0.92
This commit is contained in:
+1
-1
@@ -56,7 +56,7 @@
|
|||||||
<ScriptVariant>Russian</ScriptVariant>
|
<ScriptVariant>Russian</ScriptVariant>
|
||||||
<DefaultRoles/>
|
<DefaultRoles/>
|
||||||
<Vendor>ООО "Профи-Софт", код партнера 42575-13, г.Байконур.</Vendor>
|
<Vendor>ООО "Профи-Софт", код партнера 42575-13, г.Байконур.</Vendor>
|
||||||
<Version>3.0.0.91</Version>
|
<Version>3.0.0.92</Version>
|
||||||
<Caption/>
|
<Caption/>
|
||||||
<ShortCaption/>
|
<ShortCaption/>
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
Процедура ВыбратьФайл(Команда)
|
Процедура ВыбратьФайл(Команда)
|
||||||
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
|
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
|
||||||
Диалог.МножественныйВыбор = Ложь;
|
Диалог.МножественныйВыбор = Ложь;
|
||||||
Диалог.Фильтр = "Excel файлы (*.xls;*.xlsx;*.xlsm)|*.xls;*.xlsx;*.xlsm";
|
Диалог.Фильтр = "Excel (*.xlsx;*.xlsm;*.xls)|*.xlsx;*.xlsm;*.xls";
|
||||||
Если Диалог.Выбрать() Тогда
|
Если Диалог.Выбрать() Тогда
|
||||||
Объект.ПутьКФайлу = Диалог.ПолноеИмяФайла;
|
Объект.ПутьКФайлу = Диалог.ПолноеИмяФайла;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
@@ -25,9 +25,16 @@
|
|||||||
Сообщить("Выберите файл!");
|
Сообщить("Выберите файл!");
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Состояние("Инициализация...", 0);
|
Состояние("Загрузка файла...");
|
||||||
СтатусЗагрузки = "Подготовка...";
|
АдресТабДока = ЗагрузитьФайлНаСервере(Объект.ПутьКФайлу);
|
||||||
ПрочитатьExcelНаКлиенте();
|
Если АдресТабДока = Неопределено Тогда
|
||||||
|
Сообщить("Ошибка загрузки файла!");
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
Состояние("Чтение данных...");
|
||||||
|
ПрочитатьДанные(АдресТабДока);
|
||||||
|
СтатусЗагрузки = "Загружено: " + Объект.Сотрудники.Количество() + " сотр., " + Объект.ДанныеРасчетаЗП.Количество() + " записей";
|
||||||
|
Состояние("Готово", 100);
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
@@ -36,7 +43,8 @@
|
|||||||
Сообщить("Нет данных для записи!");
|
Сообщить("Нет данных для записи!");
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
ЗагрузкаДанныхИзExcel_ЗаписьВРегистры.ЗаписатьДанные(Объект._ГодЗагрузки, Объект.МесяцЗагрузки,
|
ЗаписатьДанныеНаСервере(
|
||||||
|
Объект._ГодЗагрузки, Объект.МесяцЗагрузки,
|
||||||
Объект._ОрганизацияНаименование, Объект._СтатьяФинансированияНаименование, Объект._СтатьяРасходовКод,
|
Объект._ОрганизацияНаименование, Объект._СтатьяФинансированияНаименование, Объект._СтатьяРасходовКод,
|
||||||
Объект.ДанныеРасчетаЗП, Объект.ДанныеНДФЛ, Объект.ДанныеСтраховыхВзносов, Объект.Сотрудники);
|
Объект.ДанныеРасчетаЗП, Объект.ДанныеНДФЛ, Объект.ДанныеСтраховыхВзносов, Объект.Сотрудники);
|
||||||
Сообщить("Данные записаны!");
|
Сообщить("Данные записаны!");
|
||||||
@@ -44,156 +52,249 @@
|
|||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область ОсновнаяПроцедура
|
#Область ЧтениеДанных
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПрочитатьExcelНаКлиенте()
|
Процедура ПрочитатьДанные(АдресТабДока)
|
||||||
КонтекстExcel = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ОткрытьФайлExcel(Объект.ПутьКФайлу);
|
// === ЭТАП 1: Обход листов сотрудников ===
|
||||||
Если КонтекстExcel = Неопределено Тогда Возврат; КонецЕсли;
|
Листы = ПолучитьЛистыНаСервере(АдресТабДока);
|
||||||
|
КэшФИО = Новый Соответствие;
|
||||||
|
Счетчик = 0;
|
||||||
|
Для Каждого Лист Из Листы Цикл
|
||||||
|
ФИО = ПрочитатьСтрокуНаСервере(АдресТабДока, Лист.Имя, 2, 3);
|
||||||
|
Если Не ЗначениеЗаполнено(ФИО) Тогда Продолжить; КонецЕсли;
|
||||||
|
Если СтрНачинаетсяС(ВРег(ФИО), "ИТОГО") Тогда Продолжить; КонецЕсли;
|
||||||
|
Счетчик = Счетчик + 1;
|
||||||
|
Состояние("Этап 1: " + ФИО, 20 + 30 * Счетчик / 50);
|
||||||
|
Карточка = ПрочитатьКарточкуНаСервере(АдресТабДока, Лист.Имя);
|
||||||
|
Карточка.Вставить("Идентификатор", Счетчик);
|
||||||
|
Карточка.Вставить("ФИО", ФИО);
|
||||||
|
ДанныеНДФЛ = ПрочитатьНДФЛНаСервере(АдресТабДока, Лист.Имя, Объект.МесяцЗагрузки, ФИО);
|
||||||
|
Если ДанныеНДФЛ <> Неопределено Тогда ДанныеНДФЛ.Вставить("ИдентификаторСотрудника", Счетчик); КонецЕсли;
|
||||||
|
СтрокаМесяца = 35 + Объект.МесяцЗагрузки;
|
||||||
|
ОтрДнейКал = ПрочитатьЧислоНаСервере(АдресТабДока, Лист.Имя, СтрокаМесяца, 4);
|
||||||
|
КэшФИО.Вставить(ФИО, Новый Структура("Карточка, НДФЛ, ОтработаноДнейКалендарных, Идентификатор", Карточка, ДанныеНДФЛ, ОтрДнейКал, Счетчик));
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
ЛистРасчет = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.НайтиЛист(КонтекстExcel.Книга, "Расчет");
|
// === ЭТАП 2: Чтение листа "Расчет" ===
|
||||||
Если ЛистРасчет = Неопределено Тогда
|
ЛистРасчет = НайтиЛистНаСервере(АдресТабДока, "Расчет");
|
||||||
Сообщить("Лист 'Расчет' не найден!");
|
Если ЛистРасчет = Неопределено Тогда Сообщить("Лист 'Расчет' не найден!"); Возврат; КонецЕсли;
|
||||||
ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ЗакрытьExcel(КонтекстExcel, Неопределено);
|
Объект._ГодЗагрузки = Строка(ПрочитатьЧислоНаСервере(АдресТабДока, ЛистРасчет, 4, 1));
|
||||||
Возврат;
|
Объект._ОрганизацияНаименование = ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, 4, 20);
|
||||||
КонецЕсли;
|
Объект._СтатьяФинансированияНаименование = ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, 8, 20);
|
||||||
|
|
||||||
// Определяем параметры из Excel
|
|
||||||
Объект._ГодЗагрузки = Строка(ЗагрузкаДанныхИзExcel_МаппингДанных.ОпределитьГодЗагрузки(ЛистРасчет));
|
|
||||||
Объект._ОрганизацияНаименование = ЗагрузкаДанныхИзExcel_МаппингДанных.ОпределитьОрганизацию(ЛистРасчет);
|
|
||||||
Объект._СтатьяФинансированияНаименование = ЗагрузкаДанныхИзExcel_МаппингДанных.ОпределитьСтатьюФинансирования(ЛистРасчет);
|
|
||||||
Объект._СтатьяРасходовКод = "211";
|
Объект._СтатьяРасходовКод = "211";
|
||||||
Объект.МесяцЗагрузки = Число(ЛистРасчет.Cells(4, 1).Value);
|
Объект.МесяцЗагрузки = Число(ПрочитатьЧислоНаСервере(АдресТабДока, ЛистРасчет, 4, 1));
|
||||||
|
|
||||||
ГодЗагрузки = Объект._ГодЗагрузки;
|
|
||||||
МесяцТекст = ЗагрузкаДанныхИзExcel_МаппингДанных.НомерМесяцаВТекст(Объект.МесяцЗагрузки) + " " + ГодЗагрузки;
|
|
||||||
|
|
||||||
// Определяем начальную строку данных
|
|
||||||
НачальнаяСтрока = 0;
|
НачальнаяСтрока = 0;
|
||||||
Для Ном = 17 По 30 Цикл
|
Для Ном = 17 По 30 Цикл
|
||||||
Формула = ЛистРасчет.Cells(Ном, 1).Formula;
|
ФТ = СокрЛП(ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, Ном, 1));
|
||||||
Если ЗначениеЗаполнено(Формула) И СтрНайти("" + Формула, "='") > 0 Тогда
|
Если Не ЗначениеЗаполнено(ФТ) Тогда Продолжить; КонецЕсли;
|
||||||
|
Если Не СтрНачинаетсяС(ВРег(ФТ), "ИТОГО") И Не СтрНачинаетсяС(ВРег(ФТ), "СОТРУДНИК") И Не СтрНачинаетсяС(ВРег(ФТ), "ФАМИЛИЯ") И СтрДлина(ФТ) > 3 Тогда
|
||||||
НачальнаяСтрока = Ном; Прервать;
|
НачальнаяСтрока = Ном; Прервать;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
Если НачальнаяСтрока = 0 Тогда
|
Если НачальнаяСтрока = 0 Тогда Сообщить("Данные не найдены!"); Возврат; КонецЕсли;
|
||||||
Для Ном = 17 По 30 Цикл
|
|
||||||
ФТ = СокрЛП("" + ЛистРасчет.Cells(Ном, 1).Value);
|
|
||||||
Если ЗначениеЗаполнено(ФТ) И Не СтрНачинаетсяС(ВРег(ФТ), "ИТОГО")
|
|
||||||
И Не СтрНачинаетсяС(ВРег(ФТ), "СОТРУДНИК") И Не СтрНачинаетсяС(ВРег(ФТ), "ФАМИЛИЯ")
|
|
||||||
И СтрДлина(ФТ) > 3 Тогда
|
|
||||||
НачальнаяСтрока = Ном; Прервать;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЦикла;
|
|
||||||
КонецЕсли;
|
|
||||||
Если НачальнаяСтрока = 0 Тогда
|
|
||||||
Сообщить("Данные не найдены!");
|
|
||||||
ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ЗакрытьExcel(КонтекстExcel, Неопределено);
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
МассивДанных = Новый Массив;
|
|
||||||
МассивВзносов = Новый Массив;
|
|
||||||
МассивНДФЛ = Новый Массив;
|
|
||||||
МассивСотрудников = Новый Массив;
|
|
||||||
Счетчик = 0;
|
Счетчик = 0;
|
||||||
|
Для Ном = НачальнаяСтрока По 500 Цикл
|
||||||
Для Ном = НачальнаяСтрока По ЛистРасчет.Rows.Count Цикл
|
ФИОТекст = СокрЛП(ПрочитатьСтрокуНаСервере(АдресТабДока, ЛистРасчет, Ном, 1));
|
||||||
ЗначениеЯчейки = ЛистРасчет.Cells(Ном, 1).Value;
|
Если Не ЗначениеЗаполнено(ФИОТекст) Тогда Продолжить; КонецЕсли;
|
||||||
Если ЗначениеЯчейки = Неопределено ИЛИ ЗначениеЯчейки = "" Тогда
|
|
||||||
След1 = ЛистРасчет.Cells(Ном + 1, 1).Value;
|
|
||||||
След2 = ЛистРасчет.Cells(Ном + 2, 1).Value;
|
|
||||||
Если (След1 = Неопределено ИЛИ След1 = "") И (След2 = Неопределено ИЛИ След2 = "") Тогда Прервать; КонецЕсли;
|
|
||||||
Продолжить;
|
|
||||||
КонецЕсли;
|
|
||||||
ФИОТекст = СокрЛП("" + ЗначениеЯчейки);
|
|
||||||
Если СтрНачинаетсяС(ВРег(ФИОТекст), "ИТОГО") Тогда Прервать; КонецЕсли;
|
Если СтрНачинаетсяС(ВРег(ФИОТекст), "ИТОГО") Тогда Прервать; КонецЕсли;
|
||||||
Если СтрНачинаетсяС(ВРег(ФИОТекст), "СОТРУДНИК") ИЛИ СтрНачинаетсяС(ВРег(ФИОТекст), "ФАМИЛИЯ") Тогда Продолжить; КонецЕсли;
|
ЛистСотр = КэшФИО.Получить(ФИОТекст);
|
||||||
|
Если ЛистСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||||
ЛистСотрудника = ЗагрузкаДанныхИзExcel_МаппингДанных.НайтиЛистСотрудника(КонтекстExcel.Книга, ЛистРасчет, Ном);
|
|
||||||
Если ЛистСотрудника = Неопределено Тогда Продолжить; КонецЕсли;
|
|
||||||
|
|
||||||
ФИО = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 3);
|
|
||||||
Если Не ЗначениеЗаполнено(ФИО) Тогда ФИО = ФИОТекст; КонецЕсли;
|
|
||||||
Если Не ЗначениеЗаполнено(ФИО) Тогда Продолжить; КонецЕсли;
|
|
||||||
|
|
||||||
Счетчик = Счетчик + 1;
|
Счетчик = Счетчик + 1;
|
||||||
Состояние("Загрузка: " + ФИО, 20 + 70 * Счетчик / 50);
|
Состояние("Этап 2: " + ФИОТекст, 50 + 40 * Счетчик / 50);
|
||||||
|
Строка = ПрочитатьРасчетныеДанные(АдресТабДока, ЛистРасчет, Ном, ФИОТекст, ЛистСотр);
|
||||||
Строка = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьРасчетныеДанные(ЛистРасчет, Ном, ФИО);
|
|
||||||
Строка.Вставить("ИдентификаторСотрудника", Счетчик);
|
|
||||||
Строка.Вставить("ОтработаноДнейКалендарных", ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуЧисло(ЛистСотрудника, ЗагрузкаДанныхИзExcel_МаппингДанных.СтрокаМесяцаНаЛистеСотрудника(Объект.МесяцЗагрузки), 4, ФИО));
|
|
||||||
|
|
||||||
Если ЛистСотрудника <> Неопределено Тогда
|
|
||||||
Карточка = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьКарточкуСотрудника(ЛистСотрудника);
|
|
||||||
Если ЗначениеЗаполнено(Карточка.ФИО) Тогда Строка.Вставить("ФИО", Карточка.ФИО); КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
МассивДанных.Добавить(Строка);
|
МассивДанных.Добавить(Строка);
|
||||||
|
МассивСотрудников.Добавить(ЛистСотр.Карточка);
|
||||||
// Сотрудники
|
Если ЛистСотр.НДФЛ <> Неопределено Тогда МассивНДФЛ.Добавить(ЛистСотр.НДФЛ); КонецЕсли;
|
||||||
Если ЛистСотрудника <> Неопределено Тогда
|
|
||||||
ДанныеСотр = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьКарточкуСотрудника(ЛистСотрудника);
|
|
||||||
Иначе
|
|
||||||
ДанныеСотр = Новый Структура("ФИО, ИНН, СНИЛС, ЛицевойСчетВБанке, ВидЗанятости, АдресРегистрации", ФИО, "", "", "", "", "");
|
|
||||||
КонецЕсли;
|
|
||||||
ДанныеСотр.Вставить("Идентификатор", Счетчик);
|
|
||||||
МассивСотрудников.Добавить(ДанныеСотр);
|
|
||||||
|
|
||||||
// НДФЛ
|
|
||||||
Если ЛистСотрудника <> Неопределено Тогда
|
|
||||||
ДанныеНДФЛ = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьНДФЛСоЛиста(ЛистСотрудника, ФИО, Объект.МесяцЗагрузки);
|
|
||||||
Если ДанныеНДФЛ <> Неопределено Тогда
|
|
||||||
ДанныеНДФЛ.Вставить("ИдентификаторСотрудника", Счетчик);
|
|
||||||
МассивНДФЛ.Добавить(ДанныеНДФЛ);
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
// Страховые взносы
|
|
||||||
СтрВзносов = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьВзносыИзРасчета(ЛистРасчет, Ном, ФИО);
|
|
||||||
Если СтрВзносов <> Неопределено Тогда
|
|
||||||
СтрВзносов.Вставить("ИдентификаторСотрудника", Счетчик);
|
|
||||||
МассивВзносов.Добавить(СтрВзносов);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ЗакрытьExcel(КонтекстExcel, Неопределено);
|
|
||||||
Состояние("Заполнение таблиц...", 95);
|
|
||||||
|
|
||||||
ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников);
|
ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников);
|
||||||
|
СтатусЗагрузки = "Загружено: " + Счетчик + " записей";
|
||||||
СтатусЗагрузки = "Загружено: " + Счетчик + " сотрудников";
|
|
||||||
Состояние("Готово", 100);
|
Состояние("Готово", 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 + С.БезналичныеПеречисления);
|
||||||
|
Возврат С;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область СерверныеПроцедуры
|
#Область СерверныеПроцедуры
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция ЗагрузитьФайлНаСервере(ПутьКФайлу) Экспорт
|
||||||
|
ФайлНаДиске = Новый Файл(ПутьКФайлу);
|
||||||
|
Если Не ФайлНаДиске.Существует() Тогда Сообщить("Файл не найден: " + ПутьКФайлу); Возврат Неопределено; КонецЕсли;
|
||||||
|
Расширение = НРег(ФайлНаДиске.Расширение);
|
||||||
|
ТаблДок = Новый ТабличныйДокумент;
|
||||||
|
Если Расширение = ".xlsx" ИЛИ Расширение = ".xls" ИЛИ Расширение = ".xlsm" Тогда
|
||||||
|
ТаблДок.Прочитать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
|
||||||
|
ИначеЕсли Расширение = ".mxl" Тогда
|
||||||
|
ТаблДок.Прочитать(ПутьКФайлу, ТипФайлаТабличногоДокумента.MXL);
|
||||||
|
Иначе
|
||||||
|
Сообщить("Неподдерживаемый формат: " + Расширение);
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат ПоместитьВоВременноеХранилище(ТаблДок);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция ПолучитьЛистыНаСервере(АдресТабДока) Экспорт
|
||||||
|
ТаблДок = ПолучитьИзВременногоХранилища(АдресТабДока);
|
||||||
|
Список = Новый Массив;
|
||||||
|
Для Каждого Область Из ТаблДок.Области Цикл
|
||||||
|
Если Область.ТипОбласти = ТипОбластиТабличногоДокумента.Прямоугольная Тогда
|
||||||
|
Список.Добавить(Новый Структура("Имя", Область.Имя));
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
Возврат Список;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция НайтиЛистНаСервере(АдресТабДока, ИмяЛиста) Экспорт
|
||||||
|
ТаблДок = ПолучитьИзВременногоХранилища(АдресТабДока);
|
||||||
|
Для Каждого Область Из ТаблДок.Области Цикл
|
||||||
|
Если Область.ТипОбласти = ТипОбластиТабличногоДокумента.Прямоугольная Тогда
|
||||||
|
Если ВРег(Область.Имя) = ВРег(ИмяЛиста) Тогда Возврат Область.Имя; КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция ПрочитатьСтрокуНаСервере(АдресТабДока, ИмяОбласти, Строка, Колонка) Экспорт
|
||||||
|
ТаблДок = ПолучитьИзВременногоХранилища(АдресТабДока);
|
||||||
|
Попытка
|
||||||
|
Область = ТаблДок.Область(ИмяОбласти + "|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" + Колонка + "|" + Строка + "|" + Строка);
|
||||||
|
Значение = Область.Текст;
|
||||||
|
Если Не ЗначениеЗаполнено(Значение) Тогда Возврат 0; КонецЕсли;
|
||||||
|
Возврат Число(СокрЛП(Значение));
|
||||||
|
Исключение
|
||||||
|
Возврат 0;
|
||||||
|
КонецПопытки;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
&НаСервере
|
&НаСервере
|
||||||
Процедура ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников) Экспорт
|
Процедура ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников)
|
||||||
ТЧЗП = Объект.ДанныеРасчетаЗП;
|
Объект.ДанныеРасчетаЗП.Очистить();
|
||||||
ТЧВзносы = Объект.ДанныеСтраховыхВзносов;
|
Объект.ДанныеСтраховыхВзносов.Очистить();
|
||||||
ТЧНДФЛ = Объект.ДанныеНДФЛ;
|
Объект.ДанныеНДФЛ.Очистить();
|
||||||
ТЧСотрудники = Объект.Сотрудники;
|
Объект.Сотрудники.Очистить();
|
||||||
ТЧЗП.Очистить(); ТЧВзносы.Очистить(); ТЧНДФЛ.Очистить(); ТЧСотрудники.Очистить();
|
Для Каждого Строка Из МассивДанных Цикл НоваяСтрока = Объект.ДанныеРасчетаЗП.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); КонецЦикла;
|
||||||
Для Каждого Строка Из МассивДанных Цикл
|
Для Каждого Строка Из МассивВзносов Цикл НоваяСтрока = Объект.ДанныеСтраховыхВзносов.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); КонецЦикла;
|
||||||
НоваяСтрока = ТЧЗП.Добавить();
|
Для Каждого Строка Из МассивНДФЛ Цикл НоваяСтрока = Объект.ДанныеНДФЛ.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); КонецЦикла;
|
||||||
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
|
Для Каждого Строка Из МассивСотрудников Цикл НоваяСтрока = Объект.Сотрудники.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); КонецЦикла;
|
||||||
КонецЦикла;
|
|
||||||
Для Каждого Строка Из МассивВзносов Цикл
|
|
||||||
НоваяСтрока = ТЧВзносы.Добавить();
|
|
||||||
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
|
|
||||||
КонецЦикла;
|
|
||||||
Для Каждого Строка Из МассивНДФЛ Цикл
|
|
||||||
НоваяСтрока = ТЧНДФЛ.Добавить();
|
|
||||||
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
|
|
||||||
КонецЦикла;
|
|
||||||
Для Каждого Строка Из МассивСотрудников Цикл
|
|
||||||
НоваяСтрока = ТЧСотрудники.Добавить();
|
|
||||||
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
|
|
||||||
КонецЦикла;
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|||||||
Reference in New Issue
Block a user