v3.0.0.4: Динамические заголовки, личные данные, исправление формы, DDD-рефакторинг
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 73 KiB |
+1
-1
@@ -60,7 +60,7 @@
|
|||||||
<ScriptVariant>Russian</ScriptVariant>
|
<ScriptVariant>Russian</ScriptVariant>
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
<Vendor>ООО "Профи-Софт", код партнера 42575-13, г.Байконур.</Vendor>
|
<Vendor>ООО "Профи-Софт", код партнера 42575-13, г.Байконур.</Vendor>
|
||||||
<Version>3.0.0.2</Version>
|
<Version>3.0.0.4</Version>
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
<BriefInformation>
|
<BriefInformation>
|
||||||
<v8:item>
|
<v8:item>
|
||||||
|
|||||||
@@ -153,6 +153,46 @@
|
|||||||
</Title>
|
</Title>
|
||||||
<Width>15</Width>
|
<Width>15</Width>
|
||||||
</Column>
|
</Column>
|
||||||
|
<Column name="ИНН" id="60">
|
||||||
|
<DataPath>ИНН</DataPath>
|
||||||
|
<Title>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>ИНН</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Title>
|
||||||
|
<Width>15</Width>
|
||||||
|
</Column>
|
||||||
|
<Column name="СНИЛС" id="61">
|
||||||
|
<DataPath>СНИЛС</DataPath>
|
||||||
|
<Title>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>СНИЛС</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Title>
|
||||||
|
<Width>18</Width>
|
||||||
|
</Column>
|
||||||
|
<Column name="Паспорт" id="62">
|
||||||
|
<DataPath>Паспорт</DataPath>
|
||||||
|
<Title>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Паспорт</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Title>
|
||||||
|
<Width>30</Width>
|
||||||
|
</Column>
|
||||||
|
<Column name="Адрес" id="63">
|
||||||
|
<DataPath>Адрес</DataPath>
|
||||||
|
<Title>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Адрес</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Title>
|
||||||
|
<Width>35</Width>
|
||||||
|
</Column>
|
||||||
</ChildItems>
|
</ChildItems>
|
||||||
</TableBox>
|
</TableBox>
|
||||||
</ChildItems>
|
</ChildItems>
|
||||||
@@ -255,12 +295,6 @@
|
|||||||
<v8:Type>String</v8:Type>
|
<v8:Type>String</v8:Type>
|
||||||
</Type>
|
</Type>
|
||||||
</Attribute>
|
</Attribute>
|
||||||
<Attribute name="Объект" id="1">
|
|
||||||
<Type>
|
|
||||||
<v8:Type>cfg:DataProcessorObject.ЗагрузкаДанныхИзExcel</v8:Type>
|
|
||||||
</Type>
|
|
||||||
<MainAttribute
|
|
||||||
</Attribute>
|
|
||||||
</Attributes>
|
</Attributes>
|
||||||
<Commands>
|
<Commands>
|
||||||
<Command name="ВыбратьФайл" id="1">
|
<Command name="ВыбратьФайл" id="1">
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Состояние("Инициализация загрузки...");
|
Состояние("Инициализация загрузки...", 0);
|
||||||
Прогресс = 0;
|
Прогресс = 0;
|
||||||
СтатусЗагрузки = "Подготовка...";
|
СтатусЗагрузки = "Подготовка...";
|
||||||
|
|
||||||
@@ -74,18 +74,28 @@
|
|||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ИзвлечьЗначениеИзТекста(Текст, Префикс)
|
||||||
|
Если Не ЗначениеЗаполнено(Текст) Тогда Возврат ""; КонецЕсли;
|
||||||
|
Позиция = СтрНайти(ВРег(Текст), ВРег(Префикс));
|
||||||
|
Если Позиция = 0 Тогда Возврат СокрЛП(Текст); КонецЕсли;
|
||||||
|
Возврат СокрЛП(Сред(Текст, Позиция + СтрДлина(Префикс)));
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПрочитатьExcelНаКлиенте()
|
Процедура ПрочитатьExcelНаКлиенте()
|
||||||
|
|
||||||
Попытка
|
Попытка
|
||||||
СтатусЗагрузки = "Копирование файла...";
|
СтатусЗагрузки = "Копирование файла...";
|
||||||
Прогресс = 5;
|
Прогресс = 5;
|
||||||
|
Состояние("Копирование файла...", 5);
|
||||||
|
|
||||||
ВременныйФайл = КаталогВременныхФайлов() + "temp_data.xls";
|
ВременныйФайл = КаталогВременныхФайлов() + "temp_data.xls";
|
||||||
КопироватьФайл(Объект.ПутьКФайлу, ВременныйФайл);
|
КопироватьФайл(Объект.ПутьКФайлу, ВременныйФайл);
|
||||||
|
|
||||||
СтатусЗагрузки = "Открытие Excel...";
|
СтатусЗагрузки = "Открытие Excel...";
|
||||||
Прогресс = 10;
|
Прогресс = 10;
|
||||||
|
Состояние("Открытие Excel...", 10);
|
||||||
|
|
||||||
Excel = Новый COMОбъект("Excel.Application");
|
Excel = Новый COMОбъект("Excel.Application");
|
||||||
Excel.Visible = Ложь;
|
Excel.Visible = Ложь;
|
||||||
@@ -95,6 +105,7 @@
|
|||||||
|
|
||||||
СтатусЗагрузки = "Поиск листа 'Расчет'...";
|
СтатусЗагрузки = "Поиск листа 'Расчет'...";
|
||||||
Прогресс = 15;
|
Прогресс = 15;
|
||||||
|
Состояние("Поиск листа 'Расчет'...", 15);
|
||||||
|
|
||||||
ЛистРасчет = Неопределено;
|
ЛистРасчет = Неопределено;
|
||||||
Для Каждого Лист Из Книга.Sheets Цикл
|
Для Каждого Лист Из Книга.Sheets Цикл
|
||||||
@@ -110,12 +121,14 @@
|
|||||||
Excel.Quit();
|
Excel.Quit();
|
||||||
УдалитьФайлы(ВременныйФайл);
|
УдалитьФайлы(ВременныйФайл);
|
||||||
СтатусЗагрузки = "Ошибка: лист не найден";
|
СтатусЗагрузки = "Ошибка: лист не найден";
|
||||||
|
Состояние("Ошибка: лист 'Расчет' не найден", 0);
|
||||||
Прогресс = 0;
|
Прогресс = 0;
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
СтатусЗагрузки = "Определение месяца...";
|
СтатусЗагрузки = "Определение месяца...";
|
||||||
Прогресс = 20;
|
Прогресс = 20;
|
||||||
|
Состояние("Определение месяца...", 20);
|
||||||
|
|
||||||
МесяцЗначение = ЛистРасчет.Cells(4, 1).Value;
|
МесяцЗначение = ЛистРасчет.Cells(4, 1).Value;
|
||||||
Если ЗначениеЗаполнено(МесяцЗначение) Тогда
|
Если ЗначениеЗаполнено(МесяцЗначение) Тогда
|
||||||
@@ -128,26 +141,39 @@
|
|||||||
|
|
||||||
СтатусЗагрузки = "Подсчет строк...";
|
СтатусЗагрузки = "Подсчет строк...";
|
||||||
Прогресс = 25;
|
Прогресс = 25;
|
||||||
|
Состояние("Подсчет строк...", 25);
|
||||||
ПоследняяСтрока = ЛистРасчет.Cells(1000, 1).End(-4121).Row;
|
|
||||||
ВсегоСтрок = ПоследняяСтрока - 16;
|
|
||||||
|
|
||||||
МассивДанных = Новый Массив;
|
МассивДанных = Новый Массив;
|
||||||
МассивВзносов = Новый Массив;
|
МассивВзносов = Новый Массив;
|
||||||
|
|
||||||
СтатусЗагрузки = "Чтение данных...";
|
СтатусЗагрузки = "Чтение данных...";
|
||||||
|
|
||||||
Для Ном = 16 По ПоследняяСтрока Цикл
|
ПустыхПодряд = 0;
|
||||||
|
МаксПустых = 5;
|
||||||
// Обновление прогресса
|
Ном = 16;
|
||||||
Прогресс = 25 + 65 * (Ном - 16) / Макс(ВсегоСтрок, 1);
|
|
||||||
|
Пока Истина Цикл
|
||||||
|
|
||||||
ФИО = ПрочитатьСтроку(ЛистРасчет, Ном, 1);
|
ФИО = ПрочитатьСтроку(ЛистРасчет, Ном, 1);
|
||||||
Если Не ЗначениеЗаполнено(ФИО) Тогда Продолжить; КонецЕсли;
|
|
||||||
Если СтрНачинаетсяС(ВРег(ФИО), "ИТОГО") Тогда Продолжить; КонецЕсли;
|
Если Не ЗначениеЗаполнено(ФИО) Тогда
|
||||||
|
ПустыхПодряд = ПустыхПодряд + 1;
|
||||||
|
Если ПустыхПодряд >= МаксПустых Тогда
|
||||||
|
Прервать;
|
||||||
|
КонецЕсли;
|
||||||
|
Ном = Ном + 1;
|
||||||
|
Продолжить;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ПустыхПодряд = 0;
|
||||||
|
|
||||||
|
Если СтрНачинаетсяС(ВРег(ФИО), "ИТОГО") Тогда
|
||||||
|
Прервать;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
// Статус: загрузка расчетов
|
// Статус: загрузка расчетов
|
||||||
СтатусЗагрузки = "Расчет ЗП: " + ФИО + " (строка " + Ном + "/" + ПоследняяСтрока + ")";
|
СтатусЗагрузки = "Расчет ЗП: " + ФИО + " (строка " + Ном + ")";
|
||||||
|
Состояние("Расчет ЗП: " + ФИО, 25 + 65 * (Ном - 16) / Макс(Ном, 1));
|
||||||
|
|
||||||
Строка = Новый Структура;
|
Строка = Новый Структура;
|
||||||
Строка.Вставить("ФИО", ФИО);
|
Строка.Вставить("ФИО", ФИО);
|
||||||
@@ -156,11 +182,33 @@
|
|||||||
Строка.Вставить("ВидЗанятости", ПрочитатьСтроку(ЛистРасчет, Ном, 4));
|
Строка.Вставить("ВидЗанятости", ПрочитатьСтроку(ЛистРасчет, Ном, 4));
|
||||||
Строка.Вставить("Оклад", ПрочитатьЯчейку(ЛистРасчет, Ном, 8, ФИО, "Оклад"));
|
Строка.Вставить("Оклад", ПрочитатьЯчейку(ЛистРасчет, Ном, 8, ФИО, "Оклад"));
|
||||||
Строка.Вставить("КоличествоСтавок", ПрочитатьЯчейку(ЛистРасчет, Ном, 7, ФИО, "Кол-во ставок"));
|
Строка.Вставить("КоличествоСтавок", ПрочитатьЯчейку(ЛистРасчет, Ном, 7, ФИО, "Кол-во ставок"));
|
||||||
Строка.Вставить("ОтработаноДней", ПрочитатьЯчейку(ЛистРасчет, Ном, 6, ФИО, "Отработано дней"));
|
Строка.Вставить("ОтработаноДней", ПрочитатьЯчейку(ЛистРасчет, Ном, 6, ФИО, "ОтработаноДней"));
|
||||||
Строка.Вставить("ИтогоНачислено", ПрочитатьЯчейку(ЛистРасчет, Ном, 39, ФИО, "Итого начислено"));
|
Строка.Вставить("ИтогоНачислено", ПрочитатьЯчейку(ЛистРасчет, Ном, 39, ФИО, "Итого начислено"));
|
||||||
Строка.Вставить("НДФЛ", ПрочитатьЯчейку(ЛистРасчет, Ном, 40, ФИО, "НДФЛ"));
|
Строка.Вставить("НДФЛ", ПрочитатьЯчейку(ЛистРасчет, Ном, 40, ФИО, "НДФЛ"));
|
||||||
Строка.Вставить("ИтогоУдержано", ПрочитатьЯчейку(ЛистРасчет, Ном, 53, ФИО, "Итого удержано"));
|
Строка.Вставить("ИтогоУдержано", ПрочитатьЯчейку(ЛистРасчет, Ном, 53, ФИО, "Итого удержано"));
|
||||||
Строка.Вставить("ВсегоНаРуки", ПрочитатьЯчейку(ЛистРасчет, Ном, 55, ФИО, "Всего на руки"));
|
Строка.Вставить("ВсегоНаРуки", ПрочитатьЯчейку(ЛистРасчет, Ном, 55, ФИО, "Всего на руки"));
|
||||||
|
|
||||||
|
// Чтение личных данных из листа сотрудника
|
||||||
|
ЛистСотрудника = Неопределено;
|
||||||
|
Для Каждого Лист Из Книга.Sheets Цикл
|
||||||
|
Если ВРег(Лист.Name) = ВРег(ФИО) Тогда
|
||||||
|
ЛистСотрудника = Лист;
|
||||||
|
Прервать;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
Если ЛистСотрудника <> Неопределено Тогда
|
||||||
|
Строка.Вставить("ИНН", ИзвлечьЗначениеИзТекста(ПрочитатьСтроку(ЛистСотрудника, 0, 10), "ИНН"));
|
||||||
|
Строка.Вставить("СНИЛС", ИзвлечьЗначениеИзТекста(ПрочитатьСтроку(ЛистСотрудника, 1, 10), "СНИЛС"));
|
||||||
|
Строка.Вставить("Паспорт", ИзвлечьЗначениеИзТекста(ПрочитатьСтроку(ЛистСотрудника, 2, 10), "Паспорт"));
|
||||||
|
Строка.Вставить("Адрес", ПрочитатьСтроку(ЛистСотрудника, 3, 10));
|
||||||
|
Иначе
|
||||||
|
Строка.Вставить("ИНН", "");
|
||||||
|
Строка.Вставить("СНИЛС", "");
|
||||||
|
Строка.Вставить("Паспорт", "");
|
||||||
|
Строка.Вставить("Адрес", "");
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
МассивДанных.Добавить(Строка);
|
МассивДанных.Добавить(Строка);
|
||||||
|
|
||||||
// Страховые взносы
|
// Страховые взносы
|
||||||
@@ -178,10 +226,13 @@
|
|||||||
МассивВзносов.Добавить(СтрВзносов);
|
МассивВзносов.Добавить(СтрВзносов);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Ном = Ном + 1;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
СтатусЗагрузки = "Закрытие Excel...";
|
СтатусЗагрузки = "Закрытие Excel...";
|
||||||
Прогресс = 95;
|
Прогресс = 95;
|
||||||
|
Состояние("Закрытие Excel...", 95);
|
||||||
|
|
||||||
Книга.Close(Ложь);
|
Книга.Close(Ложь);
|
||||||
Excel.Quit();
|
Excel.Quit();
|
||||||
@@ -189,16 +240,23 @@
|
|||||||
|
|
||||||
СтатусЗагрузки = "Передача данных на сервер...";
|
СтатусЗагрузки = "Передача данных на сервер...";
|
||||||
Прогресс = 98;
|
Прогресс = 98;
|
||||||
|
Состояние("Передача данных на сервер...", 98);
|
||||||
|
|
||||||
ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов);
|
ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов);
|
||||||
|
|
||||||
|
// Обновление табличных частей на форме
|
||||||
|
Элементы.ТаблицаРасчетЗП.ОбновитьСтроки();
|
||||||
|
Элементы.ТаблицаСтраховыеВзносы.ОбновитьСтроки();
|
||||||
|
|
||||||
Прогресс = 100;
|
Прогресс = 100;
|
||||||
СтатусЗагрузки = "Готово! Загружено: " + МассивДанных.Количество() + " сотрудников";
|
СтатусЗагрузки = "Готово! Загружено: " + МассивДанных.Количество() + " сотрудников";
|
||||||
|
Состояние("Готово! Загружено: " + МассивДанных.Количество() + " сотрудников", 100);
|
||||||
Сообщить(СтатусЗагрузки);
|
Сообщить(СтатусЗагрузки);
|
||||||
|
|
||||||
Исключение
|
Исключение
|
||||||
Сообщить("Ошибка чтения Excel: " + ОписаниеОшибки());
|
Сообщить("Ошибка чтения Excel: " + ОписаниеОшибки());
|
||||||
СтатусЗагрузки = "Ошибка: " + ОписаниеОшибки();
|
СтатусЗагрузки = "Ошибка: " + ОписаниеОшибки();
|
||||||
|
Состояние("Ошибка: " + ОписаниеОшибки(), 0);
|
||||||
Прогресс = 0;
|
Прогресс = 0;
|
||||||
КонецПопытки;
|
КонецПопытки;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ExtPicture xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.21">
|
||||||
|
<Picture>
|
||||||
|
<xr:Abs>Picture.png</xr:Abs>
|
||||||
|
<xr:LoadTransparent>false</xr:LoadTransparent>
|
||||||
|
</Picture>
|
||||||
|
</ExtPicture>
|
||||||
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
Reference in New Issue
Block a user