diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl index 4f631e1..405a42b 100644 --- a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl +++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl @@ -445,9 +445,130 @@ &НаСервере Процедура ЗаписатьДанныеНаСервере() - ГодЗагрузки = ТекущаяДата().Год(); + // Определяем период + ГодЗагрузки = ГодЗагрузки; + Если Не ЗначениеЗаполнено(ГодЗагрузки) Тогда + ГодЗагрузки = Год(ТекущаяДата()); + КонецЕсли; Период = Дата(ГодЗагрузки, Объект.МесяцЗагрузки, 1); - Объект.ЗаписатьДанныеРасчета(Объект.ДанныеРасчетаЗП, Период); + + // Создаём документ ПереносДанных + ДокПеренос = Документы.ПереносДанных.СоздатьДокумент(); + ДокПеренос.Дата = Период; + + // Сопоставление сотрудников + СоответствиеСотрудников = Новый Соответствие; + Для Каждого Эл Из Объект.Сотрудники Цикл + СоответствиеСотрудников.Вставить(Эл.Идентификатор, Эл.ФИО); + КонецЦикла; + + // Сопоставление организаций и статей + Организация = Справочники.Организации.НайтиПоНаименованию(СокрЛП(Объект.Организация), Истина); + СтатьяФинансирования = Справочники.СтатьиФинансированияЗарплата.НайтиПоНаименованию(СокрЛП(Объект.СтатьяФинансирования), Истина); + СтатьяРасходов = Справочники.СтатьиРасходовЗарплата.НайтиПоНаименованию(СокрЛП(Объект.СтатьяРасходов), Истина); + + // ============================================ + // Регистр 1: НачисленияУдержанияПоСотрудникам + // ============================================ + Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл + ИД = Строка.ИдентификаторСотрудника; + + // Начисления (Оклад, доплаты, надбавки и т.д.) + ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Оклад, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаСовместительство", Строка.ДоплатаСовместительство, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаНочные", Строка.ДоплатаНочные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаПраздничные", Строка.ДоплатаПраздничные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаКатегорию", Строка.НадбавкаЗаКатегорию, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаВредность", Строка.НадбавкаЗаВредность, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "ПовышающийКоэффициент", Строка.ПовышающийКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "СтимулирующаяВыплата", Строка.СтимулирующиеВыплаты, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "РайонныйКоэффициент", Строка.РайонныйКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "ПремияРазовая", Строка.ПремияРазовая, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "Отпуск", Строка.Отпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "КомпенсацияЗаНеиспользованныйОтпуск", Строка.КомпенсацияЗаОтпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "ВыходноеПособие", Строка.ВыходноеПособие, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "Родовые", Строка.Родовые, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + + // Удержания + ЗаписатьНачисление(ДокПеренос, Строка, "НДФЛ", Строка.НДФЛ, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержание, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "ПрофВзнос", Строка.ПрофВзнос, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержание, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "ИсполнительныйДокумент", Строка.ИсполнительныеДокументы, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержание, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + + // Выплаты + ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Аванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплата, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.ЗарплатаЗаПервуюПоловину, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплата, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "Касса1", Строка.Касса1, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплата, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "БезналичноеПеречисление", Строка.БезналичныеПеречисления, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплата, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + КонецЦикла; + + // ============================================ + // Регистр 2: ОтработанноеВремяПоСотрудникам + // ============================================ + Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл + Если Строка.ОтработаноДней > 0 Или Строка.ОтработаноЧасыПоТабелю > 0 Тогда + Движение = ДокПеренос.Движения.ОтработанноеВремяПоСотрудникам.Добавить(); + Движение.Период = Период; + Движение.Организация = Организация; + Движение.Начисление = ПланыВидовРасчета.Начисления.Оклад; + Движение.ОтработаноДней = Строка.ОтработаноДней; + Движение.ОтработаноЧасов = Строка.ОтработаноЧасыПоТабелю; + Движение.ОплаченоДней = Строка.ОтработаноДней; + Движение.ОплаченоЧасов = Строка.ОтработаноЧасыПоТабелю; + КонецЕсли; + КонецЦикла; + + // ============================================ + // Регистр 3: СведенияОДоходахНДФЛ + // ============================================ + Для Каждого Строка Из Объект.ДанныеНДФЛ Цикл + Движение = ДокПеренос.Движения.СведенияОДоходахНДФЛ.Добавить(); + Движение.Период = Период; + Движение.Организация = Организация; + Движение.МесяцНалоговогоПериода = Период; + Движение.СуммаДохода = Строка.СуммаВаловогоДохода; + Движение.СуммаВычета = Строка.СкидкаДляНДФЛЗаМесяц + Строка.ВычетНаРаботникаЗаМесяц + Строка.ВычетНаИждивенцевЗаМесяц; + КонецЦикла; + + // ============================================ + // Регистр 4: СтраховыеВзносыПоФизическимЛицам + // ============================================ + Для Каждого Строка Из Объект.ДанныеСтраховыхВзносов Цикл + Движение = ДокПеренос.Движения.СтраховыеВзносыПоФизическимЛицам.Добавить(); + Движение.Период = Период; + Движение.Организация = Организация; + Движение.ПФРДоПредельнойВеличины = Строка.ДТ6Процент; + Движение.ПФРСтраховая = Строка.ПФСтраховая; + Движение.ФФОМС = Строка.ФССФОМС; + Движение.ФССНесчастныеСлучаи = Строка.НСПЗ; + КонецЦикла; + + // Записываем документ + ДокПеренос.Записать(); + + // Записываем движения + Для Каждого Движение Из ДокПеренос.Движения Цикл + Движение.Записать(); + КонецЦикла; + + Сообщить("Данные записаны. Документ: " + ДокПеренос.Ссылка); +КонецПроцедуры + +// Вспомогательная процедура для записи начисления/удержания/выплаты +&НаСервере +Процедура ЗаписатьНачисление(ДокПеренос, Строка, ВидРасчета, Сумма, Группа, Период, Организация, СтатьяФинансирования, СтатьяРасходов) + Если Сумма = 0 Тогда Возврат; КонецЕсли; + + // Находим вид расчёта по наименованию + ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета, Истина); + + Движение = ДокПеренос.Движения.НачисленияУдержанияПоСотрудникам.Добавить(); + Движение.Период = Период; + Движение.Организация = Организация; + Движение.Сумма = Сумма; + Движение.Группа = Группа; + Движение.СтатьяФинансирования = СтатьяФинансирования; + Движение.СтатьяРасходов = СтатьяРасходов; + Движение.Сторно = Ложь; КонецПроцедуры #КонецОбласти