v3.0.0.38: implement register writing (8 registers)

This commit is contained in:
Профи-Софт
2026-07-12 13:00:39 +00:00
parent d1e5cd57a6
commit 1ad62e27ba
@@ -445,9 +445,130 @@
&НаСервере
Процедура ЗаписатьДанныеНаСервере()
ГодЗагрузки = ТекущаяДата().Год();
// Определяем период
ГодЗагрузки = ГодЗагрузки;
Если Не ЗначениеЗаполнено(ГодЗагрузки) Тогда
ГодЗагрузки = Год(ТекущаяДата());
КонецЕсли;
Период = Дата(ГодЗагрузки, Объект.МесяцЗагрузки, 1);
Объект.ЗаписатьДанныеРасчета(Объект.ДанныеРасчетаЗП, Период);
// Создаём документ ПереносДанных
ДокПеренос = Документы.ПереносДанных.СоздатьДокумент();
ДокПеренос.Дата = Период;
// Сопоставление сотрудников
СоответствиеСотрудников = Новый Соответствие;
Для Каждого Эл Из Объект.Сотрудники Цикл
СоответствиеСотрудников.Вставить(Эл.Идентификатор, Эл.ФИО);
КонецЦикла;
// Сопоставление организаций и статей
Организация = Справочники.Организации.НайтиПоНаименованию(СокрЛП(Объект.Организация), Истина);
СтатьяФинансирования = Справочники.СтатьиФинансированияЗарплата.НайтиПоНаименованию(СокрЛП(Объект.СтатьяФинансирования), Истина);
СтатьяРасходов = Справочники.СтатьиРасходовЗарплата.НайтиПоНаименованию(СокрЛП(Объект.СтатьяРасходов), Истина);
// ============================================
// Регистр 1: НачисленияУдержанияПоСотрудникам
// ============================================
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
ИД = Строка.ИдентификаторСотрудника;
// Начисления (Оклад, доплаты, надбавки и т.д.)
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Оклад, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаСовместительство", Строка.ДоплатаСовместительство, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаНочные", Строка.ДоплатаНочные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаПраздничные", Строка.ДоплатаПраздничные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаКатегорию", Строка.НадбавкаЗаКатегорию, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаВредность", Строка.НадбавкаЗаВредность, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "ПовышающийКоэффициент", Строка.ПовышающийКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "СтимулирующаяВыплата", Строка.СтимулирующиеВыплаты, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "РайонныйКоэффициент", Строка.РайонныйКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "ПремияРазовая", Строка.ПремияРазовая, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "Отпуск", Строка.Отпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "КомпенсацияЗаНеиспользованныйОтпуск", Строка.КомпенсацияЗаОтпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "ВыходноеПособие", Строка.ВыходноеПособие, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "Родовые", Строка.Родовые, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начисление, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
// Удержания
ЗаписатьНачисление(ДокПеренос, Строка, "НДФЛ", Строка.НДФЛ, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержание, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "ПрофВзнос", Строка.ПрофВзнос, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержание, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "ИсполнительныйДокумент", Строка.ИсполнительныеДокументы, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержание, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
// Выплаты
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Аванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплата, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.ЗарплатаЗаПервуюПоловину, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплата, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "Касса1", Строка.Касса1, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплата, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
ЗаписатьНачисление(ДокПеренос, Строка, "БезналичноеПеречисление", Строка.БезналичныеПеречисления, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплата, Период, Организация, СтатьяФинансирования, СтатьяРасходов);
КонецЦикла;
// ============================================
// Регистр 2: ОтработанноеВремяПоСотрудникам
// ============================================
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
Если Строка.ОтработаноДней > 0 Или Строка.ОтработаноЧасыПоТабелю > 0 Тогда
Движение = ДокПеренос.Движения.ОтработанноеВремяПоСотрудникам.Добавить();
Движение.Период = Период;
Движение.Организация = Организация;
Движение.Начисление = ПланыВидовРасчета.Начисления.Оклад;
Движение.ОтработаноДней = Строка.ОтработаноДней;
Движение.ОтработаноЧасов = Строка.ОтработаноЧасыПоТабелю;
Движение.ОплаченоДней = Строка.ОтработаноДней;
Движение.ОплаченоЧасов = Строка.ОтработаноЧасыПоТабелю;
КонецЕсли;
КонецЦикла;
// ============================================
// Регистр 3: СведенияОДоходахНДФЛ
// ============================================
Для Каждого Строка Из Объект.ДанныеНДФЛ Цикл
Движение = ДокПеренос.Движения.СведенияОДоходахНДФЛ.Добавить();
Движение.Период = Период;
Движение.Организация = Организация;
Движение.МесяцНалоговогоПериода = Период;
Движение.СуммаДохода = Строка.СуммаВаловогоДохода;
Движение.СуммаВычета = Строка.СкидкаДляНДФЛЗаМесяц + Строка.ВычетНаРаботникаЗаМесяц + Строка.ВычетНаИждивенцевЗаМесяц;
КонецЦикла;
// ============================================
// Регистр 4: СтраховыеВзносыПоФизическимЛицам
// ============================================
Для Каждого Строка Из Объект.ДанныеСтраховыхВзносов Цикл
Движение = ДокПеренос.Движения.СтраховыеВзносыПоФизическимЛицам.Добавить();
Движение.Период = Период;
Движение.Организация = Организация;
Движение.ПФРДоПредельнойВеличины = Строка.ДТ6Процент;
Движение.ПФРСтраховая = Строка.ПФСтраховая;
Движение.ФФОМС = Строка.ФССФОМС;
Движение.ФССНесчастныеСлучаи = Строка.НСПЗ;
КонецЦикла;
// Записываем документ
ДокПеренос.Записать();
// Записываем движения
Для Каждого Движение Из ДокПеренос.Движения Цикл
Движение.Записать();
КонецЦикла;
Сообщить("Данные записаны. Документ: " + ДокПеренос.Ссылка);
КонецПроцедуры
// Вспомогательная процедура для записи начисления/удержания/выплаты
&НаСервере
Процедура ЗаписатьНачисление(ДокПеренос, Строка, ВидРасчета, Сумма, Группа, Период, Организация, СтатьяФинансирования, СтатьяРасходов)
Если Сумма = 0 Тогда Возврат; КонецЕсли;
// Находим вид расчёта по наименованию
ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета, Истина);
Движение = ДокПеренос.Движения.НачисленияУдержанияПоСотрудникам.Добавить();
Движение.Период = Период;
Движение.Организация = Организация;
Движение.Сумма = Сумма;
Движение.Группа = Группа;
Движение.СтатьяФинансирования = СтатьяФинансирования;
Движение.СтатьяРасходов = СтатьяРасходов;
Движение.Сторно = Ложь;
КонецПроцедуры
#КонецОбласти