v3.0.0.78
This commit is contained in:
@@ -1,72 +1,310 @@
|
||||
#Область ОбработчикиСобытийФормы
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
// Форма Обработка.ЗагрузкаДанныхИзExcel.Форма.Форма
|
||||
|
||||
#Область ОбработчикиКоманд
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВыбратьФайл(Команда)
|
||||
Процедура ВыбратьФайл(Команда) Экспорт
|
||||
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
|
||||
Диалог.МножественныйВыбор = Ложь;
|
||||
Диалог.Фильтр = "Excel файлы (*.xls;*.xlsx;*.xlsm)|*.xls;*.xlsx;*.xlsm";
|
||||
Диалог.Фильтр = "Excel (*.xls;*.xlsx;*.xlsm)|*.xls;*.xlsx;*.xlsm";
|
||||
Если Диалог.Выбрать() Тогда
|
||||
Объект.ПутьКФайлу = Диалог.ПолноеИмяФайла;
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗагрузитьДанные(Команда)
|
||||
Процедура ЗагрузитьДанные(Команда) Экспорт
|
||||
Если Не ЗначениеЗаполнено(Объект.ПутьКФайлу) Тогда
|
||||
Сообщить("Выберите файл!");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Состояние("Инициализация...", 0);
|
||||
Состояние("Инициализация...");
|
||||
СтатусЗагрузки = "Подготовка...";
|
||||
ПрочитатьExcelНаКлиенте();
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗаписатьДанные(Команда)
|
||||
Процедура ЗаписатьДанные(Команда) Экспорт
|
||||
Если Объект.ДанныеРасчетаЗП.Количество() = 0 Тогда
|
||||
Сообщить("Нет данных для записи!");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
ЗагрузкаДанныхИзExcel_ЗаписьВРегистры.ЗаписатьДанные(Объект._ГодЗагрузки, Объект._ОрганизацияНаименование, Объект._СтатьяФинансированияНаименование, Объект._СтатьяРасходовКод);
|
||||
ЗаписатьДанныеНаСервере(Объект._ГодЗагрузки, Объект._ОрганизацияНаименование,
|
||||
Объект._СтатьяФинансированияНаименование, Объект._СтатьяРасходовКод);
|
||||
Сообщить("Данные записаны!");
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОсновнаяПроцедура
|
||||
#Область ЧтениеЭксель_Клиент
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПрочитатьExcelНаКлиенте()
|
||||
КонтекстExcel = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ОткрытьФайлExcel(Объект.ПутьКФайлу);
|
||||
Функция ОткрытьФайлExcel(ПутьКФайлу) Экспорт
|
||||
Попытка
|
||||
Excel = Новый COMОбъект("Excel.Application");
|
||||
Excel.Visible = Ложь;
|
||||
Excel.DisplayAlerts = Ложь;
|
||||
Книга = Excel.Workbooks.Open(ПутьКФайлу);
|
||||
Возврат Новый Структура("Книга, Excel", Книга, Excel);
|
||||
Исключение
|
||||
Сообщить("Не удалось открыть Excel: " + ОписаниеОшибки());
|
||||
Возврат Неопределено;
|
||||
КонецПопытки;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗакрытьExcel(КонтекстExcel, ВременныйФайл) Экспорт
|
||||
Если КонтекстExcel = Неопределено Тогда Возврат; КонецЕсли;
|
||||
Попытка
|
||||
КонтекстExcel.Книга.Close(Ложь);
|
||||
КонтекстExcel.Excel.Quit();
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
Если ЗначениеЗаполнено(ВременныйФайл) Тогда УдалитьФайлы(ВременныйФайл); КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Функция ПрочитатьЯчейкуЧисло(Лист, Строка, Колонка, КонтекстОшибки) Экспорт
|
||||
Попытка
|
||||
Значение = Лист.Cells(Строка, Колонка).Value;
|
||||
Если Значение = Неопределено ИЛИ Значение = "" Тогда Возврат 0; КонецЕсли;
|
||||
Возврат Число(Значение);
|
||||
Исключение
|
||||
Сообщить("Ошибка: " + КонтекстОшибки + " | строка " + Строка + " колонка " + Колонка);
|
||||
Возврат 0;
|
||||
КонецПопытки;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция ПрочитатьЯчейкуСтрока(Лист, Строка, Колонка) Экспорт
|
||||
Попытка
|
||||
Значение = Лист.Cells(Строка, Колонка).Value;
|
||||
Если Значение = Неопределено Тогда Возврат ""; КонецЕсли;
|
||||
Возврат СокрЛП("" + Значение);
|
||||
Исключение
|
||||
Возврат "";
|
||||
КонецПопытки;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция ИзвлечьИмяЛистаИзФормулы(Формула) Экспорт
|
||||
Если Формула = Неопределено Тогда Возврат ""; КонецЕсли;
|
||||
Текст = СокрЛП("" + Формула);
|
||||
Если Не СтрНачинаетсяС(Текст, "='") Тогда Возврат ""; КонецЕсли;
|
||||
Поз = СтрНайти(Текст, "'!");
|
||||
Если Поз = 0 Тогда Возврат ""; КонецЕсли;
|
||||
Возврат Сред(Текст, 3, Поз - 3);
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция НайтиЛист(Книга, ИмяЛиста) Экспорт
|
||||
Для Каждого Лист Из Книга.Sheets Цикл
|
||||
Если ВРег(Лист.Name) = ВРег(ИмяЛиста) Тогда Возврат Лист; КонецЕсли;
|
||||
КонецЦикла;
|
||||
Возврат Неопределено;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область МаппингДанных_Клиент
|
||||
|
||||
&НаКлиенте
|
||||
Функция НомерМесяцаВТекст(НомерМесяца) Экспорт
|
||||
Массив = Новый Массив;
|
||||
Массив.Добавить("Январь"); Массив.Добавить("Февраль");
|
||||
Массив.Добавить("Март"); Массив.Добавить("Апрель");
|
||||
Массив.Добавить("Май"); Массив.Добавить("Июнь");
|
||||
Массив.Добавить("Июль"); Массив.Добавить("Август");
|
||||
Массив.Добавить("Сентябрь"); Массив.Добавить("Октябрь");
|
||||
Массив.Добавить("Ноябрь"); Массив.Добавить("Декабрь");
|
||||
Если НомерМесяца >= 1 И НомерМесяца <= 12 Тогда
|
||||
Возврат Массив[НомерМесяца - 1];
|
||||
КонецЕсли;
|
||||
Возврат "";
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция СтрокаМесяцаНаЛистеСотрудника() Экспорт
|
||||
Смещение = Объект.МесяцЗагрузки;
|
||||
Если Не ЗначениеЗаполнено(Смещение) Тогда Смещение = 1; КонецЕсли;
|
||||
Возврат 35 + Смещение;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция НайтиЛистСотрудника(Книга, ЛистРасчет, НомерСтроки) Экспорт
|
||||
Формула = ЛистРасчет.Cells(НомерСтроки, 1).Formula;
|
||||
Если ЗначениеЗаполнено(Формула) Тогда
|
||||
ИмяЛиста = ИзвлечьИмяЛистаИзФормулы(Формула);
|
||||
Если ЗначениеЗаполнено(ИмяЛиста) Тогда
|
||||
Возврат НайтиЛист(Книга, ИмяЛиста);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
ФИО = ПрочитатьЯчейкуСтрока(ЛистРасчет, НомерСтроки, 1);
|
||||
Если ЗначениеЗаполнено(ФИО) Тогда
|
||||
Возврат НайтиЛист(Книга, ФИО);
|
||||
КонецЕсли;
|
||||
Возврат Неопределено;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция ПрочитатьКарточкуСотрудника(ЛистСотрудника) Экспорт
|
||||
Данные = Новый Структура;
|
||||
Данные.Вставить("ФИО", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 3));
|
||||
Данные.Вставить("ИНН", "");
|
||||
Данные.Вставить("СНИЛС", "");
|
||||
Данные.Вставить("ЛицевойСчетВБанке", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 4));
|
||||
Данные.Вставить("ВидЗанятости", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 5, 1));
|
||||
Данные.Вставить("АдресРегистрации", "");
|
||||
Возврат Данные;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция ПрочитатьРасчетныеДанные(ЛистРасчет, Ном, ФИО) Экспорт
|
||||
С = Новый Структура;
|
||||
С.Вставить("ФИО", ФИО);
|
||||
С.Вставить("Должность", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 2));
|
||||
С.Вставить("СчетБК", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 3));
|
||||
С.Вставить("ВидЗанятости", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 4));
|
||||
С.Вставить("Оклад", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 8, ФИО));
|
||||
С.Вставить("КоличествоСтавок", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 7, ФИО));
|
||||
С.Вставить("ОтработаноДней", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 6, ФИО));
|
||||
С.Вставить("ЧасыДежурства", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 9, ФИО));
|
||||
С.Вставить("ЧасыНочные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 10, ФИО));
|
||||
С.Вставить("ЧасыПраздничные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 11, ФИО));
|
||||
С.Вставить("РабочиеЧасыПоТабелю", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 12, ФИО));
|
||||
С.Вставить("ИзРасчетаМесячногоОкладаДни", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 13, ФИО));
|
||||
С.Вставить("ДоплатаСовместительство", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 14, ФИО));
|
||||
С.Вставить("ДоплатаСовмещениеПроцент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 15, ФИО));
|
||||
С.Вставить("ДоплатаИнтенсивность", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 16, ФИО));
|
||||
С.Вставить("ИзРасчетаМесячногоОкладаЧасы", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 17, ФИО));
|
||||
С.Вставить("ДоплатаНочные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 18, ФИО));
|
||||
С.Вставить("ДоплатаПраздничные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 19, ФИО));
|
||||
С.Вставить("ЗаСтаж", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 20, ФИО));
|
||||
С.Вставить("НадбавкаЗаКатегорию", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 21, ФИО));
|
||||
С.Вставить("НадбавкаЗаВредность", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 22, ФИО));
|
||||
С.Вставить("ПовышающийКоэффициент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 23, ФИО));
|
||||
С.Вставить("СтимулирующиеВыплаты", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 24, ФИО));
|
||||
С.Вставить("СтимулирующаяНадбавка", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 25, ФИО));
|
||||
С.Вставить("РайонныйКоэффициент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 26, ФИО));
|
||||
С.Вставить("ВыплатыПоУказу597", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 27, ФИО));
|
||||
С.Вставить("ПремияРазовая", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 28, ФИО));
|
||||
С.Вставить("БольничныйЛистЗаСчетПредприятия", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 29, ФИО));
|
||||
С.Вставить("ДоплатаПрофактиву", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 30, ФИО));
|
||||
С.Вставить("ПусковыеОбсервация", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 31, ФИО));
|
||||
С.Вставить("Отпуск", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 32, ФИО));
|
||||
С.Вставить("КомпенсацияЗаОтпуск", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 33, ФИО));
|
||||
С.Вставить("ПрочиеКомандировочныйУчебныйОтпуск", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 34, ФИО));
|
||||
С.Вставить("ВыходноеПособие", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 35, ФИО));
|
||||
С.Вставить("ПоУходуЗаРебенкомИнвалидом", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 36, ФИО));
|
||||
С.Вставить("ДоплатаДоМРОТ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 37, ФИО));
|
||||
С.Вставить("Родовые", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 38, ФИО));
|
||||
С.Вставить("ИтогоНачислено", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 39, ФИО));
|
||||
С.Вставить("НДФЛ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 40, ФИО));
|
||||
С.Вставить("ПрофВзнос", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 41, ФИО));
|
||||
С.Вставить("ИсполнительныеДокументы", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 42, ФИО));
|
||||
С.Вставить("Аванс", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 43, ФИО));
|
||||
С.Вставить("ПФСофинансирование", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 44, ФИО));
|
||||
С.Вставить("ПремияУдержание", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 45, ФИО));
|
||||
С.Вставить("Касса1", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 46, ФИО));
|
||||
С.Вставить("Касса2", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 47, ФИО));
|
||||
С.Вставить("Касса3", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 48, ФИО));
|
||||
С.Вставить("ПособиеДо3ЛетУдержание", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 49, ФИО));
|
||||
С.Вставить("БезналичныеПеречисления", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 50, ФИО));
|
||||
С.Вставить("ВозвратВКассу", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 51, ФИО));
|
||||
С.Вставить("Депонент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 52, ФИО));
|
||||
С.Вставить("ОстатокНаНачало", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 54, ФИО));
|
||||
С.Вставить("ВсегоНаРуки", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 55, ФИО));
|
||||
С.Вставить("ЗарплатаЗаПервуюПоловину", 0);
|
||||
С.Вставить("ПремияАванс", 0);
|
||||
С.Вставить("ВыплатыВМежрасчетный", 0);
|
||||
С.Вставить("ИтогоУдержано", С.НДФЛ + С.ПрофВзнос + С.ИсполнительныеДокументы + С.ПФСофинансирование + С.ПремияУдержание + С.ПособиеДо3ЛетУдержание + С.Депонент);
|
||||
С.Вставить("ИтогоВыплачено", С.Аванс + С.Касса1 + С.Касса2 + С.Касса3 + С.БезналичныеПеречисления + С.ВозвратВКассу);
|
||||
Возврат С;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция ПрочитатьНДФЛСоЛиста(ЛистСотрудника, ФИО) Экспорт
|
||||
СД = СтрокаМесяцаНаЛистеСотрудника();
|
||||
Если СД = 0 Тогда Возврат Неопределено; КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(ФИО) Тогда Возврат Неопределено; КонецЕсли;
|
||||
С = Новый Структура;
|
||||
С.Вставить("ФИО", ФИО);
|
||||
С.Вставить("МесяцРасчета", ПрочитатьЯчейкуСтрока(ЛистСотрудника, СД, 1));
|
||||
С.Вставить("СуммаВаловогоДохода", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 4, ФИО));
|
||||
С.Вставить("СуммаВаловогоДоходаСНачалаГода", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 6, ФИО));
|
||||
С.Вставить("СкидкаДляНДФЛЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 8, ФИО));
|
||||
С.Вставить("СкидкаДляНДФЛЗаГод", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 9, ФИО));
|
||||
С.Вставить("СкидкаДляСВЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 10, ФИО));
|
||||
С.Вставить("ВычетНаРаботникаЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 12, ФИО));
|
||||
С.Вставить("ВычетНаИждивенцевЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 13, ФИО));
|
||||
С.Вставить("ВсегоВычетовЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 14, ФИО));
|
||||
С.Вставить("ОблагаемыйДоходЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 15, ФИО));
|
||||
С.Вставить("ОблагаемыйДоходЗаГод", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 16, ФИО));
|
||||
С.Вставить("НачисленныйНДФЛЗаГод", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 17, ФИО));
|
||||
С.Вставить("ИтогоНДФЛЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 18, ФИО));
|
||||
С.Вставить("НалоговаяБазаПоСВЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 23, ФИО));
|
||||
С.Вставить("ИтогоФСС", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 37, ФИО));
|
||||
Возврат С;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция ПрочитатьВзносыИзРасчета(ЛистРасчет, Ном, ФИО) Экспорт
|
||||
С = Новый Структура;
|
||||
С.Вставить("ФИО", ФИО);
|
||||
С.Вставить("ДТ6Процент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 58, ФИО));
|
||||
С.Вставить("ДТ4Процент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 59, ФИО));
|
||||
С.Вставить("ПФСтраховая", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 60, ФИО));
|
||||
С.Вставить("ФССФОМС", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 61, ФИО));
|
||||
С.Вставить("НСПЗ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 62, ФИО));
|
||||
С.Вставить("Итого", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 63, ФИО));
|
||||
С.Вставить("НалоговаяБазаПоСВЗаМесяц", 0);
|
||||
С.Вставить("ИтогоФСС", 0);
|
||||
Возврат С;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция ОпределитьГодЗагрузки(ЛистРасчет) Экспорт
|
||||
ГодЗначение = ПрочитатьЯчейкуЧисло(ЛистРасчет, 3, 1, "");
|
||||
Если ГодЗначение > 0 Тогда Возврат Цел(ГодЗначение); КонецЕсли;
|
||||
ГодЗначение = ПрочитатьЯчейкуЧисло(ЛистРасчет, 4, 1, "");
|
||||
Если ГодЗначение > 2000 Тогда Возврат Цел(ГодЗначение); КонецЕсли;
|
||||
Возврат 0;
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция ОпределитьОрганизацию(ЛистРасчет) Экспорт
|
||||
Возврат СокрЛП(Строка(ЛистРасчет.Cells(4, 20).Value));
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция ОпределитьСтатьюФинансирования(ЛистРасчет) Экспорт
|
||||
Возврат СокрЛП(Строка(ЛистРасчет.Cells(8, 20).Value));
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ЧтениеДанных
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПрочитатьExcelНаКлиенте() Экспорт
|
||||
КонтекстExcel = ОткрытьФайлExcel(Объект.ПутьКФайлу);
|
||||
Если КонтекстExcel = Неопределено Тогда Возврат; КонецЕсли;
|
||||
|
||||
ЛистРасчет = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.НайтиЛист(КонтекстExcel.Книга, "Расчет");
|
||||
ЛистРасчет = НайтиЛист(КонтекстExcel.Книга, "Расчет");
|
||||
Если ЛистРасчет = Неопределено Тогда
|
||||
Сообщить("Лист 'Расчет' не найден!");
|
||||
ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ЗакрытьExcel(КонтекстExcel, Неопределено);
|
||||
ЗакрытьExcel(КонтекстExcel, Неопределено);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
// Определяем параметры из Excel
|
||||
Объект._ГодЗагрузки = Строка(ЗагрузкаДанныхИзExcel_МаппингДанных.ОпределитьГодЗагрузки(ЛистРасчет));
|
||||
Объект._ОрганизацияНаименование = ЗагрузкаДанныхИзExcel_МаппингДанных.ОпределитьОрганизацию(ЛистРасчет);
|
||||
Объект._СтатьяФинансированияНаименование = ЗагрузкаДанныхИзExcel_МаппингДанных.ОпределитьСтатьюФинансирования(ЛистРасчет);
|
||||
Объект._ГодЗагрузки = Строка(ОпределитьГодЗагрузки(ЛистРасчет));
|
||||
Объект._ОрганизацияНаименование = ОпределитьОрганизацию(ЛистРасчет);
|
||||
Объект._СтатьяФинансированияНаименование = ОпределитьСтатьюФинансирования(ЛистРасчет);
|
||||
Объект._СтатьяРасходовКод = "211";
|
||||
Объект.МесяцЗагрузки = Число(ЛистРасчет.Cells(4, 1).Value);
|
||||
|
||||
ГодЗагрузки = Объект._ГодЗагрузки;
|
||||
МесяцТекст = ЗагрузкаДанныхИзExcel_МаппингДанных.НомерМесяцаВТекст(Объект.МесяцЗагрузки) + " " + ГодЗагрузки;
|
||||
МесяцТекст = НомерМесяцаВТекст(Объект.МесяцЗагрузки) + " " + Объект._ГодЗагрузки;
|
||||
|
||||
// Определяем начальную строку данных
|
||||
НачальнаяСтрока = 0;
|
||||
Для Ном = 17 По 30 Цикл
|
||||
Формула = ЛистРасчет.Cells(Ном, 1).Formula;
|
||||
@@ -86,7 +324,7 @@
|
||||
КонецЕсли;
|
||||
Если НачальнаяСтрока = 0 Тогда
|
||||
Сообщить("Данные не найдены!");
|
||||
ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ЗакрытьExcel(КонтекстExcel, Неопределено);
|
||||
ЗакрытьExcel(КонтекстExcel, Неопределено);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -108,59 +346,53 @@
|
||||
Если СтрНачинаетсяС(ВРег(ФИОТекст), "ИТОГО") Тогда Прервать; КонецЕсли;
|
||||
Если СтрНачинаетсяС(ВРег(ФИОТекст), "СОТРУДНИК") ИЛИ СтрНачинаетсяС(ВРег(ФИОТекст), "ФАМИЛИЯ") Тогда Продолжить; КонецЕсли;
|
||||
|
||||
ЛистСотрудника = ЗагрузкаДанныхИзExcel_МаппингДанных.НайтиЛистСотрудника(КонтекстExcel.Книга, ЛистРасчет, Ном);
|
||||
ЛистСотрудника = НайтиЛистСотрудника(КонтекстExcel.Книга, ЛистРасчет, Ном);
|
||||
Если ЛистСотрудника = Неопределено Тогда Продолжить; КонецЕсли;
|
||||
|
||||
ФИО = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 3);
|
||||
ФИО = ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 3);
|
||||
Если Не ЗначениеЗаполнено(ФИО) Тогда ФИО = ФИОТекст; КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(ФИО) Тогда Продолжить; КонецЕсли;
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
Состояние("Загрузка: " + ФИО, 20 + 70 * Счетчик / 50);
|
||||
|
||||
Строка = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьРасчетныеДанные(ЛистРасчет, Ном, ФИО);
|
||||
Строка = ПрочитатьРасчетныеДанные(ЛистРасчет, Ном, ФИО);
|
||||
Строка.Вставить("ИдентификаторСотрудника", Счетчик);
|
||||
Строка.Вставить("ОтработаноДнейКалендарных", ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуЧисло(ЛистСотрудника, ЗагрузкаДанныхИзExcel_МаппингДанных.СтрокаМесяцаНаЛистеСотрудника(), 4, ФИО));
|
||||
Строка.Вставить("ОтработаноДнейКалендарных", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаМесяцаНаЛистеСотрудника(), 4, ФИО));
|
||||
|
||||
Если ЛистСотрудника <> Неопределено Тогда
|
||||
Карточка = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьКарточкуСотрудника(ЛистСотрудника);
|
||||
Карточка = ПрочитатьКарточкуСотрудника(ЛистСотрудника);
|
||||
Если ЗначениеЗаполнено(Карточка.ФИО) Тогда Строка.Вставить("ФИО", Карточка.ФИО); КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
МассивДанных.Добавить(Строка);
|
||||
|
||||
// Сотрудники
|
||||
Если ЛистСотрудника <> Неопределено Тогда
|
||||
ДанныеСотр = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьКарточкуСотрудника(ЛистСотрудника);
|
||||
ДанныеСотр = ПрочитатьКарточкуСотрудника(ЛистСотрудника);
|
||||
Иначе
|
||||
ДанныеСотр = Новый Структура("ФИО, ИНН, СНИЛС, ЛицевойСчетВБанке, ВидЗанятости, АдресРегистрации", ФИО, "", "", "", "", "");
|
||||
КонецЕсли;
|
||||
ДанныеСотр.Вставить("Идентификатор", Счетчик);
|
||||
МассивСотрудников.Добавить(ДанныеСотр);
|
||||
|
||||
// НДФЛ
|
||||
Если ЛистСотрудника <> Неопределено Тогда
|
||||
ДанныеНДФЛ = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьНДФЛСоЛиста(ЛистСотрудника, ФИО);
|
||||
ДанныеНДФЛ = ПрочитатьНДФЛСоЛиста(ЛистСотрудника, ФИО);
|
||||
Если ДанныеНДФЛ <> Неопределено Тогда
|
||||
ДанныеНДФЛ.Вставить("ИдентификаторСотрудника", Счетчик);
|
||||
МассивНДФЛ.Добавить(ДанныеНДФЛ);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
// Страховые взносы
|
||||
СтрВзносов = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьВзносыИзРасчета(ЛистРасчет, Ном, ФИО);
|
||||
СтрВзносов = ПрочитатьВзносыИзРасчета(ЛистРасчет, Ном, ФИО);
|
||||
Если СтрВзносов <> Неопределено Тогда
|
||||
СтрВзносов.Вставить("ИдентификаторСотрудника", Счетчик);
|
||||
МассивВзносов.Добавить(СтрВзносов);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ЗакрытьExcel(КонтекстExcel, Неопределено);
|
||||
ЗакрытьExcel(КонтекстExcel, Неопределено);
|
||||
Состояние("Заполнение таблиц...", 95);
|
||||
|
||||
ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников);
|
||||
|
||||
СтатусЗагрузки = "Загружено: " + Счетчик + " сотрудников";
|
||||
Состояние("Готово", 100);
|
||||
КонецПроцедуры
|
||||
@@ -170,8 +402,236 @@
|
||||
#Область СерверныеПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников)
|
||||
ЗагрузкаДанныхИзExcel_ЗаписьВРегистры.ЗаполнитьТЧ(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников, Объект.ДанныеРасчетаЗП, Объект.ДанныеСтраховыхВзносов, Объект.ДанныеНДФЛ, Объект.Сотрудники);
|
||||
Процедура ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников) Экспорт
|
||||
ТЧЗП = РеквизитФормыВЗначение("Объект.ДанныеРасчетаЗП");
|
||||
ТЧВзносы = РеквизитФормыВЗначение("Объект.ДанныеСтраховыхВзносов");
|
||||
ТЧНДФЛ = РеквизитФормыВЗначение("Объект.ДанныеНДФЛ");
|
||||
ТЧСотрудники = РеквизитФормыВЗначение("Объект.Сотрудники");
|
||||
ТЧЗП.Очистить(); ТЧВзносы.Очистить(); ТЧНДФЛ.Очистить(); ТЧСотрудники.Очистить();
|
||||
Для Каждого Строка Из МассивДанных Цикл НоваяСтрока = ТЧЗП.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); КонецЦикла;
|
||||
Для Каждого Строка Из МассивВзносов Цикл НоваяСтрока = ТЧВзносы.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); КонецЦикла;
|
||||
Для Каждого Строка Из МассивНДФЛ Цикл НоваяСтрока = ТЧНДФЛ.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); КонецЦикла;
|
||||
Для Каждого Строка Из МассивСотрудников Цикл НоваяСтрока = ТЧСотрудники.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); КонецЦикла;
|
||||
ЗначениеВРеквизитФормы(ТЧЗП, "Объект.ДанныеРасчетаЗП");
|
||||
ЗначениеВРеквизитФормы(ТЧВзносы, "Объект.ДанныеСтраховыхВзносов");
|
||||
ЗначениеВРеквизитФормы(ТЧНДФЛ, "Объект.ДанныеНДФЛ");
|
||||
ЗначениеВРеквизитФормы(ТЧСотрудники, "Объект.Сотрудники");
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗаписатьДанныеНаСервере(ГодЗагрузкиПараметр, ОрганизацияНаименование, СтатьяФинансированияНаименование, СтатьяРасходовКод) Экспорт
|
||||
ГодЧисло = Число(ГодЗагрузкиПараметр);
|
||||
МесяцЧисло = Цел(Объект.МесяцЗагрузки);
|
||||
Если ГодЧисло = 0 Тогда ГодЧисло = Год(ТекущаяДата()); КонецЕсли;
|
||||
Если МесяцЧисло < 1 Или МесяцЧисло > 12 Тогда
|
||||
Сообщить("Ошибка: месяц = " + МесяцЧисло + ", год = " + ГодЧисло);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Период = Дата(ГодЧисло, МесяцЧисло, 1);
|
||||
|
||||
Организация = Справочники.Организации.НайтиПоНаименованию(СокрЛП(ОрганизацияНаименование), Истина);
|
||||
Если Не ЗначениеЗаполнено(Организация) Тогда
|
||||
Сообщить("Не найдена организация: """ + ОрганизацияНаименование + """");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
СтатьяФинансирования = Неопределено;
|
||||
Если ЗначениеЗаполнено(СтатьяФинансированияНаименование) Тогда
|
||||
СтатьяФинансирования = Справочники.СтатьиФинансированияЗарплата.НайтиПоНаименованию(СокрЛП(СтатьяФинансированияНаименование), Истина);
|
||||
КонецЕсли;
|
||||
СтатьяРасходов = Неопределено;
|
||||
Если ЗначениеЗаполнено(СтатьяРасходовКод) Тогда
|
||||
СтатьяРасходов = Справочники.СтатьиРасходовЗарплата.НайтиПоКоду(СокрЛП(СтатьяРасходовКод));
|
||||
КонецЕсли;
|
||||
|
||||
КэшСотрудников = Новый Соответствие;
|
||||
Для Каждого Эл Из Объект.Сотрудники Цикл
|
||||
СотрСсылка = Неопределено;
|
||||
Если ЗначениеЗаполнено(Эл.ИНН) Тогда
|
||||
СотрСсылка = Справочники.Сотрудники.НайтиПоРеквизиту("ИНН", СокрЛП(Эл.ИНН));
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(СотрСсылка) И ЗначениеЗаполнено(Эл.СНИЛС) Тогда
|
||||
ФЛ = Справочники.ФизическиеЛица.НайтиПоРеквизиту("СтраховойНомерПФР", СокрЛП(Эл.СНИЛС));
|
||||
Если ЗначениеЗаполнено(ФЛ) Тогда
|
||||
СотрСсылка = Справочники.Сотрудники.НайтиПоРеквизиту("ФизическоеЛицо", ФЛ, Истина);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(СотрСсылка) И ЗначениеЗаполнено(Эл.ФИО) Тогда
|
||||
СотрСсылка = Справочники.Сотрудники.НайтиПоНаименованию(СокрЛП(Эл.ФИО), Истина);
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(СотрСсылка) Тогда
|
||||
КэшСотрудников.Вставить(Эл.Идентификатор, Новый Структура("Сотрудник, ФизическоеЛицо", СотрСсылка, СотрСсылка.ФизическоеЛицо));
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
ДокПеренос = Документы.ПереносДанных.СоздатьДокумент();
|
||||
ДокПеренос.Дата = Период;
|
||||
ВидРасчётаОклад = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Оклад", Истина);
|
||||
|
||||
// === Регистр 1: НачисленияУдержанияПоСотрудникам ===
|
||||
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||
ФизЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||
Сотр = ДанныеСотр.Сотрудник;
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Оклад, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаСовместительство", Строка.ДоплатаСовместительство, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаНочные", Строка.ДоплатаНочные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаПраздничные", Строка.ДоплатаПраздничные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаКатегорию", Строка.НадбавкаЗаКатегорию, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаВредность", Строка.НадбавкаЗаВредность, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "ПовышающийКоэффициент", Строка.ПовышающийКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "СтимулирующаяВыплата", Строка.СтимулирующиеВыплаты, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "РайонныйКоэффициент", Строка.РайонныйКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "ПремияРазовая", Строка.ПремияРазовая, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "Отпуск", Строка.Отпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "КомпенсацияЗаОтпуск", Строка.КомпенсацияЗаОтпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "ВыходноеПособие", Строка.ВыходноеПособие, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "Родовые", Строка.Родовые, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
// Удержания
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "НДФЛ", Строка.НДФЛ, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "ПрофВзнос", Строка.ПрофВзнос, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "ИсполнительныйДокумент", Строка.ИсполнительныеДокументы, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
// Выплаты
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Аванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.ЗарплатаЗаПервуюПоловину, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "Касса1", Строка.Касса1, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "БезналичноеПеречисление", Строка.БезналичныеПеречисления, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "ПремияАванс", Строка.ПремияАванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
ЗаписатьНачисление(ДокПеренос, Строка, "ВыплатыВМежрасчетный", Строка.ВыплатыВМежрасчетный, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, Сотр);
|
||||
КонецЦикла;
|
||||
|
||||
// === Регистр 2: ОтработанноеВремяПоСотрудникам ===
|
||||
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||
Если Строка.ОтработаноДней > 0 Или Строка.РабочиеЧасыПоТабелю > 0 Тогда
|
||||
Движение = ДокПеренос.Движения.ОтработанноеВремяПоСотрудникам.Добавить();
|
||||
Движение.Период = Период;
|
||||
Движение.Организация = Организация;
|
||||
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
||||
Движение.Начисление = ВидРасчётаОклад;
|
||||
Движение.ОтработаноДней = Строка.ОтработаноДней;
|
||||
Движение.ОтработаноЧасов = Строка.РабочиеЧасыПоТабелю;
|
||||
Движение.ОплаченоДней = Строка.ОтработаноДней;
|
||||
Движение.ОплаченоЧасов = Строка.РабочиеЧасыПоТабелю;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
// === Регистр 3: СведенияОДоходахНДФЛ ===
|
||||
Для Каждого Строка Из Объект.ДанныеНДФЛ Цикл
|
||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||
Движение = ДокПеренос.Движения.СведенияОДоходахНДФЛ.Добавить();
|
||||
Движение.Период = Период;
|
||||
Движение.ГоловнаяОрганизация = Организация;
|
||||
Движение.Организация = Организация;
|
||||
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||
Движение.МесяцНалоговогоПериода = Период;
|
||||
Движение.СуммаДохода = Строка.СуммаВаловогоДохода;
|
||||
Движение.СуммаВычета = Строка.СкидкаДляНДФЛЗаМесяц + Строка.ВычетНаРаботникаЗаМесяц + Строка.ВычетНаИждивенцевЗаМесяц;
|
||||
КонецЦикла;
|
||||
|
||||
// === Регистр 4: СтраховыеВзносыПоФизическимЛицам ===
|
||||
Для Каждого Строка Из Объект.ДанныеСтраховыхВзносов Цикл
|
||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||
Движение = ДокПеренос.Движения.СтраховыеВзносыПоФизическимЛицам.Добавить();
|
||||
Движение.Период = Период;
|
||||
Движение.Организация = Организация;
|
||||
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
||||
Движение.ПФРДоПредельнойВеличины = Строка.ДТ6Процент;
|
||||
Движение.ПФРСтраховая = Строка.ПФСтраховая;
|
||||
Движение.ФФОМС = Строка.ФССФОМС;
|
||||
Движение.ФССНесчастныеСлучаи = Строка.НСПЗ;
|
||||
КонецЦикла;
|
||||
|
||||
// === Регистр 6: ВзаиморасчетыССотрудниками ===
|
||||
ДвиженияВзаиморасчеты = ДокПеренос.Движения.ВзаиморасчетыССотрудниками;
|
||||
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||
Если Строка.ВсегоНаРуки <> 0 Тогда
|
||||
Движение = ДвиженияВзаиморасчеты.Добавить();
|
||||
Движение.Период = Период;
|
||||
Движение.Организация = Организация;
|
||||
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
||||
Движение.СтатьяФинансирования = СтатьяФинансирования;
|
||||
Движение.СтатьяРасходов = СтатьяРасходов;
|
||||
Движение.СуммаВзаиморасчетов = Строка.ВсегоНаРуки;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
// === Регистр 7: БухгалтерскиеВзаиморасчетыССотрудниками ===
|
||||
ДвиженияБухВзаиморасчеты = ДокПеренос.Движения.БухгалтерскиеВзаиморасчетыССотрудниками;
|
||||
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||
Если Строка.ВсегоНаРуки <> 0 Тогда
|
||||
Движение = ДвиженияБухВзаиморасчеты.Добавить();
|
||||
Движение.Период = Период;
|
||||
Движение.Организация = Организация;
|
||||
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
||||
Движение.СтатьяФинансирования = СтатьяФинансирования;
|
||||
Движение.СтатьяРасходов = СтатьяРасходов;
|
||||
Движение.СуммаВзаиморасчетов = Строка.ВсегоНаРуки;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
// === Регистр 8: ДанныеОВремениДляРасчетаСреднегоОбщий ===
|
||||
ДвиженияСреднего = ДокПеренос.Движения.ДанныеОВремениДляРасчетаСреднегоОбщий;
|
||||
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||
Если Строка.ОтработаноДней <> 0 Тогда
|
||||
Движение = ДвиженияСреднего.Добавить();
|
||||
Движение.Период = Период;
|
||||
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
||||
Движение.ОтработаноДней = Строка.ОтработаноДней;
|
||||
Движение.ОтработаноЧасов = Строка.РабочиеЧасыПоТабелю;
|
||||
Движение.ОтработаноДнейКалендарных = Строка.ОтработаноДнейКалендарных;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
ДокПеренос.Записать();
|
||||
Сообщить("Данные записаны. Документ: " + ДокПеренос.Ссылка);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Процедура ЗаписатьНачисление(ДокПеренос, Строка, ВидРасчета, Сумма, Группа, Период, Организация, СтатьяФинанс, СтатьяРасх, ФизЛицо, Сотр) Экспорт
|
||||
Если Сумма = 0 Тогда Возврат; КонецЕсли;
|
||||
Суффикс = "";
|
||||
Если ЗначениеЗаполнено(СтатьяФинанс) Тогда
|
||||
Наим = СокрЛП(СтатьяФинанс.Наименование);
|
||||
Если СтрНайти(Наим, "ОМС") > 0 Тогда Суффикс = " (ОМС)";
|
||||
ИначеЕсли СтрНайти(Наим, "ПД") > 0 Тогда Суффикс = " (ПД)";
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
ВидРасчёта = Неопределено;
|
||||
Если ЗначениеЗаполнено(Суффикс) Тогда
|
||||
ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета + Суффикс, Истина);
|
||||
КонецЕсли;
|
||||
Если ВидРасчёта = Неопределено Тогда
|
||||
ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета, Истина);
|
||||
КонецЕсли;
|
||||
Если ВидРасчёта = Неопределено Тогда
|
||||
Сообщить("Не найден ПВР: " + ВидРасчета + Суффикс);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Движение = ДокПеренос.Движения.НачисленияУдержанияПоСотрудникам.Добавить();
|
||||
Движение.Период = Период;
|
||||
Движение.Организация = Организация;
|
||||
Движение.ФизическоеЛицо = ФизЛицо;
|
||||
Движение.Сотрудник = Сотр;
|
||||
Движение.НачислениеУдержание = ВидРасчёта;
|
||||
Движение.Сумма = Сумма;
|
||||
Движение.ГруппаНачисленияУдержанияВыплаты = Группа;
|
||||
Движение.СтатьяФинансирования = СтатьяФинанс;
|
||||
Движение.СтатьяРасходов = СтатьяРасх;
|
||||
Движение.Сторно = Ложь;
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Reference in New Issue
Block a user