From 75be8ab2b7768eb872f584cef9d8e56907b00dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=80=D0=BE=D1=84=D0=B8-=D0=A1=D0=BE=D1=84=D1=82?= Date: Thu, 9 Jul 2026 07:28:52 +0000 Subject: [PATCH] v3.0.0.18: full rebuild - all calc fields, fix NDFL, employees tab --- ConfigDumpInfo.xml | 103 +- Configuration.xml | 192 +- DataProcessors/ЗагрузкаДанныхИзExcel.xml | 2415 ++++++++++++++++- .../Forms/Форма/Ext/Form.xml | 96 +- .../Forms/Форма/Ext/Form/Module.bsl | 585 ++-- 5 files changed, 2696 insertions(+), 695 deletions(-) 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 - - - - + <v8:item> <v8:lang>ru</v8:lang> @@ -423,7 +399,6 @@ <ContextMenu name="ТаблицаСтраховыеВзносыУправлениеПоискомКонтекстноеМеню" id="102"/> <ExtendedTooltip name="ТаблицаСтраховыеВзносыУправлениеПоискомРасширеннаяПодсказка" id="103"/> </SearchControlAddition> - <ChildItems> <LabelField name="ТаблицаСтраховыеВзносыНомерСтроки" id="200"> <DataPath>Объект.ДанныеСтраховыхВзносов.LineNumber</DataPath> @@ -480,7 +455,74 @@ <ExtendedTooltip name="ТаблицаСтраховыеВзносыИтогоРасширеннаяПодсказка" id="223"/> </InputField> </ChildItems> - </Table> + </Table> + </ChildItems> + </Page> + <Page name="СтраницаСотрудники" id="33"> + <Title> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Сотрудники</v8:content> + </v8:item> + + + + + Объект.Сотрудники + + + + + + + Объект.Сотрудники.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 Тогда - Объект.ЗаписатьДанныеНДФЛ(Объект.ДанныеНДФЛ, Период); - КонецЕсли; КонецПроцедуры #КонецОбласти