diff --git a/Configuration.xml b/Configuration.xml index 98a847e..9d9230c 100755 --- a/Configuration.xml +++ b/Configuration.xml @@ -56,7 +56,7 @@ Russian ООО "Профи-Софт", код партнера 42575-13, г.Байконур. - 3.0.0.50 + 3.0.0.51 Language.Русский diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl index 0d50f41..dda8535 100644 --- a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl +++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl @@ -472,6 +472,15 @@ СоответствиеСотрудников.Вставить(Эл.Идентификатор, Эл.ФИО); КонецЦикла; + // Кэш сотрудников: Идентификатор -> (Сотрудник, ФизическоеЛицо) + КэшСотрудников = Новый Соответствие; + Для Каждого Эл Из Объект.Сотрудники Цикл + СотрСсылка = Справочники.Сотрудники.НайтиПоНаименованию(СокрЛП(Эл.ФИО), Истина); + Если ЗначениеЗаполнено(СотрСсылка) Тогда + КэшСотрудников.Вставить(Эл.Идентификатор, Новый Структура("Сотрудник, ФизическоеЛицо", СотрСсылка, СотрСсылка.ФизическоеЛицо)); + КонецЕсли; + КонецЦикла; + // Сопоставление организаций и статей Организация = Справочники.Организации.НайтиПоНаименованию(СокрЛП(Объект.Организация), Истина); СтатьяФинансирования = Справочники.СтатьиФинансированияЗарплата.НайтиПоНаименованию(СокрЛП(Объект.СтатьяФинансирования), Истина); @@ -482,35 +491,38 @@ // ============================================ Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл ИД = Строка.ИдентификаторСотрудника; + ДанныеСотр = КэшСотрудников.Получить(ИД); + ФизЛицо = ?(ДанныеСотр <> Неопределено, ДанныеСотр.ФизическоеЛицо, Неопределено); + СотрудникСсылка = ?(ДанныеСотр <> Неопределено, ДанныеСотр.Сотрудник, Неопределено); // Начисления (Оклад, доплаты, надбавки и т.д.) - ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Оклад, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаСовместительство", Строка.ДоплатаСовместительство, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаНочные", Строка.ДоплатаНочные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаПраздничные", Строка.ДоплатаПраздничные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаКатегорию", Строка.НадбавкаЗаКатегорию, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаВредность", Строка.НадбавкаЗаВредность, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "ПовышающийКоэффициент", Строка.ПовышающийКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "СтимулирующаяВыплата", Строка.СтимулирующиеВыплаты, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "РайонныйКоэффициент", Строка.РайонныйКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "ПремияРазовая", Строка.ПремияРазовая, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "Отпуск", Строка.Отпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "КомпенсацияЗаНеиспользованныйОтпуск", Строка.КомпенсацияЗаОтпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "ВыходноеПособие", Строка.ВыходноеПособие, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "Родовые", Строка.Родовые, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Оклад, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаСовместительство", Строка.ДоплатаСовместительство, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаНочные", Строка.ДоплатаНочные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаПраздничные", Строка.ДоплатаПраздничные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаКатегорию", Строка.НадбавкаЗаКатегорию, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаВредность", Строка.НадбавкаЗаВредность, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "ПовышающийКоэффициент", Строка.ПовышающийКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "СтимулирующаяВыплата", Строка.СтимулирующиеВыплаты, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "РайонныйКоэффициент", Строка.РайонныйКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "ПремияРазовая", Строка.ПремияРазовая, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "Отпуск", Строка.Отпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "КомпенсацияЗаНеиспользованныйОтпуск", Строка.КомпенсацияЗаОтпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "ВыходноеПособие", Строка.ВыходноеПособие, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "Родовые", Строка.Родовые, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); // Удержания - ЗаписатьНачисление(ДокПеренос, Строка, "НДФЛ", Строка.НДФЛ, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "ПрофВзнос", Строка.ПрофВзнос, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "ИсполнительныйДокумент", Строка.ИсполнительныеДокументы, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "НДФЛ", Строка.НДФЛ, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "ПрофВзнос", Строка.ПрофВзнос, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "ИсполнительныйДокумент", Строка.ИсполнительныеДокументы, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); // Выплаты - ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Аванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.ЗарплатаЗаПервуюПоловину, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "Касса1", Строка.Касса1, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "БезналичноеПеречисление", Строка.БезналичныеПеречисления, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "ПремияАванс", Строка.ПремияАванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); - ЗаписатьНачисление(ДокПеренос, Строка, "ВыплатыВМежрасчетный", Строка.ВыплатыВМежрасчетный, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов); + ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Аванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.ЗарплатаЗаПервуюПоловину, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "Касса1", Строка.Касса1, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "БезналичноеПеречисление", Строка.БезналичныеПеречисления, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "ПремияАванс", Строка.ПремияАванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); + ЗаписатьНачисление(ДокПеренос, Строка, "ВыплатыВМежрасчетный", Строка.ВыплатыВМежрасчетный, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка); КонецЦикла; // Регистр 2: ОтработанноеВремяПоСотрудникам @@ -532,9 +544,13 @@ // Регистр 3: СведенияОДоходахНДФЛ // ============================================ Для Каждого Строка Из Объект.ДанныеНДФЛ Цикл + ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника); + Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли; Движение = ДокПеренос.Движения.СведенияОДоходахНДФЛ.Добавить(); Движение.Период = Период; + Движение.ГоловнаяОрганизация = Организация; Движение.Организация = Организация; + Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо; Движение.МесяцНалоговогоПериода = Период; Движение.СуммаДохода = Строка.СуммаВаловогоДохода; Движение.СуммаВычета = Строка.СкидкаДляНДФЛЗаМесяц + Строка.ВычетНаРаботникаЗаМесяц + Строка.ВычетНаИждивенцевЗаМесяц; @@ -544,9 +560,14 @@ // Регистр 4: СтраховыеВзносыПоФизическимЛицам // ============================================ Для Каждого Строка Из Объект.ДанныеСтраховыхВзносов Цикл + ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника); + Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли; Движение = ДокПеренос.Движения.СтраховыеВзносыПоФизическимЛицам.Добавить(); Движение.Период = Период; Движение.Организация = Организация; + Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо; + Движение.Сотрудник = ДанныеСотр.Сотрудник; + Движение.Начисление = ПланыВидовРасчета.Начисления.Оклад; Движение.ПФРДоПредельнойВеличины = Строка.ДТ6Процент; Движение.ПФРСтраховая = Строка.ПФСтраховая; Движение.ФФОМС = Строка.ФССФОМС; @@ -564,51 +585,18 @@ // ============================================ ДвиженияВзаиморасчеты = ДокПеренос.Движения.ВзаиморасчетыССотрудниками; Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл + ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника); + Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли; Если Строка.ВсегоНаРуки <> 0 Тогда Движение = ДвиженияВзаиморасчеты.Добавить(); Движение.Период = Период; Движение.Организация = Организация; - Движение.ФизическоеЛицо = Строка.ФизическоеЛицо; - Движение.Сотрудник = Строка.Сотрудник; - Движение.Подразделение = Строка.Подразделение; - Движение.СтатьяФинансирования = СтатьяФинансирования; - Движение.СтатьяРасходов = СтатьяРасходов; - Движение.СуммаВзаиморасчетов = Строка.ВсегоНаРуки; - КонецЕсли; - КонецЦикла; - - // ============================================ - // Регистр 7: БухгалтерскиеВзаиморасчетыССотрудниками (остатки) - // ============================================ - ДвиженияБухВзаиморасчеты = ДокПеренос.Движения.БухгалтерскиеВзаиморасчетыССотрудниками; - Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл - Если Строка.ВсегоНаРуки <> 0 Тогда - Движение = ДвиженияБухВзаиморасчеты.Добавить(); - Движение.Период = Период; - Движение.Организация = Организация; - Движение.ФизическоеЛицо = Строка.ФизическоеЛицо; - Движение.Сотрудник = Строка.Сотрудник; - Движение.Подразделение = Строка.Подразделение; - Движение.СтатьяФинансирования = СтатьяФинансирования; - Движение.СтатьяРасходов = СтатьяРасходов; - Движение.СуммаВзаиморасчетов = Строка.ВсегоНаРуки; - КонецЕсли; - КонецЦикла; - - // ============================================ - // Регистр 8: ДанныеОВремениДляРасчетаСреднегоОбщий - // ============================================ - ДвиженияСреднего = ДокПеренос.Движения.ДанныеОВремениДляРасчетаСреднегоОбщий; - Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл - Если Строка.ОтработаноДней <> 0 Тогда - Движение = ДвиженияСреднего.Добавить(); - Движение.Период = Период; - Движение.Организация = Организация; - Движение.ФизическоеЛицо = Строка.ФизическоеЛицо; - Движение.Сотрудник = Строка.Сотрудник; - Движение.НормаДнейКалендарных = Строка.ОтработаноДнейКалендарных; + Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо; + Движение.Сотрудник = ДанныеСотр.Сотрудник; + Движение.Начисление = ПланыВидовРасчета.Начисления.Оклад; + Движение.ОтработаноДней = Строка.ОтработаноДней; + Движение.ОтработаноДнейКалендарных = Строка.ОтработаноДнейКалендарных; Движение.КоличествоСтавок = Строка.КоличествоСтавок; - Движение.ДнейБолезниУходаЗаДетьми = 0; КонецЕсли; КонецЦикла; @@ -624,7 +612,7 @@ // Вспомогательная процедура для записи начисления/удержания/выплаты &НаСервере -Процедура ЗаписатьНачисление(ДокПеренос, Строка, ВидРасчета, Сумма, Группа, Период, Организация, СтатьяФинансирования, СтатьяРасходов) +Процедура ЗаписатьНачисление(ДокПеренос, Строка, ВидРасчета, Сумма, Группа, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка) Если Сумма = 0 Тогда Возврат; КонецЕсли; // Находим вид расчёта по наименованию @@ -633,9 +621,8 @@ Движение = ДокПеренос.Движения.НачисленияУдержанияПоСотрудникам.Добавить(); Движение.Период = Период; Движение.Организация = Организация; - Движение.ФизическоеЛицо = Строка.ФизическоеЛицо; - Движение.Сотрудник = Строка.Сотрудник; - Движение.Подразделение = Строка.Подразделение; + Движение.ФизическоеЛицо = ФизЛицо; + Движение.Сотрудник = СотрудникСсылка; Движение.НачислениеУдержание = ВидРасчёта; Движение.Сумма = Сумма; Движение.ГруппаНачисленияУдержанияВыплаты = Группа;