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 @@
Движение = ДокПеренос.Движения.НачисленияУдержанияПоСотрудникам.Добавить();
Движение.Период = Период;
Движение.Организация = Организация;
- Движение.ФизическоеЛицо = Строка.ФизическоеЛицо;
- Движение.Сотрудник = Строка.Сотрудник;
- Движение.Подразделение = Строка.Подразделение;
+ Движение.ФизическоеЛицо = ФизЛицо;
+ Движение.Сотрудник = СотрудникСсылка;
Движение.НачислениеУдержание = ВидРасчёта;
Движение.Сумма = Сумма;
Движение.ГруппаНачисленияУдержанияВыплаты = Группа;