diff --git a/ConfigDumpInfo.xml b/ConfigDumpInfo.xml
index 9412d16..792b2ea 100755
--- a/ConfigDumpInfo.xml
+++ b/ConfigDumpInfo.xml
@@ -3,65 +3,118 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
diff --git a/Configuration.xml b/Configuration.xml
index 5e1fc51..4c30b92 100755
--- a/Configuration.xml
+++ b/Configuration.xml
@@ -1,97 +1,97 @@
-
-
-
-
-
- 9cd510cd-abfc-11d4-9434-004095e12fc7
- b1c2d3e4-f5a6-7890-abcd-ef1234567890
-
-
- 9fcd25a0-4822-11d4-9414-008048da11f9
- c2d3e4f5-a6b7-8901-bcde-f12345678901
-
-
- e3687481-0a87-462c-a166-9f34594f9bba
- d3e4f5a6-b7c8-9012-cdef-123456789012
-
-
- 9de14907-ec23-4a07-96f0-85521cb6b53b
- e4f5a6b7-c8d9-0123-defa-234567890123
-
-
- 51f2d5d8-ea4d-4064-8892-82951750031e
- f5a6b7c8-d9e0-1234-efab-345678901234
-
-
- e68182ea-4237-4383-967f-90c1e3370bc7
- a6b7c8d9-e0f1-2345-fabc-456789012345
-
-
- fb282519-d103-4dd3-bc12-cb271d631dfc
- b7c8d9e0-f1a2-3456-abcd-567890123456
-
-
- Logo
- Extended
-
-
-
- Adopted
- ЗагрузкаДанныхИзExcel
-
-
- ru
- Загрузка данных из Excel
-
-
- Расширение для загрузки данных о заработной плате из Excel
- AddOn
- true
- ЗДЭ_
- Version8_3_24
- ManagedApplication
-
- PlatformApplication
-
- Russian
-
- ООО "Профи-Софт", код партнера 42575-13, г.Байконур.
- 3.0.0.17
-
-
- Language.Русский
-
-
- ru
- Загрузка данных о заработной плате из Excel в 1С ЗГУ
-
-
-
-
- ru
- Обработка для загрузки данных о расчете заработной платы, страховых взносов и НДФЛ из Excel-файлов в конфигурацию "1С:Зарплата и кадры государственного учреждения". Разработка выполнена при участии AI-ассистента MiMo Code.
-
-
-
-
- ru
- © ООО "Профи-Софт", 2026
-
-
-
-
- ru
- https://profi-soft.ru
-
-
-
- TaxiEnableVersion8_2
-
-
- Русский
- Зарплата
- Логотип
- ЗагрузкаДанныхИзExcel
-
-
+
+
+
+
+
+ 9cd510cd-abfc-11d4-9434-004095e12fc7
+ b1c2d3e4-f5a6-7890-abcd-ef1234567890
+
+
+ 9fcd25a0-4822-11d4-9414-008048da11f9
+ c2d3e4f5-a6b7-8901-bcde-f12345678901
+
+
+ e3687481-0a87-462c-a166-9f34594f9bba
+ d3e4f5a6-b7c8-9012-cdef-123456789012
+
+
+ 9de14907-ec23-4a07-96f0-85521cb6b53b
+ e4f5a6b7-c8d9-0123-defa-234567890123
+
+
+ 51f2d5d8-ea4d-4064-8892-82951750031e
+ f5a6b7c8-d9e0-1234-efab-345678901234
+
+
+ e68182ea-4237-4383-967f-90c1e3370bc7
+ a6b7c8d9-e0f1-2345-fabc-456789012345
+
+
+ fb282519-d103-4dd3-bc12-cb271d631dfc
+ b7c8d9e0-f1a2-3456-abcd-567890123456
+
+
+ Logo
+ Extended
+
+
+
+ Adopted
+ ЗагрузкаДанныхИзExcel
+
+
+ ru
+ Загрузка данных из Excel
+
+
+ Расширение для загрузки данных о заработной плате из Excel
+ AddOn
+ true
+ ЗДЭ_
+ Version8_3_24
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+ ООО "Профи-Софт", код партнера 42575-13, г.Байконур.
+ 3.0.0.18
+
+
+ Language.Русский
+
+
+ ru
+ Загрузка данных о заработной плате из Excel в 1С ЗГУ
+
+
+
+
+ ru
+ Обработка для загрузки данных о расчете заработной платы, страховых взносов и НДФЛ из Excel-файлов в конфигурацию "1С:Зарплата и кадры государственного учреждения". Разработка выполнена при участии AI-ассистента MiMo Code.
+
+
+
+
+ ru
+ © ООО "Профи-Софт", 2026
+
+
+
+
+ ru
+ https://profi-soft.ru
+
+
+
+ TaxiEnableVersion8_2
+
+
+ Русский
+ Зарплата
+ Логотип
+ ЗагрузкаДанныхИзExcel
+
+
\ No newline at end of file
diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel.xml b/DataProcessors/ЗагрузкаДанныхИзExcel.xml
index a4bd6cd..125d2b8 100755
--- a/DataProcessors/ЗагрузкаДанныхИзExcel.xml
+++ b/DataProcessors/ЗагрузкаДанныхИзExcel.xml
@@ -129,7 +129,48 @@
DontCheck
-
+
+
+ ИдентификаторСотрудника
+
+
+ ru
+ Идентификатор сотрудника
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
ФИО
@@ -169,7 +210,7 @@
Auto
-
+
Должность
@@ -209,13 +250,13 @@
Auto
-
+
СчетБК
ru
- Лицевой счет в банке
+ Счет БК
@@ -249,7 +290,7 @@
Auto
-
+
ВидЗанятости
@@ -289,7 +330,7 @@
Auto
-
+
Оклад
@@ -330,13 +371,13 @@
Auto
-
+
КоличествоСтавок
ru
- Кол-во ставок
+ Количество ставок
@@ -371,7 +412,7 @@
Auto
-
+
ОтработаноДней
@@ -412,7 +453,1770 @@
Auto
-
+
+
+ ЧасыДежурства
+
+
+ ru
+ Часы дежурства
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ЧасыНочные
+
+
+ ru
+ Часы ночные
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ЧасыПраздничные
+
+
+ ru
+ Часы праздничные
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ РабочиеЧасыПоТабелю
+
+
+ ru
+ Рабочие часы по табелю
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ИзРасчетаМесячногоОкладаДни
+
+
+ ru
+ Из расчета месячного оклада (дни)
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ДоплатаСовместительство
+
+
+ ru
+ Доплата совместительство
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ДоплатаСовмещениеПроцент
+
+
+ ru
+ Доплата совмещение (%)
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ДоплатаИнтенсивность
+
+
+ ru
+ Доплата интенсивность
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ИзРасчетаМесячногоОкладаЧасы
+
+
+ ru
+ Из расчета месячного оклада (часы)
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ДоплатаНочные
+
+
+ ru
+ Доплата ночные
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ДоплатаПраздничные
+
+
+ ru
+ Доплата праздничные
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ЗаСтаж
+
+
+ ru
+ За стаж
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ НадбавкаЗаКатегорию
+
+
+ ru
+ Надбавка за категорию
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ НадбавкаЗаВредность
+
+
+ ru
+ Надбавка за вредность
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ПовышающийКоэффициент
+
+
+ ru
+ Повышающий коэффициент
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ СтимулирующиеВыплаты
+
+
+ ru
+ Стимулирующие выплаты
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ СтимулирующаяНадбавка
+
+
+ ru
+ Стимулирующая надбавка
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ РайонныйКоэффициент
+
+
+ ru
+ Районный коэффициент
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ВыплатыПоУказу597
+
+
+ ru
+ Выплаты по Указу №597
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ПремияРазовая
+
+
+ ru
+ Премия разовая
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ БольничныйЛистЗаСчетПредприятия
+
+
+ ru
+ Больничный лист за счет предприятия
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ДоплатаПрофактиву
+
+
+ ru
+ Доплата профактиву
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ПусковыеОбсервация
+
+
+ ru
+ Пусковые, обсервация
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ Отпуск
+
+
+ ru
+ Отпуск
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ КомпенсацияЗаОтпуск
+
+
+ ru
+ Компенсация за неиспользованный отпуск
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ПрочиеКомандировочныйУчебныйОтпуск
+
+
+ ru
+ Прочие командировочный/учебный отпуск
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ВыходноеПособие
+
+
+ ru
+ Выходное пособие
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ПоУходуЗаРебенкомИнвалидом
+
+
+ ru
+ По уходу за ребенком-инвалидом
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ДоплатаДоМРОТ
+
+
+ ru
+ Доплата до МРОТ
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ Родовые
+
+
+ ru
+ Родовые
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ПрофВзнос
+
+
+ ru
+ Проф. взнос
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ИсполнительныеДокументы
+
+
+ ru
+ Исполнительные и другие документы
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ Аванс
+
+
+ ru
+ Аванс
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ПФСофинансирование
+
+
+ ru
+ ПФ софинансирование накопит. части
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ПремияУдержание
+
+
+ ru
+ Премия (удержание)
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ Касса1
+
+
+ ru
+ Касса1
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ Касса2
+
+
+ ru
+ Касса2
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ Касса3
+
+
+ ru
+ Касса3
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ПособиеДо3ЛетУдержание
+
+
+ ru
+ Пособие до 3 лет (удержание)
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ БезналичныеПеречисления
+
+
+ ru
+ Безналичные перечисления
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ВозвратВКассу
+
+
+ ru
+ Возврат в кассу
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ Депонент
+
+
+ ru
+ Депонент
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ОстатокНаНачало
+
+
+ ru
+ Остаток на начало
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
ИтогоНачислено
@@ -453,7 +2257,7 @@
Auto
-
+
НДФЛ
@@ -494,7 +2298,48 @@
Auto
-
+
+
+ ПрофВзносНачальный
+
+
+ ru
+ Проф. взнос
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
ИтогоУдержано
@@ -535,7 +2380,7 @@
Auto
-
+
ВсегоНаРуки
@@ -576,126 +2421,6 @@
Auto
-
-
- ИНН
-
-
- ru
- ИНН
-
-
-
-
- xs:string
-
- 0
- Variable
-
-
- false
-
-
-
- false
-
- false
- false
-
-
- false
-
- DontCheck
- Items
-
-
- Auto
- Auto
-
-
- Auto
-
-
-
-
- СНИЛС
-
-
- ru
- СНИЛС
-
-
-
-
- xs:string
-
- 0
- Variable
-
-
- false
-
-
-
- false
-
- false
- false
-
-
- false
-
- DontCheck
- Items
-
-
- Auto
- Auto
-
-
- Auto
-
-
-
-
- Адрес
-
-
- ru
- Адрес
-
-
-
-
- xs:string
-
- 0
- Variable
-
-
- false
-
-
-
- false
-
- false
- false
-
-
- false
-
- DontCheck
- Items
-
-
- Auto
- Auto
-
-
- Auto
-
-
@@ -722,7 +2447,48 @@
DontCheck
-
+
+
+ ИдентификаторСотрудника
+
+
+ ru
+ Идентификатор сотрудника
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
ФИО
@@ -762,7 +2528,7 @@
Auto
-
+
ДТ6Процент
@@ -803,7 +2569,7 @@
Auto
-
+
ДТ4Процент
@@ -844,7 +2610,7 @@
Auto
-
+
ПФСтраховая
@@ -885,7 +2651,7 @@
Auto
-
+
ФССФОМС
@@ -926,7 +2692,7 @@
Auto
-
+
НСПЗ
@@ -967,7 +2733,7 @@
Auto
-
+
Итого
@@ -1008,6 +2774,375 @@
Auto
+
+
+ НалоговаяБазаСВЗаГод
+
+
+ ru
+ Налоговая база СВ за год
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ СтраховаяЧастьПФ
+
+
+ ru
+ Страховая часть ПФ
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ НакопительнаяЧастьПФ
+
+
+ ru
+ Накопительная часть ПФ
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ НачисленоСНачалаГодаФСС
+
+
+ ru
+ Начислено с начала года ФСС
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ОплаченоСНачалаГодаФСС
+
+
+ ru
+ Оплачено с начала года ФСС
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ФССИтого
+
+
+ ru
+ ФСС итого за месяц
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ НачисленоСНачалаГодаНСПЗ
+
+
+ ru
+ Начислено с начала года НС и ПЗ
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ ОплаченоСНачалаГодаНСПЗ
+
+
+ ru
+ Оплачено с начала года НС и ПЗ
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
+
+
+ НСПЗИтого
+
+
+ ru
+ НС и ПЗ итого за месяц
+
+
+
+
+ xs:decimal
+
+ 0
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+
diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form.xml b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form.xml
index 93fa113..2cf432c 100644
--- a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form.xml
+++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form.xml
@@ -230,35 +230,11 @@
-
- Объект.ДанныеРасчетаЗП.ИНН
- EnterOnInput
- true
- true
-
-
-
-
- Объект.ДанныеРасчетаЗП.СНИЛС
- EnterOnInput
- true
- true
-
-
-
-
- Объект.ДанныеРасчетаЗП.Адрес
- EnterOnInput
- true
- true
-
-
-
-
+
ru
@@ -423,7 +399,6 @@
-
Объект.ДанныеСтраховыхВзносов.LineNumber
@@ -480,7 +455,74 @@
-
+
+
+
+
+
+
+ ru
+ Сотрудники
+
+
+
+
+
+ Объект.Сотрудники
+
+
+
+
+
+
+ Объект.Сотрудники.LineNumber
+
+
+
+
+ Объект.Сотрудники.ФИО
+ EnterOnInput
+ true
+
+
+
+
+ Объект.Сотрудники.ИНН
+ EnterOnInput
+ true
+
+
+
+
+ Объект.Сотрудники.СНИЛС
+ EnterOnInput
+ true
+
+
+
+
+ Объект.Сотрудники.ЛицевойСчетВБанке
+ EnterOnInput
+ true
+
+
+
+
+ Объект.Сотрудники.ВидЗанятости
+ EnterOnInput
+ true
+
+
+
+
+ Объект.Сотрудники.АдресРегистрации
+ EnterOnInput
+ true
+
+
+
+
+
diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
index c2032b5..54b7fb0 100644
--- a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
+++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl
@@ -2,7 +2,6 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
- ИнициализироватьТаблицы();
КонецПроцедуры
#КонецОбласти
@@ -25,11 +24,9 @@
Сообщить("Выберите файл!");
Возврат;
КонецЕсли;
-
Состояние("Инициализация загрузки...", 0);
Прогресс = 0;
СтатусЗагрузки = "Подготовка...";
-
ПрочитатьExcelНаКлиенте();
КонецПроцедуры
@@ -47,11 +44,6 @@
#Область ЧтениеExcel_Домен
-// ============================================================================
-// ДОМЕН: Чтение Excel
-// Ответственность: открытие файла, поиск листов, чтение ячеек
-// ============================================================================
-
&НаКлиенте
Функция ОткрытьФайлExcel(ПутьКФайлу)
Попытка
@@ -83,14 +75,10 @@
Функция ПрочитатьЯчейкуЧисло(Лист, Строка, Колонка, КонтекстОшибки)
Попытка
Значение = Лист.Cells(Строка, Колонка).Value;
- Если Значение = Неопределено ИЛИ Значение = "" Тогда
- Возврат 0;
- КонецЕсли;
+ Если Значение = Неопределено ИЛИ Значение = "" Тогда Возврат 0; КонецЕсли;
Возврат Число(Значение);
Исключение
- Сообщить("Ошибка чтения числа: " + КонтекстОшибки
- + " | строка " + Строка + " колонка " + Колонка
- + " | значение: """ + Значение + """ | " + ОписаниеОшибки());
+ Сообщить("Ошибка чтения числа: " + КонтекстОшибки + " | строка " + Строка + " колонка " + Колонка + " | " + ОписаниеОшибки());
Возврат 0;
КонецПопытки;
КонецФункции
@@ -111,93 +99,23 @@
Если Формула = Неопределено Тогда Возврат ""; КонецЕсли;
ТекстФормулы = СокрЛП("" + Формула);
Если Не СтрНачинаетсяС(ТекстФормулы, "='") Тогда Возврат ""; КонецЕсли;
-
ПозицияНачала = 3;
ПозицияКонца = СтрНайти(ТекстФормулы, "'!", , , ПозицияНачала);
Если ПозицияКонца = 0 Тогда Возврат ""; КонецЕсли;
-
Возврат Сред(ТекстФормулы, ПозицияНачала, ПозицияКонца - ПозицияНачала);
КонецФункции
&НаКлиенте
Функция НайтиЛист(Книга, ИмяЛиста)
Для Каждого Лист Из Книга.Sheets Цикл
- Если ВРег(Лист.Name) = ВРег(ИмяЛиста) Тогда
- Возврат Лист;
- КонецЕсли;
+ Если ВРег(Лист.Name) = ВРег(ИмяЛиста) Тогда Возврат Лист; КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
#КонецОбласти
-#Область МаппингЗаголовков_Домен
-
-// ============================================================================
-// ДОМЕН: Маппинг заголовков
-// Ответственность: сопоставление имён колонок Excel с полями данных
-// ============================================================================
-
-&НаКлиенте
-Функция СоздатьИндексЗаголовков(Лист, НомерСтрокиЗаголовков)
- Индекс = Новый Соответствие;
- ПоследняяКолонка = 1;
- Для Колонка = 1 По 100 Цикл
- Значение = Лист.Cells(НомерСтрокиЗаголовков, Колонка).Value;
- Если Значение <> Неопределено И Значение <> "" Тогда
- ПоследняяКолонка = Колонка;
- КонецЕсли;
- КонецЦикла;
-
- Для Колонка = 1 По ПоследняяКолонка Цикл
- Имя = СокрЛП(НРег(Лист.Cells(НомерСтрокиЗаголовков, Колонка).Value));
- Если ЗначениеЗаполнено(Имя) Тогда
- Индекс.Вставить(Имя, Колонка);
- КонецЕсли;
- КонецЦикла;
- Возврат Индекс;
-КонецФункции
-
-&НаКлиенте
-Функция НайтиКолонкуПоЗаголовку(ИндексЗаголовков, КлючевоеСлово)
- Ключ = НРег(КлючевоеСлово);
- Для Каждого Эл Из ИндексЗаголовков Цикл
- Если СтрНайти(Эл.Ключ, Ключ) > 0 Тогда
- Возврат Эл.Значение;
- КонецЕсли;
- КонецЦикла;
- Возврат -1;
-КонецФункции
-
-&НаКлиенте
-Функция НайтиСтрокуЗаголовков(ЛистРасчет)
- КлючевыеСлова = Новый Массив;
- КлючевыеСлова.Добавить("сотрудник");
- КлючевыеСлова.Добавить("должность");
- КлючевыеСлова.Добавить("счет");
- КлючевыеСлова.Добавить("вид занятости");
-
- Для Ном = 1 По Мин(30, ЛистРасчет.Rows.Count) Цикл
- КоличествоСовпадений = 0;
- Для Каждого КлючевоеСлово Из КлючевыеСлова Цикл
- Для Колонка = 1 По Мин(10, ЛистРасчет.Columns.Count) Цикл
- Значение = ЛистРасчет.Cells(Ном, Колонка).Value;
- Если Значение <> Неопределено Тогда
- Если СтрНайти(НРег(СокрЛП("" + Значение)), КлючевоеСлово) > 0 Тогда
- КоличествоСовпадений = КоличествоСовпадений + 1;
- Прервать;
- КонецЕсли;
- КонецЕсли;
- КонецЦикла;
- КонецЦикла;
-
- Если КоличествоСовпадений >= 2 Тогда
- Возврат Ном;
- КонецЕсли;
- КонецЦикла;
-
- Возврат 15;
-КонецФункции
+#Область ЧтениеДанныхСотрудника_Домен
&НаКлиенте
Функция ПрочитатьДанныеИзЛистаСотрудника(ЛистСотрудника, ФИО)
@@ -206,256 +124,182 @@
Строка.Вставить("Должность", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 3));
Строка.Вставить("СчетБК", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 4));
Строка.Вставить("ВидЗанятости", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 5, 1));
-
БазоваяСтрока = 12;
Смещение = Объект.МесяцЗагрузки;
Если Не ЗначениеЗаполнено(Смещение) Тогда Смещение = 1; КонецЕсли;
- СтрокаДанных = БазоваяСтрока + Смещение;
-
- Строка.Вставить("Оклад", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 3, ФИО + " Оклад"));
- Строка.Вставить("КоличествоСтавок", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 4, ФИО + " Ставки"));
- Строка.Вставить("ОтработаноДней", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 5, ФИО + " Отработано"));
- Строка.Вставить("ИтогоНачислено", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 10, ФИО + " Итого начислено"));
+ Стр = БазоваяСтрока + Смещение;
+ Строка.Вставить("Оклад", ПрочитатьЯчейкуЧисло(ЛистСотрудника, Стр, 3, ФИО + " Оклад"));
+ Строка.Вставить("КоличествоСтавок", ПрочитатьЯчейкуЧисло(ЛистСотрудника, Стр, 4, ФИО + " Ставки"));
+ Строка.Вставить("ОтработаноДней", ПрочитатьЯчейкуЧисло(ЛистСотрудника, Стр, 5, ФИО + " Отработано"));
+ Строка.Вставить("ИтогоНачислено", ПрочитатьЯчейкуЧисло(ЛистСотрудника, Стр, 10, ФИО + " Итого начислено"));
Строка.Вставить("НДФЛ", 0);
Строка.Вставить("ИтогоУдержано", 0);
Строка.Вставить("ВсегоНаРуки", 0);
-
Возврат Строка;
КонецФункции
+// Читает все расчётные поля из листа "Расчет" для строки сотрудника.
+// Колонки РАСЧЕТ: 9-38 расчёты, 39 итого, 40 НДФЛ, 41-52 удержания, 53 итого удержано, 55 на руки
&НаКлиенте
-Функция НайтиСтрокуПервогоСотрудника(ЛистРасчет, НомерСтрокиЗаголовков)
- Для Ном = НомерСтрокиЗаголовков + 1 По ЛистРасчет.Rows.Count Цикл
- Значение = ЛистРасчет.Cells(Ном, 1).Value;
- Если ЗначениеЗаполнено(Значение)
- И Не СтрНачинаетсяС(ВРег(СокрЛП("" + Значение)), "ИТОГО") Тогда
- Возврат Ном;
- КонецЕсли;
- КонецЦикла;
- Возврат -1;
-КонецФункции
-
-&НаКлиенте
-Функция ИзвлечьЗначениеИзТекста(Текст, Префикс)
- Если Не ЗначениеЗаполнено(Текст) Тогда Возврат ""; КонецЕсли;
- Позиция = СтрНайти(ВРег(Текст), ВРег(Префикс));
- Если Позиция = 0 Тогда Возврат СокрЛП(Текст); КонецЕсли;
- Возврат СокрЛП(Сред(Текст, Позиция + СтрДлина(Префикс)));
-КонецФункции
-
-#КонецОбласти
-
-#Область ЧтениеДанныхСотрудника_Домен
-
-// ============================================================================
-// ДОМЕН: Чтение данных сотрудника
-// Ответственность: извлечение данных из строки листа "Расчет" и листов сотрудников
-// ============================================================================
-
-&НаКлиенте
-Функция ПрочитатьСтрокуРасчета(ЛистРасчет, Ном, ФИО, ИндексЗаголовков)
+Функция ПрочитатьСтрокуРасчета(ЛистРасчет, Ном, ФИО)
Строка = Новый Структура;
Строка.Вставить("ФИО", ФИО);
-
- КолДолжность = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "должность");
- КолСчетБК = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "счет");
- КолВидЗанятости = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "вид занятости");
- КолОклад = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "оклад");
- КолСтавки = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "ставок");
- КолОтработано = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "отработано");
- КолИтогоНачислено = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "итого начислено");
- КолНДФЛ = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "ндфл");
- КолИтогоУдержано = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "итого удержано");
- КолВсегоНаРуки = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "всего на руки");
-
- Строка.Вставить("Должность", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, КолДолжность));
- Строка.Вставить("СчетБК", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, КолСчетБК));
- Строка.Вставить("ВидЗанятости", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, КолВидЗанятости));
- Строка.Вставить("Оклад", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолОклад, ФИО + " Оклад"));
- Строка.Вставить("КоличествоСтавок", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолСтавки, ФИО + " Ставки"));
- Строка.Вставить("ОтработаноДней", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолОтработано, ФИО + " Отработано"));
- Строка.Вставить("ИтогоНачислено", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолИтогоНачислено, ФИО + " Итого начислено"));
- Строка.Вставить("НДФЛ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолНДФЛ, ФИО + " НДФЛ"));
- Строка.Вставить("ИтогоУдержано", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолИтогоУдержано, ФИО + " Итого удержано"));
- Строка.Вставить("ВсегоНаРуки", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолВсегоНаРуки, ФИО + " Всего на руки"));
-
+ Строка.Вставить("Должность", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 2));
+ Строка.Вставить("СчетБК", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 3));
+ Строка.Вставить("ВидЗанятости", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 4));
+ Строка.Вставить("Оклад", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 8, ФИО + " Оклад"));
+ Строка.Вставить("КоличествоСтавок", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 7, ФИО + " Ставки"));
+ Строка.Вставить("ОтработаноДней", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 6, ФИО + " Отработано"));
+ // Расчетные поля (col 9-38)
+ Строка.Вставить("ЧасыДежурства", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 9, ФИО + " Часы дежурства"));
+ Строка.Вставить("ЧасыНочные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 10, ФИО + " Часы ночные"));
+ Строка.Вставить("ЧасыПраздничные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 11, ФИО + " Часы праздничные"));
+ Строка.Вставить("РабочиеЧасыПоТабелю", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 12, ФИО + " Рабочие часы"));
+ Строка.Вставить("ИзРасчетаМесячногоОкладаДни", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 13, ФИО + " Расчет оклада дни"));
+ Строка.Вставить("ДоплатаСовместительство", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 14, ФИО + " Совместительство"));
+ Строка.Вставить("ДоплатаСовмещениеПроцент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 15, ФИО + " Совмещение %"));
+ Строка.Вставить("ДоплатаИнтенсивность", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 16, ФИО + " Интенсивность"));
+ Строка.Вставить("ИзРасчетаМесячногоОкладаЧасы", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 17, ФИО + " Расчет оклада часы"));
+ Строка.Вставить("ДоплатаНочные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 18, ФИО + " Доплата ночные"));
+ Строка.Вставить("ДоплатаПраздничные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 19, ФИО + " Доплата праздничные"));
+ Строка.Вставить("ЗаСтаж", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 20, ФИО + " За стаж"));
+ Строка.Вставить("НадбавкаЗаКатегорию", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 21, ФИО + " Надбавка категория"));
+ Строка.Вставить("НадбавкаЗаВредность", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 22, ФИО + " Надбавка вредность"));
+ Строка.Вставить("ПовышающийКоэффициент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 23, ФИО + " Повыш. коэфф."));
+ Строка.Вставить("СтимулирующиеВыплаты", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 24, ФИО + " Стимулирующие"));
+ Строка.Вставить("СтимулирующаяНадбавка", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 25, ФИО + " Стимул. надбавка"));
+ Строка.Вставить("РайонныйКоэффициент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 26, ФИО + " Районный К"));
+ Строка.Вставить("ВыплатыПоУказу597", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 27, ФИО + " Указ 597"));
+ Строка.Вставить("ПремияРазовая", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 28, ФИО + " Премия разовая"));
+ Строка.Вставить("БольничныйЛистЗаСчетПредприятия", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 29, ФИО + " Больничный"));
+ Строка.Вставить("ДоплатаПрофактиву", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 30, ФИО + " Профактив"));
+ Строка.Вставить("ПусковыеОбсервация", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 31, ФИО + " Пусковые"));
+ Строка.Вставить("Отпуск", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 32, ФИО + " Отпуск"));
+ Строка.Вставить("КомпенсацияЗаОтпуск", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 33, ФИО + " Компенсация отпуск"));
+ Строка.Вставить("ПрочиеКомандировочныйУчебныйОтпуск", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 34, ФИО + " Прочие отпуска"));
+ Строка.Вставить("ВыходноеПособие", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 35, ФИО + " Выходное пособие"));
+ Строка.Вставить("ПоУходуЗаРебенкомИнвалидом", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 36, ФИО + " Уход ребенок-инвалид"));
+ Строка.Вставить("ДоплатаДоМРОТ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 37, ФИО + " Доплата МРОТ"));
+ Строка.Вставить("Родовые", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 38, ФИО + " Родовые"));
+ // Итоги
+ Строка.Вставить("ИтогоНачислено", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 39, ФИО + " Итого начислено"));
+ Строка.Вставить("НДФЛ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 40, ФИО + " НДФЛ"));
+ Строка.Вставить("ПрофВзнос", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 41, ФИО + " Проф. взнос"));
+ Строка.Вставить("ИсполнительныеДокументы", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 42, ФИО + " Исп. документы"));
+ Строка.Вставить("Аванс", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 43, ФИО + " Аванс"));
+ Строка.Вставить("ИтогоУдержано", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 53, ФИО + " Итого удержано"));
+ Строка.Вставить("ВсегоНаРуки", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 55, ФИО + " Всего на руки"));
Возврат Строка;
КонецФункции
&НаКлиенте
-Функция ПрочитатьСтрокуВзносов(ЛистРасчет, Ном, ФИО, ИндексЗаголовков)
- КолДТ6 = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "дт 6");
- КолДТ4 = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "дт 4");
- КолПФ = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "пф страховая");
- КолФСС = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "фсс");
- КолНСПЗ = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "нс и пз");
- КолСВИтого = НайтиКолонкуПоЗаголовку(ИндексЗаголовков, "св итого");
-
+Функция ПрочитатьСтрокуВзносовИзРасчета(ЛистРасчет, Ном, ФИО)
+ КолДТ6 = 58; КолДТ4 = 59; КолПФ = 60; КолФСС = 61; КолНСПЗ = 62; КолСВИтого = 63;
СВ = ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолСВИтого, ФИО + " СВ итого");
Если СВ <= 0 Тогда Возврат Неопределено; КонецЕсли;
-
- СтрВзносов = Новый Структура;
- СтрВзносов.Вставить("ФИО", ФИО);
- СтрВзносов.Вставить("ДТ6Процент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолДТ6, ФИО + " ДТ 6%"));
- СтрВзносов.Вставить("ДТ4Процент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолДТ4, ФИО + " ДТ 4%"));
- СтрВзносов.Вставить("ПФСтраховая", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолПФ, ФИО + " ПФ"));
- СтрВзносов.Вставить("ФССФОМС", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолФСС, ФИО + " ФСС/ФОМС"));
- СтрВзносов.Вставить("НСПЗ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолНСПЗ, ФИО + " НС и ПЗ"));
- СтрВзносов.Вставить("Итого", СВ);
-
- Возврат СтрВзносов;
+ Стр = Новый Структура;
+ Стр.Вставить("ФИО", ФИО);
+ Стр.Вставить("ДТ6Процент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолДТ6, ФИО + " ДТ 6%"));
+ Стр.Вставить("ДТ4Процент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолДТ4, ФИО + " ДТ 4%"));
+ Стр.Вставить("ПФСтраховая", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолПФ, ФИО + " ПФ"));
+ Стр.Вставить("ФССФОМС", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолФСС, ФИО + " ФСС/ФОМС"));
+ Стр.Вставить("НСПЗ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, КолНСПЗ, ФИО + " НС и ПЗ"));
+ Стр.Вставить("Итого", СВ);
+ Возврат Стр;
КонецФункции
-&НаКлиенте
-Функция ПрочитатьЛичныеДанные(Книга, ФИО)
- ЛичныеДанные = Новый Структура("ИНН, СНИЛС, Паспорт, Адрес", "", "", "", "");
-
- ЛистСотрудника = НайтиЛист(Книга, ФИО);
- Если ЛистСотрудника = Неопределено Тогда
- Возврат ЛичныеДанные;
- КонецЕсли;
-
- ЛичныеДанные.ИНН = ИзвлечьЗначениеИзТекста(
- ПрочитатьЯчейкуСтрока(ЛистСотрудника, 0, 10), "ИНН");
- ЛичныеДанные.СНИЛС = ИзвлечьЗначениеИзТекста(
- ПрочитатьЯчейкуСтрока(ЛистСотрудника, 1, 10), "СНИЛС");
- ЛичныеДанные.Паспорт = ИзвлечьЗначениеИзТекста(
- ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 10), "Паспорт");
- ЛичныеДанные.Адрес = ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 10);
-
- Возврат ЛичныеДанные;
-КонецФункции
-
-// Читает данные НДФЛ и страховых взносов из блока внизу листа сотрудника.
-// Блок НДФЛ/СВ начинается с строки 31 ("Расчет НДФЛ и страховых взносов (СВ)").
-// Заголовки: строки 33-35. Данные по месяцам: строки 36-47 (Январь-Декабрь). Итого: строка 48.
-// Месяц выбирается по Объект.МесяцЗагрузки: строка = 35 + Месяц.
+// Читает данные НДФЛ и СВ из блока внизу листа сотрудника.
+// Заголовки блока: строки 33-35. Данные: строки 36-47 (Январь-Декабрь). Итого: строка 48.
&НаКлиенте
Функция ПрочитатьНДФЛСоЛистаСотрудника(ЛистСотрудника, ФИО)
- Если ЛистСотрудника = Неопределено Тогда
- Возврат Неопределено;
- КонецЕсли;
-
- // Проверяем наличие блока НДФЛ: ячейка A31 содержит "Расчет НДФЛ"
- ЗаголовокБлока = ПрочитатьЯчейкуСтрока(ЛистСотрудника, 31, 1);
- Если СтрНайти(НРег(ЗаголовокБлока), "ндфл") = 0
- И СтрНайти(НРег(ЗаголовокБлока), "расчет") = 0 Тогда
- // Проверяем строку 33 (альтернативное расположение)
- ЗаголовокБлока33 = ПрочитатьЯчейкуСтрока(ЛистСотрудника, 33, 1);
- Если СтрНайти(НРег(ЗаголовокБлока33), "период") = 0 Тогда
- Возврат Неопределено;
+ Если ЛистСотрудника = Неопределено Тогда Возврат Неопределено; КонецЕсли;
+ // Проверяем наличие блока: строка 31 содержит "Расчет НДФЛ"
+ ЕстьБлок = Ложь;
+ Для ПроверяемаяСтрока = 30 По 32 Цикл
+ Текст = НРег(ПрочитатьЯчейкуСтрока(ЛистСотрудника, ПроверяемаяСтрока, 1));
+ Если СтрНайти(Текст, "ндфл") > 0 ИЛИ СтрНайти(Текст, "взнос") > 0 Тогда
+ ЕстьБлок = Истина;
+ Прервать;
КонецЕсли;
+ КонецЦикла;
+ Если Не ЕстьБлок Тогда
+ // Fallback: проверяем строку 36 — там должен быть "Январь"
+ ТекстЯнв = НРег(ПрочитатьЯчейкуСтрока(ЛистСотрудника, 36, 1));
+ Если СтрНайти(ТекстЯнв, "январь") = 0 Тогда Возврат Неопределено; КонецЕсли;
+ ЕстьБлок = Истина;
КонецЕсли;
+ Если Не ЕстьБлок Тогда Возврат Неопределено; КонецЕсли;
- // Определяем строку данных для выбранного месяца: 35 + МесяцЗагрузки
+ // Определяем строку данных для выбранного месяца
Смещение = Объект.МесяцЗагрузки;
Если Не ЗначениеЗаполнено(Смещение) Тогда Смещение = 1; КонецЕсли;
- СтрокаДанных = 35 + Смещение; // Строка 36 = Январь, 37 = Февраль, ...
+ СтрокаДанных = 35 + Смещение;
- // Названия месяцев для проверки
+ // Проверяем что в строке название месяца
МассивМесяцев = Новый Массив;
- МассивМесяцев.Добавить("январь");
- МассивМесяцев.Добавить("февраль");
- МассивМесяцев.Добавить("март");
- МассивМесяцев.Добавить("апрель");
- МассивМесяцев.Добавить("май");
- МассивМесяцев.Добавить("июнь");
- МассивМесяцев.Добавить("июль");
- МассивМесяцев.Добавить("август");
- МассивМесяцев.Добавить("сентябрь");
- МассивМесяцев.Добавить("октябрь");
- МассивМесяцев.Добавить("ноябрь");
- МассивМесяцев.Добавить("декабрь");
+ МассивМесяцев.Добавить("январь"); МассивМесяцев.Добавить("февраль");
+ МассивМесяцев.Добавить("март"); МассивМесяцев.Добавить("апрель");
+ МассивМесяцев.Добавить("май"); МассивМесяцев.Добавить("июнь");
+ МассивМесяцев.Добавить("июль"); МассивМесяцев.Добавить("август");
+ МассивМесяцев.Добавить("сентябрь"); МассивМесяцев.Добавить("октябрь");
+ МассивМесяцев.Добавить("ноябрь"); МассивМесяцев.Добавить("декабрь");
- // Проверяем что в найденной строке действительно данные за месяц
ТекстМесяца = НРег(ПрочитатьЯчейкуСтрока(ЛистСотрудника, СтрокаДанных, 1));
Если МассивМесяцев.Найти(ТекстМесяца) = Неопределено Тогда
- // Попробуем найти строку по названию месяца
+ // Ищем строку с нужным месяцем
Для Строка = 36 По 47 Цикл
- Текст = НРег(ПрочитатьЯчейкуСтрока(ЛистСотрудника, Строка, 1));
- Если МассивМесяцев.Найти(Текст) <> Неопределено Тогда
+ Если (Строка - 35) = Смещение Тогда
СтрокаДанных = Строка;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
+ // Колонки блока НДФЛ/СВ (по структуре xlsm):
+ // 4: Сумма валового дохода за месяц
+ // 6: Сумма валового дохода с начала года
+ // 8: Скидка для НДФЛ за месяц
+ // 9: Скидка для НДФЛ за год
+ // 10: Скидка для СВ за месяц
+ // 12: Вычет на работника за месяц
+ // 13: Вычет на иждивенцев за месяц
+ // 14: Всего вычетов за год
+ // 15: Облагаемый доход за год
+ // 16: НДФЛ начисленный за год
+ // 18: Итого НДФЛ за месяц
+ // 23: Налоговая база по СВ за месяц
+ // 37: СВ итого за месяц
+
НДФЛ = Новый Структура;
НДФЛ.Вставить("ФИО", ФИО);
НДФЛ.Вставить("МесяцРасчета", ПрочитатьЯчейкуСтрока(ЛистСотрудника, СтрокаДанных, 1));
-
- // Колонки блока НДФЛ/СВ на листе сотрудника:
- // col 4: Сумма валового дохода (за месяц)
- // col 6: Сумма валового дохода с начала года
- // col 7: Сумма дохода (за месяц)
- // col 8: Скидка для НДФЛ (за месяц)
- // col 9: Скидка для НДФЛ (за год)
- // col 10: Скидка для СВ (за месяц)
- // col 11: Скидка для СВ (за год)
- // col 12: Вычет на работника (за месяц)
- // col 13: Вычет на иждивенцев (за месяц)
- // col 14: Всего вычетов (за год)
- // col 15: Облагаемый доход (за год)
- // col 16: Начисленный НДФЛ (за год)
- // col 17: Удержанный НДФЛ (за год)
- // col 18: Итого НДФЛ (за месяц)
- // col 19: Выплаты по больничному (за год)
- // col 20: Налоговая база по СВ (за год)
- // col 23: Налоговая база по СВ (за месяц)
- // col 24: Страховая часть ПФ
- // col 25: Накопительная часть ПФ
- // col 31: ФСС начислено с начала года
- // col 33: ФСС Итого (за месяц)
- // col 34: НС и ПЗ начислено с начала года
- // col 36: НС и ПЗ Итого (за месяц)
- // col 37: Страховые взносы Итого (за месяц)
-
- НДФЛ.Вставить("СуммаВаловогоДохода",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 4, ФИО + " Сумма валового дохода"));
- НДФЛ.Вставить("СуммаВаловогоДоходаСНачалаГода",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 6, ФИО + " Доход с начала года"));
- НДФЛ.Вставить("СкидкаДляНДФЛЗаМесяц",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 8, ФИО + " Скидка НДФЛ месяц"));
- НДФЛ.Вставить("СкидкаДляНДФЛЗаГод",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 9, ФИО + " Скидка НДФЛ год"));
- НДФЛ.Вставить("СкидкаДляСВЗаМесяц",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 10, ФИО + " Скидка СВ месяц"));
- НДФЛ.Вставить("ВычетНаРаботникаЗаМесяц",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 12, ФИО + " Вычет работника"));
- НДФЛ.Вставить("ВычетНаРаботникаЗаГод",
- 0); // не отображается отдельно, входит в ВсегоВычетовЗаМесяц
- НДФЛ.Вставить("ВычетНаИждивенцевЗаМесяц",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 13, ФИО + " Вычет иждивенцев"));
- НДФЛ.Вставить("ВсегоВычетовЗаМесяц",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 14, ФИО + " Всего вычетов"));
- НДФЛ.Вставить("ОблагаемыйДоходЗаМесяц",
- 0); // за месяц не выделяется отдельно
- НДФЛ.Вставить("ОблагаемыйДоходЗаГод",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 15, ФИО + " Облагаемый доход"));
- НДФЛ.Вставить("НачисленныйНДФЛЗаГод",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 16, ФИО + " НДФЛ начисленный"));
- НДФЛ.Вставить("ИтогоНДФЛЗаМесяц",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 18, ФИО + " Итого НДФЛ"));
- НДФЛ.Вставить("НалоговаяБазаПоСВЗаМесяц",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 23, ФИО + " База СВ месяц"));
- НДФЛ.Вставить("ИтогоФСС",
- ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 37, ФИО + " Итого СВ"));
-
+ НДФЛ.Вставить("СуммаВаловогоДохода", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 4, ФИО + " Сумма валового дохода"));
+ НДФЛ.Вставить("СуммаВаловогоДоходаСНачалаГода", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 6, ФИО + " Доход с начала года"));
+ НДФЛ.Вставить("СкидкаДляНДФЛЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 8, ФИО + " Скидка НДФЛ месяц"));
+ НДФЛ.Вставить("СкидкаДляНДФЛЗаГод", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 9, ФИО + " Скидка НДФЛ год"));
+ НДФЛ.Вставить("СкидкаДляСВЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 10, ФИО + " Скидка СВ месяц"));
+ НДФЛ.Вставить("ВычетНаРаботникаЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 12, ФИО + " Вычет работника"));
+ НДФЛ.Вставить("ВычетНаРаботникаЗаГод", 0);
+ НДФЛ.Вставить("ВычетНаИждивенцевЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 13, ФИО + " Вычет иждивенцев"));
+ НДФЛ.Вставить("ВсегоВычетовЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 14, ФИО + " Всего вычетов"));
+ НДФЛ.Вставить("ОблагаемыйДоходЗаМесяц", 0);
+ НДФЛ.Вставить("ОблагаемыйДоходЗаГод", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 15, ФИО + " Облагаемый доход"));
+ НДФЛ.Вставить("НачисленныйНДФЛЗаГод", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 16, ФИО + " НДФЛ начисленный"));
+ НДФЛ.Вставить("ИтогоНДФЛЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 18, ФИО + " Итого НДФЛ"));
+ НДФЛ.Вставить("НалоговаяБазаПоСВЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 23, ФИО + " База СВ месяц"));
+ НДФЛ.Вставить("ИтогоФСС", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаДанных, 37, ФИО + " Итого СВ"));
Возврат НДФЛ;
КонецФункции
&НаКлиенте
Функция ПрочитатьДанныеСотрудника(ЛистСотрудника)
Данные = Новый Структура;
- Данные.Вставить("ФИО", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 3)); // C3: ФИО
- Данные.Вставить("ИНН", ИзвлечьЗначениеИзТекста(
- ПрочитатьЯчейкуСтрока(ЛистСотрудника, 0, 10), "ИНН"));
- Данные.Вставить("СНИЛС", ИзвлечьЗначениеИзТекста(
- ПрочитатьЯчейкуСтрока(ЛистСотрудника, 1, 10), "СНИЛС"));
- Данные.Вставить("ЛицевойСчетВБанке", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 4)); // D4: Номер
- Данные.Вставить("ВидЗанятости", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 5, 1)); // A6
- Данные.Вставить("АдресРегистрации", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 10)); // K4
-
+ Данные.Вставить("ФИО", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 3));
+ Данные.Вставить("ИНН", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 0, 10));
+ Данные.Вставить("СНИЛС", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 1, 10));
+ Данные.Вставить("ЛицевойСчетВБанке", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 4));
+ Данные.Вставить("ВидЗанятости", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 5, 1));
+ Данные.Вставить("АдресРегистрации", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 10));
Возврат Данные;
КонецФункции
@@ -463,83 +307,54 @@
#Область ОсновнаяПроцедура_Домен
-// ============================================================================
-// ДОМЕН: Оркестрация загрузки
-// ============================================================================
-
&НаКлиенте
Процедура ПрочитатьExcelНаКлиенте()
-
СтатусЗагрузки = "Копирование файла...";
Состояние("Копирование файла...", 5);
-
ВременныйФайл = КаталогВременныхФайлов() + "temp_data.xls";
КопироватьФайл(Объект.ПутьКФайлу, ВременныйФайл);
-
СтатусЗагрузки = "Открытие Excel...";
- Состояние("Открытие Excel...", 10);
-
КонтекстExcel = ОткрытьФайлExcel(ВременныйФайл);
- Если КонтекстExcel = Неопределено Тогда
- УдалитьФайлы(ВременныйФайл);
- Возврат;
- КонецЕсли;
-
- СтатусЗагрузки = "Поиск листа 'Расчет'...";
- Состояние("Поиск листа 'Расчет'...", 15);
-
+ Если КонтекстExcel = Неопределено Тогда УдалитьФайлы(ВременныйФайл); Возврат; КонецЕсли;
+ СтатусЗагрузки = "Поиск листа Расчет...";
ЛистРасчет = НайтиЛист(КонтекстExcel.Книга, "Расчет");
Если ЛистРасчет = Неопределено Тогда
- Сообщить("Лист 'Расчет' не найден!");
+ Сообщить("Лист Расчет не найден!");
ЗакрытьExcel(КонтекстExcel, ВременныйФайл);
- СтатусЗагрузки = "Ошибка: лист не найден";
Возврат;
КонецЕсли;
-
- СтатусЗагрузки = "Определение месяца...";
- Состояние("Определение месяца...", 20);
-
МесяцЗначение = ЛистРасчет.Cells(4, 1).Value;
Если ЗначениеЗаполнено(МесяцЗначение) Тогда
- Попытка
- Объект.МесяцЗагрузки = Число(МесяцЗначение);
- Исключение
- Сообщить("Не удалось определить месяц: " + МесяцЗначение);
- КонецПопытки;
+ Попытка Объект.МесяцЗагрузки = Число(МесяцЗначение); Исключение КонецПопытки;
КонецЕсли;
+ Ном = 1;
+ // Определяем строку первого сотрудника
+ Для Ном = 1 По 30 Цикл
+ Значение = ЛистРасчет.Cells(Ном, 1).Value;
+ Если Значение <> Неопределено И Значение <> "" Тогда
+ ФИОТест = СокрЛП("" + Значение);
+ Если Не СтрНачинаетсяС(ВРег(ФИОТест), "ИТОГО")
+ И Не СтрНачинаетсяС(ВРег(ФИОТест), "СОТРУДНИК")
+ И СтрДлина(ФИОТест) > 3 Тогда
+ Прервать;
+ КонецЕсли;
+ КонецЕсли;
+ КонецЦикла;
- СтатусЗагрузки = "Анализ заголовков...";
- Состояние("Анализ заголовков...", 22);
-
- НомерСтрокиЗаголовков = НайтиСтрокуЗаголовков(ЛистРасчет);
- ИндексЗаголовков = СоздатьИндексЗаголовков(ЛистРасчет, НомерСтрокиЗаголовков);
-
- СтатусЗагрузки = "Поиск данных...";
- Состояние("Поиск данных...", 25);
-
- Ном = НайтиСтрокуПервогоСотрудника(ЛистРасчет, НомерСтрокиЗаголовков);
- Если Ном = -1 Тогда
- Сообщить("Данные сотрудников не найдены!");
- ЗакрытьExcel(КонтекстExcel, ВременныйФайл);
- Возврат;
- КонецЕсли;
-
- // Основные массивы данных
МассивДанных = Новый Массив;
МассивВзносов = Новый Массив;
МассивНДФЛ = Новый Массив;
МассивСотрудников = Новый Массив;
- СчетчикСотрудников = 0;
-
+ Счетчик = 0;
ПустыхПодряд = 0;
- МаксПустых = 5;
- КоличествоСтрок = ЛистРасчет.Rows.Count;
Пока Истина Цикл
- ФИО = ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 1);
-
+ ФИО = "";
ЛистСотрудника = Неопределено;
+ // Пробуем прочитать ФИО из РАСЧЕТ
+ ФИО = ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 1);
Если Не ЗначениеЗаполнено(ФИО) Тогда
+ // xlsm: ФИО в формуле-ссылке
Формула = ЛистРасчет.Cells(Ном, 1).Formula;
Если ЗначениеЗаполнено(Формула) Тогда
ИмяЛиста = ИзвлечьИмяЛистаИзФормулы(Формула);
@@ -551,128 +366,90 @@
КонецЕсли;
КонецЕсли;
КонецЕсли;
-
Если Не ЗначениеЗаполнено(ФИО) Тогда
ПустыхПодряд = ПустыхПодряд + 1;
- Если ПустыхПодряд >= МаксПустых Тогда Прервать; КонецЕсли;
- Ном = Ном + 1;
- Продолжить;
+ Если ПустыхПодряд >= 5 Тогда Прервать; КонецЕсли;
+ Ном = Ном + 1; Продолжить;
КонецЕсли;
-
ПустыхПодряд = 0;
- Если СтрНачинаетсяС(ВРег(ФИО), "ИТОГО") Тогда Прервать; КонецЕсли;
+ Если СтрНачинаетсяС(ВРег(СокрЛП(ФИО)), "ИТОГО") Тогда Прервать; КонецЕсли;
- // Уникальный идентификатор сотрудника
- СчетчикСотрудников = СчетчикСотрудников + 1;
- ИДСотрудника = СчетчикСотрудников;
+ Счетчик = Счетчик + 1;
+ Состояние("Расчет ЗП: " + ФИО, 25 + 60 * Счетчик / 100);
- ПрогрессЗаписи = 25 + 65 * (Ном - 1) / Макс(КоличествоСтрок, 1);
- Состояние("Расчет ЗП: " + ФИО, ПрогрессЗаписи);
+ // Чтение данных ЗП (все расчётные колонки из РАСЧЕТ)
+ Строка = ПрочитатьСтрокуРасчета(ЛистРасчет, Ном, ФИО);
+ Строка.Вставить("ИдентификаторСотрудника", Счетчик);
- // Чтение данных ЗП
+ // Если есть лист сотрудника — обогащаем данными карточки
Если ЛистСотрудника <> Неопределено Тогда
- Строка = ПрочитатьДанныеИзЛистаСотрудника(ЛистСотрудника, ФИО);
- Иначе
- Строка = ПрочитатьСтрокуРасчета(ЛистРасчет, Ном, ФИО, ИндексЗаголовков);
+ ДанныеКарточки = ПрочитатьДанныеСотрудника(ЛистСотрудника);
+ // ФИО и Должность уже из РАСЧЕТ, перезаписываем только карточные
+ Строка.Вставить("ИНН", ДанныеКарточки.ИНН);
+ Строка.Вставить("СНИЛС", ДанныеКарточки.СНИЛС);
+ Строка.Вставить("Адрес", ДанныеКарточки.АдресРегистрации);
КонецЕсли;
- Строка.Вставить("ИдентификаторСотрудника", ИДСотрудника);
-
- // Личные данные (ИНН, СНИЛС, адрес)
- ЛичныеДанные = ПрочитатьЛичныеДанные(КонтекстExcel.Книга, ФИО);
- Для Каждого КлючЗначение Из ЛичныеДанные Цикл
- Если Не Строка.Свойство(КлючЗначение.Ключ) Тогда
- Строка.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение);
- КонецЕсли;
- КонецЦикла;
МассивДанных.Добавить(Строка);
- // Данные сотрудников (скрытая таблица для связи)
+ // Таблица сотрудников
Если ЛистСотрудника <> Неопределено Тогда
ДанныеСотр = ПрочитатьДанныеСотрудника(ЛистСотрудника);
Иначе
- ДанныеСотр = Новый Структура;
- ДанныеСотр.Вставить("ФИО", ФИО);
- ДанныеСотр.Вставить("ИНН", ?(ЛичныеДанные <> Неопределено, ЛичныеДанные.ИНН, ""));
- ДанныеСотр.Вставить("СНИЛС", ?(ЛичныеДанные <> Неопределено, ЛичныеДанные.СНИЛС, ""));
- ДанныеСотр.Вставить("ЛицевойСчетВБанке", "");
- ДанныеСотр.Вставить("ВидЗанятости", "");
- ДанныеСотр.Вставить("АдресРегистрации", "");
+ ДанныеСотр = Новый Структура("ФИО, ИНН, СНИЛС, ЛицевойСчетВБанке, ВидЗанятости, АдресРегистрации",
+ ФИО, "", "", "", "", "");
КонецЕсли;
- ДанныеСотр.Вставить("Идентификатор", ИДСотрудника);
+ ДанныеСотр.Вставить("Идентификатор", Счетчик);
МассивСотрудников.Добавить(ДанныеСотр);
- // Данные НДФЛ из блока внизу листа сотрудника
+ // НДФЛ из блока внизу листа сотрудника
Если ЛистСотрудника <> Неопределено Тогда
ДанныеНДФЛ = ПрочитатьНДФЛСоЛистаСотрудника(ЛистСотрудника, ФИО);
Если ДанныеНДФЛ <> Неопределено Тогда
- ДанныеНДФЛ.Вставить("ИдентификаторСотрудника", ИДСотрудника);
+ ДанныеНДФЛ.Вставить("ИдентификаторСотрудника", Счетчик);
МассивНДФЛ.Добавить(ДанныеНДФЛ);
КонецЕсли;
КонецЕсли;
- // Страховые взносы из листа "Расчет"
- СтрВзносов = ПрочитатьСтрокуВзносов(ЛистРасчет, Ном, ФИО, ИндексЗаголовков);
+ // Страховые взносы из РАСЧЕТ (cols 58-63)
+ СтрВзносов = ПрочитатьСтрокуВзносовИзРасчета(ЛистРасчет, Ном, ФИО);
Если СтрВзносов <> Неопределено Тогда
- СтрВзносов.Вставить("ИдентификаторСотрудника", ИДСотрудника);
+ СтрВзносов.Вставить("ИдентификаторСотрудника", Счетчик);
МассивВзносов.Добавить(СтрВзносов);
КонецЕсли;
Ном = Ном + 1;
+ Если Ном > ЛистРасчет.Rows.Count Тогда Прервать; КонецЕсли;
КонецЦикла;
- СтатусЗагрузки = "Закрытие Excel...";
- Состояние("Закрытие Excel...", 95);
ЗакрытьExcel(КонтекстExcel, ВременныйФайл);
-
- СтатусЗагрузки = "Передача данных на сервер...";
- Состояние("Передача данных на сервер...", 98);
ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников);
-
- Прогресс = 100;
СтатусЗагрузки = "Готово! Загружено: " + МассивДанных.Количество() + " сотрудников";
Сообщить(СтатусЗагрузки);
-
ОбновитьОтображениеДанных();
-
КонецПроцедуры
#КонецОбласти
#Область СерверныеПроцедуры
-// ============================================================================
-// ДОМЕН: Серверная обработка данных
-// ============================================================================
-
-&НаСервере
-Процедура ИнициализироватьТаблицы()
-КонецПроцедуры
-
&НаСервере
Процедура ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников)
- // Таблица расчета ЗП
Объект.ДанныеРасчетаЗП.Очистить();
Для Каждого Эл Из МассивДанных Цикл
Строка = Объект.ДанныеРасчетаЗП.Добавить();
ЗаполнитьЗначенияСвойств(Строка, Эл);
КонецЦикла;
-
- // Таблица страховых взносов
Объект.ДанныеСтраховыхВзносов.Очистить();
Для Каждого Эл Из МассивВзносов Цикл
Строка = Объект.ДанныеСтраховыхВзносов.Добавить();
ЗаполнитьЗначенияСвойств(Строка, Эл);
КонецЦикла;
-
- // Таблица НДФЛ
Объект.ДанныеНДФЛ.Очистить();
Для Каждого Эл Из МассивНДФЛ Цикл
Строка = Объект.ДанныеНДФЛ.Добавить();
ЗаполнитьЗначенияСвойств(Строка, Эл);
КонецЦикла;
-
- // Таблица сотрудников (скрытая, для связи между ТЧ)
Объект.Сотрудники.Очистить();
Для Каждого Эл Из МассивСотрудников Цикл
Строка = Объект.Сотрудники.Добавить();
@@ -685,12 +462,6 @@
ГодЗагрузки = ТекущаяДата().Год();
Период = Дата(ГодЗагрузки, Объект.МесяцЗагрузки, 1);
Объект.ЗаписатьДанныеРасчета(Объект.ДанныеРасчетаЗП, Период);
- Если Объект.ДанныеСтраховыхВзносов.Количество() > 0 Тогда
- Объект.ЗаписатьДанныеСтраховыхВзносов(Объект.ДанныеСтраховыхВзносов, Период);
- КонецЕсли;
- Если Объект.ДанныеНДФЛ.Количество() > 0 Тогда
- Объект.ЗаписатьДанныеНДФЛ(Объект.ДанныеНДФЛ, Период);
- КонецЕсли;
КонецПроцедуры
#КонецОбласти