From d0ed6625e24734207ecbe9b985fe517a220b4780 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: Mon, 6 Jul 2026 19:45:41 +0000 Subject: [PATCH] =?UTF-8?q?v3.0.0.1:=20Initial=20release=20-=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B0=20=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D0=B8=D0=B7=20Excel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CommonPictures/Логотип.xml | 17 + CommonPictures/Логотип/Ext/Picture.xml | 7 + .../Логотип/Ext/Picture/Picture.zip | Bin 0 -> 37168 bytes Configuration.xml | 93 ++++++ DataProcessors/ЗагрузкаДанныхИзExcel.xml | 110 +++++++ .../Ext/ManagerModule.bsl | 35 +++ .../Ext/ObjectModule.bsl | 276 +++++++++++++++++ .../ЗагрузкаДанныхИзExcel/Forms/Форма.xml | 23 ++ .../Forms/Форма/Ext/Form.xml | 292 ++++++++++++++++++ .../Forms/Форма/Ext/Form/Module.bsl | 213 +++++++++++++ Languages/Русский.xml | 14 + Subsystems/Зарплата.xml | 25 ++ 12 files changed, 1105 insertions(+) create mode 100644 CommonPictures/Логотип.xml create mode 100644 CommonPictures/Логотип/Ext/Picture.xml create mode 100755 CommonPictures/Логотип/Ext/Picture/Picture.zip create mode 100755 Configuration.xml create mode 100755 DataProcessors/ЗагрузкаДанныхИзExcel.xml create mode 100755 DataProcessors/ЗагрузкаДанныхИзExcel/Ext/ManagerModule.bsl create mode 100755 DataProcessors/ЗагрузкаДанныхИзExcel/Ext/ObjectModule.bsl create mode 100644 DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма.xml create mode 100644 DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form.xml create mode 100644 DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl create mode 100644 Languages/Русский.xml create mode 100644 Subsystems/Зарплата.xml diff --git a/CommonPictures/Логотип.xml b/CommonPictures/Логотип.xml new file mode 100644 index 0000000..95ce54a --- /dev/null +++ b/CommonPictures/Логотип.xml @@ -0,0 +1,17 @@ + + + + + Логотип + + + ru + Логотип + + + + true + true + + + diff --git a/CommonPictures/Логотип/Ext/Picture.xml b/CommonPictures/Логотип/Ext/Picture.xml new file mode 100644 index 0000000..37038a2 --- /dev/null +++ b/CommonPictures/Логотип/Ext/Picture.xml @@ -0,0 +1,7 @@ + + + + Picture.zip + false + + diff --git a/CommonPictures/Логотип/Ext/Picture/Picture.zip b/CommonPictures/Логотип/Ext/Picture/Picture.zip new file mode 100755 index 0000000000000000000000000000000000000000..f415bc43990be986079780f332907d829afeb1c9 GIT binary patch literal 37168 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 Z{6E${dPC!w2`~Tv002ovPDHLkV1n$LaKZop literal 0 HcmV?d00001 diff --git a/Configuration.xml b/Configuration.xml new file mode 100755 index 0000000..e4a3d98 --- /dev/null +++ b/Configuration.xml @@ -0,0 +1,93 @@ + + + + + + 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 + + + DefaultRoles + Extended + + + + ЗагрузкаДанныхИзExcel + + + ru + Загрузка данных из Excel + + + Расширение для загрузки данных о заработной плате из Excel + AddOn + Adopted + true + ЗДЭ_ + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + Language.Русский + ООО "Профи-Софт", код партнера 42575-13, г.Байконур. + 3.0.0.1 + Language.Русский + + + ru + Загрузка данных о заработной плате из Excel в 1С ЗГУ + + + + + ru + Обработка для загрузки данных о расчете заработной платы, страховых взносов и НДФЛ из Excel-файлов в конфигурацию "1С:Зарплата и кадры государственного учреждения". Разработка выполнена при участии AI-ассистента MiMo Code. + + + ru© ООО "Профи-Софт", 2026 + + + ru + https://profi-soft.ru + + + TaxiEnableVersion8_2 + + + Русский + Зарплата + ЗагрузкаДанныхИзExcel + Логотип + + + diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel.xml b/DataProcessors/ЗагрузкаДанныхИзExcel.xml new file mode 100755 index 0000000..a7328e9 --- /dev/null +++ b/DataProcessors/ЗагрузкаДанныхИзExcel.xml @@ -0,0 +1,110 @@ + + + + + + a1b2c3d4-e5f6-7890-abcd-ef1234567891 + b1b2c3d4-e5f6-7890-abcd-ef1234567892 + + + c1b2c3d4-e5f6-7890-abcd-ef1234567893 + d1b2c3d4-e5f6-7890-abcd-ef1234567894 + + + + ЗагрузкаДанныхИзExcel + + + ru + Загрузка данных из Excel + + + Обработка для загрузки данных о заработной плате из Excel + true + DataProcessor.ЗагрузкаДанныхИзExcel.Form.Форма + + false + + + + +
Форма
+ + + ПутьКФайлу + + + ru + Путь к файлу + + + + + String + + false + + + + false + + false + false + + + + + МесяцЗагрузки + + + ru + Месяц загрузки + + + + + Number + + false + + + + false + + false + false + + + + + ДанныеРасчетаЗП + + + ru + Данные расчета ЗП + + + + + ValueTable + + + + + + ДанныеСтраховыхВзносов + + + ru + Данные страховых взносов + + + + + ValueTable + + + +
+
+
diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Ext/ManagerModule.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Ext/ManagerModule.bsl new file mode 100755 index 0000000..22b728a --- /dev/null +++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Ext/ManagerModule.bsl @@ -0,0 +1,35 @@ +#Область ПрограммныйИнтерфейс + +// Создание обработки +Функция СоздатьОбработку() Экспорт + + Возврат ДополнительныеОтчетыИОбработки.СоздатьОбъектВнешнейОбработки( + "ЗагрузкаДанныхИзExcel"); + +КонецФункции + +// Получение описания обработки +Функция СведенияОВнешнейОбработке() Экспорт + + ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(); + + ПараметрыРегистрации.Вставить("Вид", ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка()); + ПараметрыРегистрации.Вставить("Назначение", Новый Массив); + ПараметрыРегистрации.Назначение.Добавить("Документ.НачислениеЗарплаты"); + ПараметрыРегистрации.Назначение.Добавить("Документ.КадровыйПеревод"); + + ПараметрыРегистрации.Вставить("Команды", Новый Массив); + + Команда = ДополнительныеОтчетыИОбработки.ДобавитьКоманду( + ПараметрыРегистрации.Команды, + "Загрузить данные из Excel", + "ЗагрузитьДанные", + ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(), + Истина); + Команда.Модификатор = "ФормаОбъекта"; + + Возврат ПараметрыРегистрации; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Ext/ObjectModule.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Ext/ObjectModule.bsl new file mode 100755 index 0000000..54bc48a --- /dev/null +++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Ext/ObjectModule.bsl @@ -0,0 +1,276 @@ +#Область ОписаниеПеременных + +Перем ДанныеФайла; +Перем СоответствиеСотрудников; +Перем СоответствиеСтатейФинансирования; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +// Получение данных из Excel файла +Функция ПолучитьДанныеИзExcel(ПутьКФайлу) Экспорт + + Результат = Новый Структура("ДанныеРасчетаЗП, ДанныеСтраховыхВзносов, Ошибки"); + Результат.ДанныеРасчетаЗП = Новый ТаблицаЗначений; + Результат.ДанныеСтраховыхВзносов = Новый ТаблицаЗначений; + Результат.Ошибки = Новый Массив; + + Попытка + // Создание COM-соединения с Excel + ExcelПриложение = Новый COMОбъект("Excel.Application"); + ExcelПриложение.Visible = Ложь; + ExcelПриложение.DisplayAlerts = Ложь; + + // Открытие файла + РабочаяКнига = ExcelПриложение.Workbooks.Open(ПутьКФайлу); + + // Получение листа "Расчет" + ЛистРасчет = Неопределено; + Для Каждого Лист Из РабочаяКнига.Sheets Цикл + Если ВРег(Лист.Name) = "РАСЧЕТ" Тогда + ЛистРасчет = Лист; + Прервать; + КонецЕсли; + КонецЦикла; + + Если ЛистРасчет = Неопределено Тогда + Результат.Ошибки.Добавить("Лист 'Расчет' не найден в файле"); + Возврат Результат; + КонецЕсли; + + // Определение месяца из ячейки A4 (номер месяца) или строки заголовка + МесяцЗначение = ЛистРасчет.Cells(4, 1).Value; + Если Не ЗначениеЗаполнено(МесяцЗначение) Тогда + Результат.Ошибки.Добавить("Месяц не определен (ячейка A4 пуста)"); + Возврат Результат; + КонецЕсли; + + МесяцЗагрузки = Число(МесяцЗначение); + Если МесяцЗагрузки < 1 Или МесяцЗагрузки > 12 Тогда + Результат.Ошибки.Добавить("Некорректный номер месяца: " + МесяцЗначение); + Возврат Результат; + КонецЕсли; + + // Чтение данных из листа "Расчет" + ПрочитатьДанныеРасчета(ЛистРасчет, Результат); + + // Закрытие Excel + РабочаяКнига.Close(Ложь); + ExcelПриложение.Quit(); + + Исключение + Результат.Ошибки.Добавить("Ошибка чтения файла: " + ОписаниеОшибки()); + КонецПопытки; + + Возврат Результат; + +КонецФункции + +// Сопоставление сотрудника +Функция НайтиСотрудника(ФИО, ТабельныйНомер, Должность, ВидЗанятости) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | Сотрудники.Ссылка КАК Сотрудник + |ИЗ + | Справочник.Сотрудники КАК Сотрудники + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица + | ПО Сотрудники.ФизическоеЛицо = ФизическиеЛица.Ссылка + |ГДЕ + | ФизическиеЛица.ФИО = &ФИО + | И Сотрудники.Код = &ТабельныйНомер"; + + Запрос.УстановитьПараметр("ФИО", ФИО); + Запрос.УстановитьПараметр("ТабельныйНомер", ТабельныйНомер); + + РезультатЗапроса = Запрос.Выполнить(); + + Если РезультатЗапроса.Пустой() Тогда + Возврат Неопределено; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Выборка.Следующий(); + + Возврат Выборка.Сотрудник; + +КонецФункции + +// Запись данных расчета ЗП +Процедура ЗаписатьДанныеРасчета(Данные, Период) Экспорт + + ДокументОбъект = Документы.ПереносДанных.СоздатьДокумент(); + ДокументОбъект.Дата = Период; + ДокументОбъект.Комментарий = "Загрузка расчета ЗП из Excel за " + Формат(Период, "ДФ='ММММ yyyy'"); + + Для Каждого СтрокаДанных Из Данные Цикл + + // Движение по регистру НачисленияУдержанияПоСотрудникам + Движение = ДокументОбъект.Движения.НачисленияУдержанияПоСотрудникам.Добавить(); + Движение.Сотрудник = СтрокаДанных.Сотрудник; + Движение.ФизическоеЛицо = СтрокаДанных.Сотрудник.ФизическоеЛицо; + Движение.Период = Период; + Движение.НачислениеУдержание = ПланыВидовРасчета.Начисления.ОкладПоЧасам; + Движение.Сумма = СтрокаДанных.ИтогоНачислено; + + КонецЦикла; + + ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); + +КонецПроцедуры + +// Запись данных страховых взносов +Процедура ЗаписатьДанныеСтраховыхВзносов(Данные, Период) Экспорт + + ДокументОбъект = Документы.ПереносДанных.СоздатьДокумент(); + ДокументОбъект.Дата = Период; + ДокументОбъект.Комментарий = "Загрузка страховых взносов из Excel"; + + Для Каждого СтрокаДанных Из Данные Цикл + + Движение = ДокументОбъект.Движения.ИсчисленныеСтраховыеВзносы.Добавить(); + Движение.Сотрудник = СтрокаДанных.Сотрудник; + Движение.Период = Период; + Движение.ВидВзноса = СтрокаДанных.ВидВзноса; + Движение.Сумма = СтрокаДанных.Сумма; + + КонецЦикла; + + ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Чтение данных из листа "Расчет" +Процедура ПрочитатьДанныеРасчета(ЛистРасчет, Результат) + + // Определение последней строки данных + ПоследняяСтрока = ЛистРасчет.Cells(1, 1).End(-4121).Row; // xlDown + + // Чтение данных начиная со строки 16 (данные сотрудников) + Для НомерСтроки = 16 По ПоследняяСтрока Цикл + + ФИО = ЛистРасчет.Cells(НомерСтроки, 1).Value; + Если Не ЗначениеЗаполнено(ФИО) Тогда + Продолжить; + КонецЕсли; + + // Пропуск строк итогов + Если СтрНачинаетсяС(ВРег(СокрЛП(ФИО)), "ИТОГО") Тогда + Продолжить; + КонецЕсли; + + // Чтение данных сотрудника + Должность = ЛистРасчет.Cells(НомерСтроки, 2).Value; + СчетБК = ЛистРасчет.Cells(НомерСтроки, 3).Value; + ВидЗанятости = ЛистРасчет.Cells(НомерСтроки, 4).Value; + ЧасоваяНорма = ЛистРасчет.Cells(НомерСтроки, 5).Value; + ОтработаноДней = ЛистРасчет.Cells(НомерСтроки, 6).Value; + КоличествоСтавок = ЛистРасчет.Cells(НомерСтроки, 7).Value; + Оклад = ЛистРасчет.Cells(НомерСтроки, 8).Value; + + // Доплаты и надбавки + ЧасыДежурства = ЛистРасчет.Cells(НомерСтроки, 9).Value; + ЧасыНочные = ЛистРасчет.Cells(НомерСтроки, 10).Value; + ЧасыПраздничные = ЛистРасчет.Cells(НомерСтроки, 11).Value; + РабочиеЧасыПоТабелю = ЛистРасчет.Cells(НомерСтроки, 12).Value; + ИзРасчетаМесОкладаДни = ЛистРасчет.Cells(НомерСтроки, 13).Value; + ДоплатаСовместительство = ЛистРасчет.Cells(НомерСтроки, 14).Value; + ДоплатаСовмещение = ЛистРасчет.Cells(НомерСтроки, 15).Value; + ДоплатаИнтенсивность = ЛистРасчет.Cells(НомерСтроки, 16).Value; + ИзРасчетаМесОкладаЧасы = ЛистРасчет.Cells(НомерСтроки, 17).Value; + ДоплатаНочные = ЛистРасчет.Cells(НомерСтроки, 18).Value; + ДоплатаПраздничные = ЛистРасчет.Cells(НомерСтроки, 19).Value; + ЗаСтаж = ЛистРасчет.Cells(НомерСтроки, 20).Value; + НадбавкаЗаКатегорию = ЛистРасчет.Cells(НомерСтроки, 21).Value; + НадбавкаЗаВредность = ЛистРасчет.Cells(НомерСтроки, 22).Value; + ПовышающийКоэффициент = ЛистРасчет.Cells(НомерСтроки, 23).Value; + СтимулирующиеВыплаты = ЛистРасчет.Cells(НомерСтроки, 24).Value; + СтимулирующаяНадбавка = ЛистРасчет.Cells(НомерСтроки, 25).Value; + РайонныйКоэффициент = ЛистРасчет.Cells(НомерСтроки, 26).Value; + ВыплатыПоУказу597 = ЛистРасчет.Cells(НомерСтроки, 27).Value; + ПремияРазовая = ЛистРасчет.Cells(НомерСтроки, 28).Value; + БольничныйЛист = ЛистРасчет.Cells(НомерСтроки, 29).Value; + ДоплатаПрофактиву = ЛистРасчет.Cells(НомерСтроки, 30).Value; + Пусковые = ЛистРасчет.Cells(НомерСтроки, 31).Value; + Отпуск = ЛистРасчет.Cells(НомерСтроки, 32).Value; + КомпенсацияОтпуск = ЛистРасчет.Cells(НомерСтроки, 33).Value; + Прочие = ЛистРасчет.Cells(НомерСтроки, 34).Value; + ВыходноеПособие = ЛистРасчет.Cells(НомерСтроки, 35).Value; + ПособиеПоУходу = ЛистРасчет.Cells(НомерСтроки, 36).Value; + ДоплатаДоМРОТ = ЛистРасчет.Cells(НомерСтроки, 37).Value; + Родовые = ЛистРасчет.Cells(НомерСтроки, 38).Value; + + // Итоговые суммы + ИтогоНачислено = ЛистРасчет.Cells(НомерСтроки, 39).Value; + НДФЛ = ЛистРасчет.Cells(НомерСтроки, 40).Value; + ПрофВзнос = ЛистРасчет.Cells(НомерСтроки, 41).Value; + Исполнительные = ЛистРасчет.Cells(НомерСтроки, 42).Value; + Аванс = ЛистРасчет.Cells(НомерСтроки, 43).Value; + ПФСофинансирование = ЛистРасчет.Cells(НомерСтроки, 44).Value; + ПремияУд = ЛистРасчет.Cells(НомерСтроки, 45).Value; + Касса1 = ЛистРасчет.Cells(НомерСтроки, 46).Value; + Касса2 = ЛистРасчет.Cells(НомерСтроки, 47).Value; + Касса3 = ЛистРасчет.Cells(НомерСтроки, 48).Value; + ПособиеДо3Лет = ЛистРасчет.Cells(НомерСтроки, 49).Value; + Безналичные = ЛистРасчет.Cells(НомерСтроки, 50).Value; + ВозвратВКассу = ЛистРасчет.Cells(НомерСтроки, 51).Value; + Депонент = ЛистРасчет.Cells(НомерСтроки, 52).Value; + ИтогоУдержано = ЛистРасчет.Cells(НомерСтроки, 53).Value; + ОстатокНаНачало = ЛистРасчет.Cells(НомерСтроки, 54).Value; + ВсегоНаРуки = ЛистРасчет.Cells(НомерСтроки, 55).Value; + + // Страховые взносы + ДТ6Процент = ЛистРасчет.Cells(НомерСтроки, 58).Value; + ДТ4Процент = ЛистРасчет.Cells(НомерСтроки, 59).Value; + ПФСтраховая = ЛистРасчет.Cells(НомерСтроки, 60).Value; + ФССФОМС = ЛистРасчет.Cells(НомерСтроки, 61).Value; + НСПЗ = ЛистРасчет.Cells(НомерСтроки, 62).Value; + СВИтого = ЛистРасчет.Cells(НомерСтроки, 63).Value; + + // Сопоставление сотрудника + Сотрудник = НайтиСотрудника(ФИО, "", Должность, ВидЗанятости); + + Если Сотрудник = Неопределено Тогда + Результат.Ошибки.Добавить("Сотрудник не найден: " + ФИО); + Продолжить; + КонецЕсли; + + // Добавление строки в таблицу расчета ЗП + СтрокаДанных = Результат.ДанныеРасчетаЗП.Добавить(); + СтрокаДанных.Сотрудник = Сотрудник; + СтрокаДанных.ФИО = ФИО; + СтрокаДанных.Должность = Должность; + СтрокаДанных.СчетБК = СчетБК; + СтрокаДанных.ВидЗанятости = ВидЗанятости; + СтрокаДанных.Оклад = Оклад; + СтрокаДанных.КоличествоСтавок = КоличествоСтавок; + СтрокаДанных.ОтработаноДней = ОтработаноДней; + СтрокаДанных.ИтогоНачислено = ИтогоНачислено; + СтрокаДанных.НДФЛ = НДФЛ; + СтрокаДанных.ИтогоУдержано = ИтогоУдержано; + СтрокаДанных.ВсегоНаРуки = ВсегоНаРуки; + + // Добавление строки в таблицу страховых взносов + Если ЗначениеЗаполнено(СВИтого) И СВИтого > 0 Тогда + СтрокаВзносов = Результат.ДанныеСтраховыхВзносов.Добавить(); + СтрокаВзносов.Сотрудник = Сотрудник; + СтрокаВзносов.ФИО = ФИО; + СтрокаВзносов.ДТ6Процент = ДТ6Процент; + СтрокаВзносов.ДТ4Процент = ДТ4Процент; + СтрокаВзносов.ПФСтраховая = ПФСтраховая; + СтрокаВзносов.ФССФОМС = ФССФОМС; + СтрокаВзносов.НСПЗ = НСПЗ; + СтрокаВзносов.Итого = СВИтого; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма.xml b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма.xml new file mode 100644 index 0000000..f81c4b5 --- /dev/null +++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма.xml @@ -0,0 +1,23 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + Any + + +
+
diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form.xml b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form.xml new file mode 100644 index 0000000..99b8047 --- /dev/null +++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form.xml @@ -0,0 +1,292 @@ + +
+ DontBlock + Vertical + useIfNecessary + + false + + + + + + + + ПриСозданииНаСервере + + + + Vertical + + + Horizontal + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Путь к файлу:</v8:content> + </v8:item> + + + + Объект.ПутьКФайлу + 80 + + + Объект.МесяцЗагрузки + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Месяц:</v8:content> + </v8:item> + + 10 + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Расчет ЗП</v8:content> + </v8:item> + + + + Объект.ДанныеРасчетаЗП + DoNotUse + + + ФИО + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>ФИО</v8:content> + </v8:item> + + 30 + + + Должность + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Должность</v8:content> + </v8:item> + + 25 + + + Оклад + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Оклад</v8:content> + </v8:item> + + 12 + + + ИтогоНачислено + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Итого начислено</v8:content> + </v8:item> + + 15 + + + НДФЛ + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>НДФЛ</v8:content> + </v8:item> + + 12 + + + ВсегоНаРуки + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Всего на руки</v8:content> + </v8:item> + + 15 + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Страховые взносы</v8:content> + </v8:item> + + + + Объект.ДанныеСтраховыхВзносов + DoNotUse + + + ФИО + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>ФИО</v8:content> + </v8:item> + + 30 + + + ДТ6Процент + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>ДТ 6%</v8:content> + </v8:item> + + 12 + + + ДТ4Процент + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>ДТ 4%</v8:content> + </v8:item> + + 12 + + + ПФСтраховая + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>ПФ страховая</v8:content> + </v8:item> + + 12 + + + ФССФОМС + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>ФСС/ФОМС</v8:content> + </v8:item> + + 12 + + + Итого + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Итого</v8:content> + </v8:item> + + 12 + + + + + + + + + + + + + + cfg:DataProcessorObject.ЗагрузкаДанныхИзExcel + + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Выбрать файл</v8:content> + </v8:item> + + + + ru + Выбрать Excel файл для загрузки + + + ВыбратьФайл + DontUse + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Загрузить данные</v8:content> + </v8:item> + + + + ru + Загрузить данные из выбранного файла + + + ЗагрузитьДанные + DontUse + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Записать данные</v8:content> + </v8:item> + + + + ru + Записать загруженные данные в 1С + + + ЗаписатьДанные + DontUse + + +
diff --git a/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl new file mode 100644 index 0000000..2c7d60c --- /dev/null +++ b/DataProcessors/ЗагрузкаДанныхИзExcel/Forms/Форма/Ext/Form/Module.bsl @@ -0,0 +1,213 @@ +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + ИнициализироватьТаблицы(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКоманд + +&НаКлиенте +Процедура ВыбратьФайл(Команда) + Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); + Диалог.МножественныйВыбор = Ложь; + Диалог.Фильтр = "Excel файлы (*.xls;*.xlsx;*.xlsm)|*.xls;*.xlsx;*.xlsm"; + Если Диалог.Выбрать() Тогда + Объект.ПутьКФайлу = Диалог.ПолноеИмяФайла; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЗагрузитьДанные(Команда) + Если Не ЗначениеЗаполнено(Объект.ПутьКФайлу) Тогда + Сообщить("Выберите файл!"); + Возврат; + КонецЕсли; + ПрочитатьExcelНаКлиенте(); +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьДанные(Команда) + Если Объект.ДанныеРасчетаЗП.Количество() = 0 Тогда + Сообщить("Нет данных для записи!"); + Возврат; + КонецЕсли; + ЗаписатьДанныеНаСервере(); + Сообщить("Данные записаны!"); +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСExcel + +&НаКлиенте +Функция ПрочитатьЯчейку(Лист, Строка, Колонка, ФИО, ВидДанных) + + Попытка + Значение = Лист.Cells(Строка, Колонка).Value; + Если Значение = Неопределено ИЛИ Значение = "" Тогда + Возврат 0; + КонецЕсли; + Возврат Число(Значение); + Исключение + Сообщить("Ошибка чтения ячейки: " + ФИО + " | " + ВидДанных + + " | строка " + Строка + " колонка " + Колонка + + " | значение: """ + Значение + """ | " + ОписаниеОшибки()); + Возврат 0; + КонецПопытки; + +КонецФункции + +&НаКлиенте +Функция ПрочитатьСтроку(Лист, Строка, Колонка) + + Попытка + Значение = Лист.Cells(Строка, Колонка).Value; + Если Значение = Неопределено Тогда + Возврат ""; + КонецЕсли; + Возврат СокрЛП("" + Значение); + Исключение + Возврат ""; + КонецПопытки; + +КонецФункции + +&НаКлиенте +Процедура ПрочитатьExcelНаКлиенте() + + Попытка + ВременныйФайл = КаталогВременныхФайлов() + "temp_data.xls"; + КопироватьФайл(Объект.ПутьКФайлу, ВременныйФайл); + + Excel = Новый COMОбъект("Excel.Application"); + Excel.Visible = Ложь; + Excel.DisplayAlerts = Ложь; + + Книга = Excel.Workbooks.Open(ВременныйФайл); + + ЛистРасчет = Неопределено; + Для Каждого Лист Из Книга.Sheets Цикл + Если ВРег(Лист.Name) = "РАСЧЕТ" Тогда + ЛистРасчет = Лист; + Прервать; + КонецЕсли; + КонецЦикла; + + Если ЛистРасчет = Неопределено Тогда + Сообщить("Лист 'Расчет' не найден!"); + Книга.Close(Ложь); + Excel.Quit(); + УдалитьФайлы(ВременныйФайл); + Возврат; + КонецЕсли; + + МесяцЗначение = ЛистРасчет.Cells(4, 1).Value; + Если ЗначениеЗаполнено(МесяцЗначение) Тогда + Попытка + Объект.МесяцЗагрузки = Число(МесяцЗначение); + Исключение + Сообщить("Не удалось определить месяц из ячейки A4: " + МесяцЗначение); + КонецПопытки; + КонецЕсли; + + ПоследняяСтрока = ЛистРасчет.Cells(1000, 1).End(-4121).Row; + + МассивДанных = Новый Массив; + МассивВзносов = Новый Массив; + + Для Ном = 16 По ПоследняяСтрока Цикл + + ФИО = ПрочитатьСтроку(ЛистРасчет, Ном, 1); + Если Не ЗначениеЗаполнено(ФИО) Тогда Продолжить; КонецЕсли; + Если СтрНачинаетсяС(ВРег(ФИО), "ИТОГО") Тогда Продолжить; КонецЕсли; + + Строка = Новый Структура; + Строка.Вставить("ФИО", ФИО); + Строка.Вставить("Должность", ПрочитатьСтроку(ЛистРасчет, Ном, 2)); + Строка.Вставить("СчетБК", ПрочитатьСтроку(ЛистРасчет, Ном, 3)); + Строка.Вставить("ВидЗанятости", ПрочитатьСтроку(ЛистРасчет, Ном, 4)); + Строка.Вставить("Оклад", ПрочитатьЯчейку(ЛистРасчет, Ном, 8, ФИО, "Оклад")); + Строка.Вставить("КоличествоСтавок", ПрочитатьЯчейку(ЛистРасчет, Ном, 7, ФИО, "Кол-во ставок")); + Строка.Вставить("ОтработаноДней", ПрочитатьЯчейку(ЛистРасчет, Ном, 6, ФИО, "Отработано дней")); + Строка.Вставить("ИтогоНачислено", ПрочитатьЯчейку(ЛистРасчет, Ном, 39, ФИО, "Итого начислено")); + Строка.Вставить("НДФЛ", ПрочитатьЯчейку(ЛистРасчет, Ном, 40, ФИО, "НДФЛ")); + Строка.Вставить("ИтогоУдержано", ПрочитатьЯчейку(ЛистРасчет, Ном, 53, ФИО, "Итого удержано")); + Строка.Вставить("ВсегоНаРуки", ПрочитатьЯчейку(ЛистРасчет, Ном, 55, ФИО, "Всего на руки")); + МассивДанных.Добавить(Строка); + + СВ = ПрочитатьЯчейку(ЛистРасчет, Ном, 63, ФИО, "Страховые взносы итого"); + Если СВ > 0 Тогда + СтрВзносов = Новый Структура; + СтрВзносов.Вставить("ФИО", ФИО); + СтрВзносов.Вставить("ДТ6Процент", ПрочитатьЯчейку(ЛистРасчет, Ном, 58, ФИО, "ДТ 6%")); + СтрВзносов.Вставить("ДТ4Процент", ПрочитатьЯчейку(ЛистРасчет, Ном, 59, ФИО, "ДТ 4%")); + СтрВзносов.Вставить("ПФСтраховая", ПрочитатьЯчейку(ЛистРасчет, Ном, 60, ФИО, "ПФ страховая")); + СтрВзносов.Вставить("ФССФОМС", ПрочитатьЯчейку(ЛистРасчет, Ном, 61, ФИО, "ФСС/ФОМС")); + СтрВзносов.Вставить("НСПЗ", ПрочитатьЯчейку(ЛистРасчет, Ном, 62, ФИО, "НС и ПЗ")); + СтрВзносов.Вставить("Итого", СВ); + МассивВзносов.Добавить(СтрВзносов); + КонецЕсли; + + КонецЦикла; + + Книга.Close(Ложь); + Excel.Quit(); + УдалитьФайлы(ВременныйФайл); + + ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов); + + Сообщить("Загружено сотрудников: " + МассивДанных.Количество()); + + Исключение + Сообщить("Ошибка чтения Excel: " + ОписаниеОшибки()); + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти + +#Область СерверныеПроцедуры + +&НаСервере +Процедура ИнициализироватьТаблицы() +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов) + + ТЗРасчет = РеквизитФормыВЗначение("Объект.ДанныеРасчетаЗП"); + ТЗРасчет.Очистить(); + Для Каждого Эл Из МассивДанных Цикл + Строка = ТЗРасчет.Добавить(); + ЗаполнитьЗначенияСвойств(Строка, Эл); + КонецЦикла; + ЗначениеВРеквизитФормы(ТЗРасчет, "Объект.ДанныеРасчетаЗП"); + + ТЗВзносы = РеквизитФормыВЗначение("Объект.ДанныеСтраховыхВзносов"); + ТЗВзносы.Очистить(); + Для Каждого Эл Из МассивВзносов Цикл + Строка = ТЗВзносы.Добавить(); + ЗаполнитьЗначенияСвойств(Строка, Эл); + КонецЦикла; + ЗначениеВРеквизитФормы(ТЗВзносы, "Объект.ДанныеСтраховыхВзносов"); + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьДанныеНаСервере() + ГодЗагрузки = ТекущаяДата().Год(); + Период = Дата(ГодЗагрузки, Объект.МесяцЗагрузки, 1); + + ТЗРасчет = РеквизитФормыВЗначение("Объект.ДанныеРасчетаЗП"); + Объект.ЗаписатьДанныеРасчета(ТЗРасчет, Период); + + ТЗВзносы = РеквизитФормыВЗначение("Объект.ДанныеСтраховыхВзносов"); + Если ТЗВзносы.Количество() > 0 Тогда + Объект.ЗаписатьДанныеСтраховыхВзносов(ТЗВзносы, Период); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти diff --git a/Languages/Русский.xml b/Languages/Русский.xml new file mode 100644 index 0000000..297f8c1 --- /dev/null +++ b/Languages/Русский.xml @@ -0,0 +1,14 @@ + + + + + + + Русский + + Adopted + 35d4deef-5b93-4c11-ac42-07beb390c332 + ru + + + diff --git a/Subsystems/Зарплата.xml b/Subsystems/Зарплата.xml new file mode 100644 index 0000000..a975e74 --- /dev/null +++ b/Subsystems/Зарплата.xml @@ -0,0 +1,25 @@ + + + + + + Content + Extended + + + CommandInterface + Extended + + + + Зарплата + + Adopted + e24abf16-a774-4696-9280-ac78486ba9a8 + + DataProcessor.ЗагрузкаДанныхИзExcel + + + + +