v3.0.0.75
This commit is contained in:
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:v8="http://v8.1c.ru/8.1/data/core">
|
||||||
|
<CommonModule uuid="95b559dc-5653-44e6-9eb3-312f0e28dc68">
|
||||||
|
<Properties>
|
||||||
|
<Name>ЗагрузкаДанныхИзExcel_ЗаписьВРегистры</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Запись в регистры</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Global>false</Global>
|
||||||
|
<Server>true</Server>
|
||||||
|
</Properties>
|
||||||
|
</CommonModule>
|
||||||
|
</MetaDataObject>
|
||||||
@@ -0,0 +1,285 @@
|
|||||||
|
// Запись данных в регистры 1С
|
||||||
|
// Серверный модуль для записи движений через документ ПереносДанных
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция РазрешитьОрганизацию(Наименование)
|
||||||
|
Если Не ЗначениеЗаполнено(Наименование) Тогда
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Справочники.Организации.НайтиПоНаименованию(СокрЛП(Наименование), Истина);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция РазрешитьСтатьюФинансирования(Наименование)
|
||||||
|
Если Не ЗначениеЗаполнено(Наименование) Тогда
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Справочники.СтатьиФинансированияЗарплата.НайтиПоНаименованию(СокрЛП(Наименование), Истина);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Функция РазрешитьСтатьюРасходов(Код)
|
||||||
|
Если Не ЗначениеЗаполнено(Код) Тогда
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Справочники.СтатьиРасходовЗарплата.НайтиПоКоду(СокрЛП(Код));
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Процедура ПостроитьКэшСотрудников(ТЧСотрудники, КэшСотрудников)
|
||||||
|
КэшСотрудников = Новый Соответствие;
|
||||||
|
Для Каждого Эл Из ТЧСотрудники Цикл
|
||||||
|
СотрСсылка = Неопределено;
|
||||||
|
Если ЗначениеЗаполнено(Эл.ИНН) Тогда
|
||||||
|
СотрСсылка = Справочники.Сотрудники.НайтиПоРеквизиту("ИНН", СокрЛП(Эл.ИНН));
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(СотрСсылка) И ЗначениеЗаполнено(Эл.СНИЛС) Тогда
|
||||||
|
ФЛ = Справочники.ФизическиеЛица.НайтиПоРеквизиту("СтраховойНомерПФР", СокрЛП(Эл.СНИЛС));
|
||||||
|
Если ЗначениеЗаполнено(ФЛ) Тогда
|
||||||
|
СотрСсылка = Справочники.Сотрудники.НайтиПоРеквизиту("ФизическоеЛицо", ФЛ, Истина);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(СотрСсылка) И ЗначениеЗаполнено(Эл.ФИО) Тогда
|
||||||
|
СотрСсылка = Справочники.Сотрудники.НайтиПоНаименованию(СокрЛП(Эл.ФИО), Истина);
|
||||||
|
КонецЕсли;
|
||||||
|
Если ЗначениеЗаполнено(СотрСсылка) Тогда
|
||||||
|
КэшСотрудников.Вставить(Эл.Идентификатор, Новый Структура("Сотрудник, ФизическоеЛицо", СотрСсылка, СотрСсылка.ФизическоеЛицо));
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервереБезКонтекста
|
||||||
|
Процедура ЗаполнитьТЧ(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников, ТЧЗП, ТЧВзносы, ТЧНДФЛ, ТЧСотрудники)
|
||||||
|
ТЧЗП.Очистить();
|
||||||
|
ТЧВзносы.Очистить();
|
||||||
|
ТЧНДФЛ.Очистить();
|
||||||
|
ТЧСотрудники.Очистить();
|
||||||
|
Для Каждого Строка Из МассивДанных Цикл
|
||||||
|
НоваяСтрока = ТЧЗП.Добавить();
|
||||||
|
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
|
||||||
|
КонецЦикла;
|
||||||
|
Для Каждого Строка Из МассивВзносов Цикл
|
||||||
|
НоваяСтрока = ТЧВзносы.Добавить();
|
||||||
|
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
|
||||||
|
КонецЦикла;
|
||||||
|
Для Каждого Строка Из МассивНДФЛ Цикл
|
||||||
|
НоваяСтрока = ТЧНДФЛ.Добавить();
|
||||||
|
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
|
||||||
|
КонецЦикла;
|
||||||
|
Для Каждого Строка Из МассивСотрудников Цикл
|
||||||
|
НоваяСтрока = ТЧСотрудники.Добавить();
|
||||||
|
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
|
||||||
|
КонецЦикла;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Процедура ЗаписатьДанные(ГодЗагрузкиПараметр, ОрганизацияНаименование, СтатьяФинансированияНаименование, СтатьяРасходовКод)
|
||||||
|
ГодЧисло = Число(ГодЗагрузкиПараметр);
|
||||||
|
МесяцЧисло = Цел(Объект.МесяцЗагрузки);
|
||||||
|
Если ГодЧисло = 0 Тогда ГодЧисло = Год(ТекущаяДата()); КонецЕсли;
|
||||||
|
Если МесяцЧисло < 1 Или МесяцЧисло > 12 Тогда
|
||||||
|
Сообщить("Ошибка: месяц = " + МесяцЧисло + ", год = " + ГодЧисло);
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
Период = Дата(ГодЧисло, МесяцЧисло, 1);
|
||||||
|
|
||||||
|
Организация = РазрешитьОрганизацию(ОрганизацияНаименование);
|
||||||
|
Если Не ЗначениеЗаполнено(Организация) Тогда
|
||||||
|
Сообщить("Не найдена организация: """ + ОрганизацияНаименование + """");
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
СтатьяФинансирования = РазрешитьСтатьюФинансирования(СтатьяФинансированияНаименование);
|
||||||
|
СтатьяРасходов = РазрешитьСтатьюРасходов(СтатьяРасходовКод);
|
||||||
|
|
||||||
|
КэшСотрудников = Новый Соответствие;
|
||||||
|
ПостроитьКэшСотрудников(Объект.Сотрудники, КэшСотрудников);
|
||||||
|
|
||||||
|
ДокПеренос = Документы.ПереносДанных.СоздатьДокумент();
|
||||||
|
ДокПеренос.Дата = Период;
|
||||||
|
|
||||||
|
ВидРасчётаОклад = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Оклад", Истина);
|
||||||
|
|
||||||
|
// Регистр 1: НачисленияУдержанияПоСотрудникам
|
||||||
|
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
||||||
|
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||||
|
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||||
|
ФизЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||||
|
СотрудникСсылка = ДанныеСотр.Сотрудник;
|
||||||
|
|
||||||
|
// Начисления
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Оклад, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаСовместительство", Строка.ДоплатаСовместительство, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаНочные", Строка.ДоплатаНочные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаПраздничные", Строка.ДоплатаПраздничные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаКатегорию", Строка.НадбавкаЗаКатегорию, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаВредность", Строка.НадбавкаЗаВредность, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "ПовышающийКоэффициент", Строка.ПовышающийКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "СтимулирующаяВыплата", Строка.СтимулирующиеВыплаты, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "РайонныйКоэффициент", Строка.РайонныйКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "ПремияРазовая", Строка.ПремияРазовая, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "Отпуск", Строка.Отпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "КомпенсацияЗаНеиспользованныйОтпуск", Строка.КомпенсацияЗаОтпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "ВыходноеПособие", Строка.ВыходноеПособие, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "Родовые", Строка.Родовые, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
|
||||||
|
// Удержания
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "НДФЛ", Строка.НДФЛ, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "ПрофВзнос", Строка.ПрофВзнос, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "ИсполнительныйДокумент", Строка.ИсполнительныеДокументы, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
|
||||||
|
// Выплаты
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Аванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.ЗарплатаЗаПервуюПоловину, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "Касса1", Строка.Касса1, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "БезналичноеПеречисление", Строка.БезналичныеПеречисления, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "ПремияАванс", Строка.ПремияАванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
ЗаписатьНачисление(ДокПеренос, Строка, "ВыплатыВМежрасчетный", Строка.ВыплатыВМежрасчетный, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Регистр 2: ОтработанноеВремяПоСотрудникам
|
||||||
|
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
||||||
|
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||||
|
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||||
|
Если Строка.ОтработаноДней > 0 Или Строка.РабочиеЧасыПоТабелю > 0 Тогда
|
||||||
|
Движение = ДокПеренос.Движения.ОтработанноеВремяПоСотрудникам.Добавить();
|
||||||
|
Движение.Период = Период;
|
||||||
|
Движение.Организация = Организация;
|
||||||
|
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||||
|
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
||||||
|
Движение.Начисление = ВидРасчётаОклад;
|
||||||
|
Движение.ОтработаноДней = Строка.ОтработаноДней;
|
||||||
|
Движение.ОтработаноЧасов = Строка.РабочиеЧасыПоТабелю;
|
||||||
|
Движение.ОплаченоДней = Строка.ОтработаноДней;
|
||||||
|
Движение.ОплаченоЧасов = Строка.РабочиеЧасыПоТабелю;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Регистр 3: СведенияОДоходахНДФЛ
|
||||||
|
Для Каждого Строка Из Объект.ДанныеНДФЛ Цикл
|
||||||
|
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||||
|
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||||
|
Движение = ДокПеренос.Движения.СведенияОДоходахНДФЛ.Добавить();
|
||||||
|
Движение.Период = Период;
|
||||||
|
Движение.ГоловнаяОрганизация = Организация;
|
||||||
|
Движение.Организация = Организация;
|
||||||
|
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||||
|
Движение.МесяцНалоговогоПериода = Период;
|
||||||
|
Движение.СуммаДохода = Строка.СуммаВаловогоДохода;
|
||||||
|
Движение.СуммаВычета = Строка.СкидкаДляНДФЛЗаМесяц + Строка.ВычетНаРаботникаЗаМесяц + Строка.ВычетНаИждивенцевЗаМесяц;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Регистр 4: СтраховыеВзносыПоФизическимЛицам
|
||||||
|
Для Каждого Строка Из Объект.ДанныеСтраховыхВзносов Цикл
|
||||||
|
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||||
|
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||||
|
Движение = ДокПеренос.Движения.СтраховыеВзносыПоФизическимЛицам.Добавить();
|
||||||
|
Движение.Период = Период;
|
||||||
|
Движение.Организация = Организация;
|
||||||
|
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||||
|
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
||||||
|
Движение.ПФРДоПредельнойВеличины = Строка.ДТ6Процент;
|
||||||
|
Движение.ПФРСтраховая = Строка.ПФСтраховая;
|
||||||
|
Движение.ФФОМС = Строка.ФССФОМС;
|
||||||
|
Движение.ФССНесчастныеСлучаи = Строка.НСПЗ;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Регистр 6: ВзаиморасчетыССотрудниками
|
||||||
|
ДвиженияВзаиморасчеты = ДокПеренос.Движения.ВзаиморасчетыССотрудниками;
|
||||||
|
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
||||||
|
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||||
|
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||||
|
Если Строка.ВсегоНаРуки <> 0 Тогда
|
||||||
|
Движение = ДвиженияВзаиморасчеты.Добавить();
|
||||||
|
Движение.Период = Период;
|
||||||
|
Движение.Организация = Организация;
|
||||||
|
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||||
|
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
||||||
|
Движение.СтатьяФинансирования = СтатьяФинансирования;
|
||||||
|
Движение.СтатьяРасходов = СтатьяРасходов;
|
||||||
|
Движение.СуммаВзаиморасчетов = Строка.ВсегоНаРуки;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Регистр 7: БухгалтерскиеВзаиморасчетыССотрудниками
|
||||||
|
ДвиженияБухВзаиморасчеты = ДокПеренос.Движения.БухгалтерскиеВзаиморасчетыССотрудниками;
|
||||||
|
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
||||||
|
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||||
|
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||||
|
Если Строка.ВсегоНаРуки <> 0 Тогда
|
||||||
|
Движение = ДвиженияБухВзаиморасчеты.Добавить();
|
||||||
|
Движение.Период = Период;
|
||||||
|
Движение.Организация = Организация;
|
||||||
|
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
||||||
|
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
||||||
|
Движение.СтатьяФинансирования = СтатьяФинансирования;
|
||||||
|
Движение.СтатьяРасходов = СтатьяРасходов;
|
||||||
|
Движение.СуммаВзаиморасчетов = Строка.ВсегоНаРуки;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
// Регистр 8: ДанныеОВремениДляРасчетаСреднегоОбщий
|
||||||
|
ДвиженияСреднего = ДокПеренос.Движения.ДанныеОВремениДляРасчетаСреднегоОбщий;
|
||||||
|
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
||||||
|
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
||||||
|
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
||||||
|
Если Строка.ОтработаноДней <> 0 Тогда
|
||||||
|
Движение = ДвиженияСреднего.Добавить();
|
||||||
|
Движение.Период = Период;
|
||||||
|
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
||||||
|
Движение.ОтработаноДней = Строка.ОтработаноДней;
|
||||||
|
Движение.ОтработаноЧасов = Строка.РабочиеЧасыПоТабелю;
|
||||||
|
Движение.ОтработаноДнейКалендарных = Строка.ОтработаноДнейКалендарных;
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
|
||||||
|
ДокПеренос.Записать();
|
||||||
|
Сообщить("Данные записаны. Документ: " + ДокПеренос.Ссылка);
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаСервере
|
||||||
|
Процедура ЗаписатьНачисление(ДокПеренос, Строка, ВидРасчета, Сумма, Группа, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка)
|
||||||
|
Если Сумма = 0 Тогда Возврат; КонецЕсли;
|
||||||
|
|
||||||
|
ГруппаНаименование = "";
|
||||||
|
Если Группа = Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено Тогда
|
||||||
|
ГруппаНаименование = "";
|
||||||
|
ИначеЕсли Группа = Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано Тогда
|
||||||
|
ГруппаНаименование = "Удержание";
|
||||||
|
ИначеЕсли Группа = Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено Тогда
|
||||||
|
ГруппаНаименование = "Выплата";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Суффикс = "";
|
||||||
|
Если ЗначениеЗаполнено(СтатьяФинансирования) Тогда
|
||||||
|
НаименованиеСтатьи = СокрЛП(СтатьяФинансирования.Наименование);
|
||||||
|
Если СтрНайти(НаименованиеСтатьи, "ОМС") > 0 Тогда
|
||||||
|
Суффикс = " (ОМС)";
|
||||||
|
ИначеЕсли СтрНайти(НаименованиеСтатьи, "ПД") > 0 Тогда
|
||||||
|
Суффикс = " (ПД)";
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ВидРасчёта = Неопределено;
|
||||||
|
Если ЗначениеЗаполнено(Суффикс) Тогда
|
||||||
|
ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета + Суффикс, Истина);
|
||||||
|
КонецЕсли;
|
||||||
|
Если ВидРасчёта = Неопределено Тогда
|
||||||
|
ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета, Истина);
|
||||||
|
КонецЕсли;
|
||||||
|
Если ВидРасчёта = Неопределено Тогда
|
||||||
|
Сообщить("Не найден ПВР: " + ВидРасчета + Суффикс);
|
||||||
|
Возврат;
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
Движение = ДокПеренос.Движения.НачисленияУдержанияПоСотрудникам.Добавить();
|
||||||
|
Движение.Период = Период;
|
||||||
|
Движение.Организация = Организация;
|
||||||
|
Движение.ФизическоеЛицо = ФизЛицо;
|
||||||
|
Движение.Сотрудник = СотрудникСсылка;
|
||||||
|
Движение.НачислениеУдержание = ВидРасчёта;
|
||||||
|
Движение.Сумма = Сумма;
|
||||||
|
Движение.ГруппаНачисленияУдержанияВыплаты = Группа;
|
||||||
|
Движение.СтатьяФинансирования = СтатьяФинансирования;
|
||||||
|
Движение.СтатьяРасходов = СтатьяРасходов;
|
||||||
|
Движение.Сторно = Ложь;
|
||||||
|
КонецПроцедуры
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:v8="http://v8.1c.ru/8.1/data/core">
|
||||||
|
<CommonModule uuid="a3945307-e5b9-4d84-96e1-e13bbacabada">
|
||||||
|
<Properties>
|
||||||
|
<Name>ЗагрузкаДанныхИзExcel_МаппингДанных</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Маппинг данных</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Global>false</Global>
|
||||||
|
<Server>false</Server>
|
||||||
|
</Properties>
|
||||||
|
</CommonModule>
|
||||||
|
</MetaDataObject>
|
||||||
@@ -0,0 +1,187 @@
|
|||||||
|
// Маппинг данных
|
||||||
|
// Парсинг Excel-листов, маппинг колонок на ПВР
|
||||||
|
// Зависит от: ЗагрузкаДанныхИзExcel_ЧтениеЭксель
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция НомерМесяцаВТекст(НомерМесяца)
|
||||||
|
Массив = Новый Массив;
|
||||||
|
Массив.Добавить("Январь"); Массив.Добавить("Февраль");
|
||||||
|
Массив.Добавить("Март"); Массив.Добавить("Апрель");
|
||||||
|
Массив.Добавить("Май"); Массив.Добавить("Июнь");
|
||||||
|
Массив.Добавить("Июль"); Массив.Добавить("Август");
|
||||||
|
Массив.Добавить("Сентябрь"); Массив.Добавить("Октябрь");
|
||||||
|
Массив.Добавить("Ноябрь"); Массив.Добавить("Декабрь");
|
||||||
|
Если НомерМесяца >= 1 И НомерМесяца <= 12 Тогда
|
||||||
|
Возврат Массив[НомерМесяца - 1];
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат "";
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция СтрокаМесяцаНаЛистеСотрудника()
|
||||||
|
Смещение = Объект.МесяцЗагрузки;
|
||||||
|
Если Не ЗначениеЗаполнено(Смещение) Тогда Смещение = 1; КонецЕсли;
|
||||||
|
Возврат 35 + Смещение;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция НайтиЛистСотрудника(Книга, ЛистРасчет, НомерСтроки)
|
||||||
|
Формула = ЛистРасчет.Cells(НомерСтроки, 1).Formula;
|
||||||
|
Если ЗначениеЗаполнено(Формула) Тогда
|
||||||
|
ИмяЛиста = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ИзвлечьИмяЛистаИзФормулы(Формула);
|
||||||
|
Если ЗначениеЗаполнено(ИмяЛиста) Тогда
|
||||||
|
Возврат ЗагрузкаДанныхИзExcel_ЧтениеЭксель.НайтиЛист(Книга, ИмяЛиста);
|
||||||
|
КонецЕсли;
|
||||||
|
КонецЕсли;
|
||||||
|
ФИО = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуСтрока(ЛистРасчет, НомерСтроки, 1);
|
||||||
|
Если ЗначениеЗаполнено(ФИО) Тогда
|
||||||
|
Возврат ЗагрузкаДанныхИзExcel_ЧтениеЭксель.НайтиЛист(Книга, ФИО);
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ПрочитатьКарточкуСотрудника(ЛистСотрудника)
|
||||||
|
Данные = Новый Структура;
|
||||||
|
Данные.Вставить("ФИО", ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 3));
|
||||||
|
Данные.Вставить("ИНН", "");
|
||||||
|
Данные.Вставить("СНИЛС", "");
|
||||||
|
Данные.Вставить("ЛицевойСчетВБанке", ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 4));
|
||||||
|
Данные.Вставить("ВидЗанятости", ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуСтрока(ЛистСотрудника, 5, 1));
|
||||||
|
Данные.Вставить("АдресРегистрации", "");
|
||||||
|
Возврат Данные;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ПрочитатьРасчетныеДанные(ЛистРасчет, Ном, ФИО)
|
||||||
|
Ч = ЗагрузкаДанныхИзExcel_ЧтениеЭксель;
|
||||||
|
С = Новый Структура;
|
||||||
|
С.Вставить("ФИО", ФИО);
|
||||||
|
С.Вставить("Должность", Ч.ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 2));
|
||||||
|
С.Вставить("СчетБК", Ч.ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 3));
|
||||||
|
С.Вставить("ВидЗанятости", Ч.ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 4));
|
||||||
|
С.Вставить("Оклад", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 8, ФИО));
|
||||||
|
С.Вставить("КоличествоСтавок", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 7, ФИО));
|
||||||
|
С.Вставить("ОтработаноДней", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 6, ФИО));
|
||||||
|
С.Вставить("ЧасыДежурства", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 9, ФИО));
|
||||||
|
С.Вставить("ЧасыНочные", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 10, ФИО));
|
||||||
|
С.Вставить("ЧасыПраздничные", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 11, ФИО));
|
||||||
|
С.Вставить("РабочиеЧасыПоТабелю", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 12, ФИО));
|
||||||
|
С.Вставить("ИзРасчетаМесячногоОкладаДни", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 13, ФИО));
|
||||||
|
С.Вставить("ДоплатаСовместительство", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 14, ФИО));
|
||||||
|
С.Вставить("ДоплатаСовмещениеПроцент", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 15, ФИО));
|
||||||
|
С.Вставить("ДоплатаИнтенсивность", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 16, ФИО));
|
||||||
|
С.Вставить("ИзРасчетаМесячногоОкладаЧасы", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 17, ФИО));
|
||||||
|
С.Вставить("ДоплатаНочные", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 18, ФИО));
|
||||||
|
С.Вставить("ДоплатаПраздничные", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 19, ФИО));
|
||||||
|
С.Вставить("ЗаСтаж", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 20, ФИО));
|
||||||
|
С.Вставить("НадбавкаЗаКатегорию", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 21, ФИО));
|
||||||
|
С.Вставить("НадбавкаЗаВредность", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 22, ФИО));
|
||||||
|
С.Вставить("ПовышающийКоэффициент", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 23, ФИО));
|
||||||
|
С.Вставить("СтимулирующиеВыплаты", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 24, ФИО));
|
||||||
|
С.Вставить("СтимулирующаяНадбавка", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 25, ФИО));
|
||||||
|
С.Вставить("РайонныйКоэффициент", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 26, ФИО));
|
||||||
|
С.Вставить("ВыплатыПоУказу597", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 27, ФИО));
|
||||||
|
С.Вставить("ПремияРазовая", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 28, ФИО));
|
||||||
|
С.Вставить("БольничныйЛистЗаСчетПредприятия", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 29, ФИО));
|
||||||
|
С.Вставить("ДоплатаПрофактиву", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 30, ФИО));
|
||||||
|
С.Вставить("ПусковыеОбсервация", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 31, ФИО));
|
||||||
|
С.Вставить("Отпуск", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 32, ФИО));
|
||||||
|
С.Вставить("КомпенсацияЗаОтпуск", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 33, ФИО));
|
||||||
|
С.Вставить("ПрочиеКомандировочныйУчебныйОтпуск", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 34, ФИО));
|
||||||
|
С.Вставить("ВыходноеПособие", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 35, ФИО));
|
||||||
|
С.Вставить("ПоУходуЗаРебенкомИнвалидом", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 36, ФИО));
|
||||||
|
С.Вставить("ДоплатаДоМРОТ", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 37, ФИО));
|
||||||
|
С.Вставить("Родовые", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 38, ФИО));
|
||||||
|
С.Вставить("ИтогоНачислено", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 39, ФИО));
|
||||||
|
С.Вставить("НДФЛ", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 40, ФИО));
|
||||||
|
С.Вставить("ПрофВзнос", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 41, ФИО));
|
||||||
|
С.Вставить("ИсполнительныеДокументы", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 42, ФИО));
|
||||||
|
С.Вставить("Аванс", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 43, ФИО));
|
||||||
|
С.Вставить("ПФСофинансирование", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 44, ФИО));
|
||||||
|
С.Вставить("ПремияУдержание", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 45, ФИО));
|
||||||
|
С.Вставить("Касса1", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 46, ФИО));
|
||||||
|
С.Вставить("Касса2", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 47, ФИО));
|
||||||
|
С.Вставить("Касса3", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 48, ФИО));
|
||||||
|
С.Вставить("ПособиеДо3ЛетУдержание", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 49, ФИО));
|
||||||
|
С.Вставить("БезналичныеПеречисления", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 50, ФИО));
|
||||||
|
С.Вставить("ВозвратВКассу", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 51, ФИО));
|
||||||
|
С.Вставить("Депонент", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 52, ФИО));
|
||||||
|
С.Вставить("ОстатокНаНачало", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 54, ФИО));
|
||||||
|
С.Вставить("ВсегоНаРуки", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 55, ФИО));
|
||||||
|
С.Вставить("ЗарплатаЗаПервуюПоловину", 0); // TODO: определить колонку
|
||||||
|
С.Вставить("ПремияАванс", 0); // TODO: определить колонку
|
||||||
|
С.Вставить("ВыплатыВМежрасчетный", 0); // TODO: определить колонку
|
||||||
|
С.Вставить("ИтогоУдержано",
|
||||||
|
С.НДФЛ + С.ПрофВзнос + С.ИсполнительныеДокументы + С.ПФСофинансирование
|
||||||
|
+ С.ПремияУдержание + С.ПособиеДо3ЛетУдержание + С.Депонент);
|
||||||
|
С.Вставить("ИтогоВыплачено",
|
||||||
|
С.Аванс + С.Касса1 + С.Касса2 + С.Касса3
|
||||||
|
+ С.БезналичныеПеречисления + С.ВозвратВКассу);
|
||||||
|
Возврат С;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ПрочитатьНДФЛСоЛиста(ЛистСотрудника, ФИО)
|
||||||
|
Ч = ЗагрузкаДанныхИзExcel_ЧтениеЭксель;
|
||||||
|
СД = СтрокаМесяцаНаЛистеСотрудника();
|
||||||
|
Если СД = 0 Тогда Возврат Неопределено; КонецЕсли;
|
||||||
|
Если Не ЗначениеЗаполнено(ФИО) Тогда Возврат Неопределено; КонецЕсли;
|
||||||
|
С = Новый Структура;
|
||||||
|
С.Вставить("ФИО", ФИО);
|
||||||
|
С.Вставить("МесяцРасчета", Ч.ПрочитатьЯчейкуСтрока(ЛистСотрудника, СД, 1));
|
||||||
|
С.Вставить("СуммаВаловогоДохода", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 4, ФИО));
|
||||||
|
С.Вставить("СуммаВаловогоДоходаСНачалаГода", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 6, ФИО));
|
||||||
|
С.Вставить("СкидкаДляНДФЛЗаМесяц", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 8, ФИО));
|
||||||
|
С.Вставить("СкидкаДляНДФЛЗаГод", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 9, ФИО));
|
||||||
|
С.Вставить("СкидкаДляСВЗаМесяц", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 10, ФИО));
|
||||||
|
С.Вставить("ВычетНаРаботникаЗаМесяц", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 12, ФИО));
|
||||||
|
С.Вставить("ВычетНаИждивенцевЗаМесяц", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 13, ФИО));
|
||||||
|
С.Вставить("ВсегоВычетовЗаМесяц", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 14, ФИО));
|
||||||
|
С.Вставить("ОблагаемыйДоходЗаМесяц", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 15, ФИО));
|
||||||
|
С.Вставить("ОблагаемыйДоходЗаГод", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 16, ФИО));
|
||||||
|
С.Вставить("НачисленныйНДФЛЗаГод", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 17, ФИО));
|
||||||
|
С.Вставить("ИтогоНДФЛЗаМесяц", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 18, ФИО));
|
||||||
|
С.Вставить("НалоговаяБазаПоСВЗаМесяц", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 23, ФИО));
|
||||||
|
С.Вставить("ИтогоФСС", Ч.ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 37, ФИО));
|
||||||
|
Возврат С;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ПрочитатьВзносыИзРасчета(ЛистРасчет, Ном, ФИО)
|
||||||
|
Ч = ЗагрузкаДанныхИзExcel_ЧтениеЭксель;
|
||||||
|
С = Новый Структура;
|
||||||
|
С.Вставить("ФИО", ФИО);
|
||||||
|
С.Вставить("ДТ6Процент", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 58, ФИО));
|
||||||
|
С.Вставить("ДТ4Процент", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 59, ФИО));
|
||||||
|
С.Вставить("ПФСтраховая", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 60, ФИО));
|
||||||
|
С.Вставить("ФССФОМС", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 61, ФИО));
|
||||||
|
С.Вставить("НСПЗ", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 62, ФИО));
|
||||||
|
С.Вставить("Итого", Ч.ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 63, ФИО));
|
||||||
|
С.Вставить("НалоговаяБазаПоСВЗаМесяц", 0);
|
||||||
|
С.Вставить("ИтогоФСС", 0);
|
||||||
|
Возврат С;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ОределитьГодЗагрузки(ЛистРасчет)
|
||||||
|
ГодЗначение = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуЧисло(ЛистРасчет, 3, 1, "");
|
||||||
|
Если ГодЗначение > 0 Тогда
|
||||||
|
Возврат Цел(ГодЗначение);
|
||||||
|
КонецЕсли;
|
||||||
|
ГодЗначение = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуЧисло(ЛистРасчет, 4, 1, "");
|
||||||
|
Если ГодЗначение > 2000 Тогда
|
||||||
|
Возврат Цел(ГодЗначение);
|
||||||
|
КонецЕсли;
|
||||||
|
Возврат 0;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ОпределитьОрганизацию(ЛистРасчет)
|
||||||
|
Возврат СокрЛП(Строка(ЛистРасчет.Cells(4, 20).Value));
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ОпределитьСтатьюФинансирования(ЛистРасчет)
|
||||||
|
Возврат СокрЛП(Строка(ЛистРасчет.Cells(8, 20).Value));
|
||||||
|
КонецФункции
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:v8="http://v8.1c.ru/8.1/data/core">
|
||||||
|
<CommonModule uuid="8844f26b-b375-4a06-accc-1f45c502fb29">
|
||||||
|
<Properties>
|
||||||
|
<Name>ЗагрузкаДанныхИзExcel_ЧтениеЭксель</Name>
|
||||||
|
<Synonym>
|
||||||
|
<v8:item>
|
||||||
|
<v8:lang>ru</v8:lang>
|
||||||
|
<v8:content>Чтение Excel (Клиент)</v8:content>
|
||||||
|
</v8:item>
|
||||||
|
</Synonym>
|
||||||
|
<Comment/>
|
||||||
|
<Global>false</Global>
|
||||||
|
<Server>false</Server>
|
||||||
|
</Properties>
|
||||||
|
</CommonModule>
|
||||||
|
</MetaDataObject>
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
// Клиентский модуль для COM-взаимодействия с Excel
|
||||||
|
// Содержит только COM-вызовы
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ОткрытьФайлExcel(ПутьКФайлу)
|
||||||
|
Попытка
|
||||||
|
Excel = Новый COMОбъект("Excel.Application");
|
||||||
|
Excel.Visible = Ложь;
|
||||||
|
Excel.DisplayAlerts = Ложь;
|
||||||
|
Книга = Excel.Workbooks.Open(ПутьКФайлу);
|
||||||
|
Возврат Новый Структура("Книга, Excel", Книга, Excel);
|
||||||
|
Исключение
|
||||||
|
Сообщить("Не удалось открыть Excel: " + ОписаниеОшибки());
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецПопытки;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Процедура ЗакрытьExcel(КонтекстExcel, ВременныйФайл)
|
||||||
|
Если КонтекстExcel = Неопределено Тогда Возврат; КонецЕсли;
|
||||||
|
Попытка
|
||||||
|
КонтекстExcel.Книга.Close(Ложь);
|
||||||
|
КонтекстExcel.Excel.Quit();
|
||||||
|
Исключение
|
||||||
|
КонецПопытки;
|
||||||
|
Если ЗначениеЗаполнено(ВременныйФайл) Тогда УдалитьФайлы(ВременныйФайл); КонецЕсли;
|
||||||
|
КонецПроцедуры
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ПрочитатьЯчейкуЧисло(Лист, Строка, Колонка, КонтекстОшибки)
|
||||||
|
Попытка
|
||||||
|
Значение = Лист.Cells(Строка, Колонка).Value;
|
||||||
|
Если Значение = Неопределено ИЛИ Значение = "" Тогда Возврат 0; КонецЕсли;
|
||||||
|
Возврат Число(Значение);
|
||||||
|
Исключение
|
||||||
|
Сообщить("Ошибка чтения числа: " + КонтекстОшибки + " | строка " + Строка + " колонка " + Колонка);
|
||||||
|
Возврат 0;
|
||||||
|
КонецПопытки;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ПрочитатьЯчейкуСтрока(Лист, Строка, Колонка)
|
||||||
|
Попытка
|
||||||
|
Значение = Лист.Cells(Строка, Колонка).Value;
|
||||||
|
Если Значение = Неопределено Тогда Возврат ""; КонецЕсли;
|
||||||
|
Возврат СокрЛП("" + Значение);
|
||||||
|
Исключение
|
||||||
|
Возврат "";
|
||||||
|
КонецПопытки;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция ИзвлечьИмяЛистаИзФормулы(Формула)
|
||||||
|
Если Формула = Неопределено Тогда Возврат ""; КонецЕсли;
|
||||||
|
Текст = СокрЛП("" + Формула);
|
||||||
|
Если Не СтрНачинаетсяС(Текст, "='") Тогда Возврат ""; КонецЕсли;
|
||||||
|
Поз = СтрНайти(Текст, "'!");
|
||||||
|
Если Поз = 0 Тогда Возврат ""; КонецЕсли;
|
||||||
|
Возврат Сред(Текст, 3, Поз - 3);
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
|
&НаКлиенте
|
||||||
|
Функция НайтиЛист(Книга, ИмяЛиста)
|
||||||
|
Для Каждого Лист Из Книга.Sheets Цикл
|
||||||
|
Если ВРег(Лист.Name) = ВРег(ИмяЛиста) Тогда Возврат Лист; КонецЕсли;
|
||||||
|
КонецЦикла;
|
||||||
|
Возврат Неопределено;
|
||||||
|
КонецФункции
|
||||||
@@ -130,5 +130,8 @@
|
|||||||
<Metadata name="DataProcessor.ЗагрузкаДанныхИзExcel.ObjectModule" id="f1e2d3c4-b5a6-7890-abcd-ef1234567890.0" configVersion="45688db0e74bd391fe23887a2d523e05814c9b60"/>
|
<Metadata name="DataProcessor.ЗагрузкаДанныхИзExcel.ObjectModule" id="f1e2d3c4-b5a6-7890-abcd-ef1234567890.0" configVersion="45688db0e74bd391fe23887a2d523e05814c9b60"/>
|
||||||
<Metadata name="Language.Русский" id="fa05057b-734b-49ef-8c58-5cc468580f33" configVersion="d445a81521243ad274dc3237022bcfeb0b640f59"/>
|
<Metadata name="Language.Русский" id="fa05057b-734b-49ef-8c58-5cc468580f33" configVersion="d445a81521243ad274dc3237022bcfeb0b640f59"/>
|
||||||
<Metadata name="Subsystem.Зарплата" id="55555555-5555-5555-5555-555555555555" configVersion="55c502e5fb642df4c059ed63fea339204c4a2334"/>
|
<Metadata name="Subsystem.Зарплата" id="55555555-5555-5555-5555-555555555555" configVersion="55c502e5fb642df4c059ed63fea339204c4a2334"/>
|
||||||
|
<Metadata name="CommonModule.ЗагрузкаДанныхИзExcel_ЧтениеЭксель" id="b393308e-13c2-4dfc-9045-3293b4af20c2" configVersion="a9cc68ae2ca9454697c22bb7a7ca6120"/>
|
||||||
|
<Metadata name="CommonModule.ЗагрузкаДанныхИзExcel_МаппингДанных" id="45ce4b90-17e1-4977-8a5d-e2342603c7eb" configVersion="b343ef1b5f3a47228dda8e9d6979129d"/>
|
||||||
|
<Metadata name="CommonModule.ЗагрузкаДанныхИзExcel_ЗаписьВРегистры" id="04ba0cd9-1384-4364-ab99-07b6f60cab13" configVersion="48b309c2a7264f18b4e7026856c0726e"/>
|
||||||
</ConfigVersions>
|
</ConfigVersions>
|
||||||
</ConfigDumpInfo>
|
</ConfigDumpInfo>
|
||||||
+5
-2
@@ -56,7 +56,7 @@
|
|||||||
<ScriptVariant>Russian</ScriptVariant>
|
<ScriptVariant>Russian</ScriptVariant>
|
||||||
<DefaultRoles/>
|
<DefaultRoles/>
|
||||||
<Vendor>ООО "Профи-Софт", код партнера 42575-13, г.Байконур.</Vendor>
|
<Vendor>ООО "Профи-Софт", код партнера 42575-13, г.Байконур.</Vendor>
|
||||||
<Version>3.0.0.71</Version>
|
<Version>3.0.0.75</Version>
|
||||||
<Caption/>
|
<Caption/>
|
||||||
<ShortCaption/>
|
<ShortCaption/>
|
||||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||||
@@ -95,6 +95,9 @@
|
|||||||
<Catalog>СтатьиРасходовЗарплата</Catalog>
|
<Catalog>СтатьиРасходовЗарплата</Catalog>
|
||||||
<Catalog>СтатьиФинансированияЗарплата</Catalog>
|
<Catalog>СтатьиФинансированияЗарплата</Catalog>
|
||||||
<DataProcessor>ЗагрузкаДанныхИзExcel</DataProcessor>
|
<DataProcessor>ЗагрузкаДанныхИзExcel</DataProcessor>
|
||||||
</ChildObjects>
|
<CommonModule>ЗагрузкаДанныхИзExcel_ЧтениеЭксель</CommonModule>
|
||||||
|
<CommonModule>ЗагрузкаДанныхИзExcel_МаппингДанных</CommonModule>
|
||||||
|
<CommonModule>ЗагрузкаДанныхИзExcel_ЗаписьВРегистры</CommonModule>
|
||||||
|
</ChildObjects>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
</MetaDataObject>
|
</MetaDataObject>
|
||||||
@@ -26,7 +26,6 @@
|
|||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Состояние("Инициализация...", 0);
|
Состояние("Инициализация...", 0);
|
||||||
Прогресс = 0;
|
|
||||||
СтатусЗагрузки = "Подготовка...";
|
СтатусЗагрузки = "Подготовка...";
|
||||||
ПрочитатьExcelНаКлиенте();
|
ПрочитатьExcelНаКлиенте();
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
@@ -37,304 +36,37 @@
|
|||||||
Сообщить("Нет данных для записи!");
|
Сообщить("Нет данных для записи!");
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
ЗаписатьДанныеНаСервере(Объект._ГодЗагрузки, Объект._ОрганизацияНаименование, Объект._СтатьяФинансированияНаименование, Объект._СтатьяРасходовКод);
|
ЗагрузкаДанныхИзExcel_ЗаписьВРегистры.ЗаписатьДанные(Объект._ГодЗагрузки, Объект._ОрганизацияНаименование, Объект._СтатьяФинансированияНаименование, Объект._СтатьяРасходовКод);
|
||||||
Сообщить("Данные записаны!");
|
Сообщить("Данные записаны!");
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|
||||||
#Область ЧтениеExcel_Домен
|
#Область ОсновнаяПроцедура
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция ОткрытьФайлExcel(ПутьКФайлу)
|
|
||||||
Попытка
|
|
||||||
Excel = Новый COMОбъект("Excel.Application");
|
|
||||||
Excel.Visible = Ложь;
|
|
||||||
Excel.DisplayAlerts = Ложь;
|
|
||||||
Книга = Excel.Workbooks.Open(ПутьКФайлу);
|
|
||||||
Возврат Новый Структура("Книга, Excel", Книга, Excel);
|
|
||||||
Исключение
|
|
||||||
Сообщить("Не удалось открыть Excel: " + ОписаниеОшибки());
|
|
||||||
Возврат Неопределено;
|
|
||||||
КонецПопытки;
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Процедура ЗакрытьExcel(КонтекстExcel, ВременныйФайл)
|
|
||||||
Если КонтекстExcel = Неопределено Тогда Возврат; КонецЕсли;
|
|
||||||
Попытка
|
|
||||||
КонтекстExcel.Книга.Close(Ложь);
|
|
||||||
КонтекстExcel.Excel.Quit();
|
|
||||||
Исключение
|
|
||||||
КонецПопытки;
|
|
||||||
Если ЗначениеЗаполнено(ВременныйФайл) Тогда УдалитьФайлы(ВременныйФайл); КонецЕсли;
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция ПрочитатьЯчейкуЧисло(Лист, Строка, Колонка, КонтекстОшибки)
|
|
||||||
Попытка
|
|
||||||
Значение = Лист.Cells(Строка, Колонка).Value;
|
|
||||||
Если Значение = Неопределено ИЛИ Значение = "" Тогда Возврат 0; КонецЕсли;
|
|
||||||
Возврат Число(Значение);
|
|
||||||
Исключение
|
|
||||||
Сообщить("Ошибка чтения числа: " + КонтекстОшибки + " | строка " + Строка + " колонка " + Колонка);
|
|
||||||
Возврат 0;
|
|
||||||
КонецПопытки;
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция ПрочитатьЯчейкуСтрока(Лист, Строка, Колонка)
|
|
||||||
Попытка
|
|
||||||
Значение = Лист.Cells(Строка, Колонка).Value;
|
|
||||||
Если Значение = Неопределено Тогда Возврат ""; КонецЕсли;
|
|
||||||
Возврат СокрЛП("" + Значение);
|
|
||||||
Исключение
|
|
||||||
Возврат "";
|
|
||||||
КонецПопытки;
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
// Извлекает имя листа из формулы вида ='ИмяЛиста'!C2
|
|
||||||
&НаКлиенте
|
|
||||||
Функция ИзвлечьИмяЛистаИзФормулы(Формула)
|
|
||||||
Если Формула = Неопределено Тогда Возврат ""; КонецЕсли;
|
|
||||||
Текст = СокрЛП("" + Формула);
|
|
||||||
Если Не СтрНачинаетсяС(Текст, "='") Тогда Возврат ""; КонецЕсли;
|
|
||||||
Поз = СтрНайти(Текст, "'!");
|
|
||||||
Если Поз = 0 Тогда Возврат ""; КонецЕсли;
|
|
||||||
Возврат Сред(Текст, 3, Поз - 3);
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция НайтиЛист(Книга, ИмяЛиста)
|
|
||||||
Для Каждого Лист Из Книга.Sheets Цикл
|
|
||||||
Если ВРег(Лист.Name) = ВРег(ИмяЛиста) Тогда Возврат Лист; КонецЕсли;
|
|
||||||
КонецЦикла;
|
|
||||||
Возврат Неопределено;
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция НомерМесяцаВТекст(НомерМесяца)
|
|
||||||
Массив = Новый Массив;
|
|
||||||
Массив.Добавить("Январь"); Массив.Добавить("Февраль");
|
|
||||||
Массив.Добавить("Март"); Массив.Добавить("Апрель");
|
|
||||||
Массив.Добавить("Май"); Массив.Добавить("Июнь");
|
|
||||||
Массив.Добавить("Июль"); Массив.Добавить("Август");
|
|
||||||
Массив.Добавить("Сентябрь"); Массив.Добавить("Октябрь");
|
|
||||||
Массив.Добавить("Ноябрь"); Массив.Добавить("Декабрь");
|
|
||||||
Если НомерМесяца >= 1 И НомерМесяца <= 12 Тогда
|
|
||||||
Возврат Массив[НомерМесяца - 1];
|
|
||||||
КонецЕсли;
|
|
||||||
Возврат "";
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
#КонецОбласти
|
|
||||||
|
|
||||||
#Область ЧтениеДанныхСотрудника_Домен
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция НайтиЛистСотрудника(Книга, ЛистРасчет, НомерСтроки)
|
|
||||||
Формула = ЛистРасчет.Cells(НомерСтроки, 1).Formula;
|
|
||||||
Если ЗначениеЗаполнено(Формула) Тогда
|
|
||||||
ИмяЛиста = ИзвлечьИмяЛистаИзФормулы(Формула);
|
|
||||||
Если ЗначениеЗаполнено(ИмяЛиста) Тогда
|
|
||||||
Возврат НайтиЛист(Книга, ИмяЛиста);
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
ФИО = ПрочитатьЯчейкуСтрока(ЛистРасчет, НомерСтроки, 1);
|
|
||||||
Если ЗначениеЗаполнено(ФИО) Тогда
|
|
||||||
Возврат НайтиЛист(Книга, ФИО);
|
|
||||||
КонецЕсли;
|
|
||||||
Возврат Неопределено;
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция СтрокаМесяцаНаЛистеСотрудника()
|
|
||||||
Смещение = Объект.МесяцЗагрузки;
|
|
||||||
Если Не ЗначениеЗаполнено(Смещение) Тогда Смещение = 1; КонецЕсли;
|
|
||||||
Возврат 35 + Смещение;
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция ПрочитатьКарточкуСотрудника(ЛистСотрудника)
|
|
||||||
Данные = Новый Структура;
|
|
||||||
Данные.Вставить("ФИО", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 3));
|
|
||||||
Данные.Вставить("ИНН", "");
|
|
||||||
Данные.Вставить("СНИЛС", "");
|
|
||||||
Данные.Вставить("ЛицевойСчетВБанке", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 3, 4));
|
|
||||||
Данные.Вставить("ВидЗанятости", ПрочитатьЯчейкуСтрока(ЛистСотрудника, 5, 1));
|
|
||||||
Данные.Вставить("АдресРегистрации", "");
|
|
||||||
Возврат Данные;
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция ПрочитатьРасчетныеДанныеИзРасчета(ЛистРасчет, Ном, ФИО)
|
|
||||||
С = Новый Структура;
|
|
||||||
С.Вставить("ФИО", ФИО);
|
|
||||||
С.Вставить("Должность", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 2));
|
|
||||||
С.Вставить("СчетБК", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 3));
|
|
||||||
С.Вставить("ВидЗанятости", ПрочитатьЯчейкуСтрока(ЛистРасчет, Ном, 4));
|
|
||||||
С.Вставить("Оклад", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 8, ФИО));
|
|
||||||
С.Вставить("КоличествоСтавок", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 7, ФИО));
|
|
||||||
С.Вставить("ОтработаноДней", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 6, ФИО));
|
|
||||||
С.Вставить("ЧасыДежурства", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 9, ФИО));
|
|
||||||
С.Вставить("ЧасыНочные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 10, ФИО));
|
|
||||||
С.Вставить("ЧасыПраздничные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 11, ФИО));
|
|
||||||
С.Вставить("РабочиеЧасыПоТабелю", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 12, ФИО));
|
|
||||||
С.Вставить("ИзРасчетаМесячногоОкладаДни", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 13, ФИО));
|
|
||||||
С.Вставить("ДоплатаСовместительство", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 14, ФИО));
|
|
||||||
С.Вставить("ДоплатаСовмещениеПроцент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 15, ФИО));
|
|
||||||
С.Вставить("ДоплатаИнтенсивность", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 16, ФИО));
|
|
||||||
С.Вставить("ИзРасчетаМесячногоОкладаЧасы", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 17, ФИО));
|
|
||||||
С.Вставить("ДоплатаНочные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 18, ФИО));
|
|
||||||
С.Вставить("ДоплатаПраздничные", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 19, ФИО));
|
|
||||||
С.Вставить("ЗаСтаж", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 20, ФИО));
|
|
||||||
С.Вставить("НадбавкаЗаКатегорию", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 21, ФИО));
|
|
||||||
С.Вставить("НадбавкаЗаВредность", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 22, ФИО));
|
|
||||||
С.Вставить("ПовышающийКоэффициент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 23, ФИО));
|
|
||||||
С.Вставить("СтимулирующиеВыплаты", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 24, ФИО));
|
|
||||||
С.Вставить("СтимулирующаяНадбавка", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 25, ФИО));
|
|
||||||
С.Вставить("РайонныйКоэффициент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 26, ФИО));
|
|
||||||
С.Вставить("ВыплатыПоУказу597", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 27, ФИО));
|
|
||||||
С.Вставить("ПремияРазовая", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 28, ФИО));
|
|
||||||
С.Вставить("БольничныйЛистЗаСчетПредприятия", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 29, ФИО));
|
|
||||||
С.Вставить("ДоплатаПрофактиву", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 30, ФИО));
|
|
||||||
С.Вставить("ПусковыеОбсервация", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 31, ФИО));
|
|
||||||
С.Вставить("Отпуск", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 32, ФИО));
|
|
||||||
С.Вставить("КомпенсацияЗаОтпуск", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 33, ФИО));
|
|
||||||
С.Вставить("ПрочиеКомандировочныйУчебныйОтпуск", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 34, ФИО));
|
|
||||||
С.Вставить("ВыходноеПособие", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 35, ФИО));
|
|
||||||
С.Вставить("ПоУходуЗаРебенкомИнвалидом", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 36, ФИО));
|
|
||||||
С.Вставить("ДоплатаДоМРОТ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 37, ФИО));
|
|
||||||
С.Вставить("Родовые", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 38, ФИО));
|
|
||||||
// Итоги
|
|
||||||
С.Вставить("ИтогоНачислено", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 39, ФИО));
|
|
||||||
С.Вставить("НДФЛ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 40, ФИО));
|
|
||||||
С.Вставить("ПрофВзнос", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 41, ФИО));
|
|
||||||
С.Вставить("ИсполнительныеДокументы", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 42, ФИО));
|
|
||||||
С.Вставить("Аванс", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 43, ФИО));
|
|
||||||
С.Вставить("ПФСофинансирование", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 44, ФИО));
|
|
||||||
С.Вставить("ПремияУдержание", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 45, ФИО));
|
|
||||||
С.Вставить("Касса1", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 46, ФИО));
|
|
||||||
С.Вставить("Касса2", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 47, ФИО));
|
|
||||||
С.Вставить("Касса3", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 48, ФИО));
|
|
||||||
С.Вставить("ПособиеДо3ЛетУдержание", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 49, ФИО));
|
|
||||||
С.Вставить("БезналичныеПеречисления", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 50, ФИО));
|
|
||||||
С.Вставить("ВозвратВКассу", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 51, ФИО));
|
|
||||||
С.Вставить("Депонент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 52, ФИО));
|
|
||||||
С.Вставить("ОстатокНаНачало", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 54, ФИО));
|
|
||||||
С.Вставить("ВсегоНаРуки", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 55, ФИО));
|
|
||||||
// TODO: ЗарплатаЗаПервуюПоловину, ПремияАванс, ВыплатыВМежрасчетный — колонки не определены
|
|
||||||
// Сейчас перезаписывают ПФСофинансирование/ПремияУдержание/Касса1 (кол. 44/45/46)
|
|
||||||
С.Вставить("ЗарплатаЗаПервуюПоловину", 0);
|
|
||||||
С.Вставить("ПремияАванс", 0);
|
|
||||||
С.Вставить("ВыплатыВМежрасчетный", 0);
|
|
||||||
// Расчёт итогов
|
|
||||||
С.Вставить("ИтогоУдержано",
|
|
||||||
С.НДФЛ + С.ПрофВзнос + С.ИсполнительныеДокументы + С.ПФСофинансирование
|
|
||||||
+ С.ПремияУдержание + С.ПособиеДо3ЛетУдержание + С.Депонент);
|
|
||||||
С.Вставить("ИтогоВыплачено",
|
|
||||||
С.Аванс + С.Касса1 + С.Касса2 + С.Касса3
|
|
||||||
+ С.БезналичныеПеречисления + С.ВозвратВКассу);
|
|
||||||
Возврат С;
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция ПрочитатьНДФЛСоЛиста(ЛистСотрудника, ФИО)
|
|
||||||
Если ЛистСотрудника = Неопределено Тогда Возврат Неопределено; КонецЕсли;
|
|
||||||
ЕстьБлок = Ложь;
|
|
||||||
Для Стр = 30 По 32 Цикл
|
|
||||||
Текст = НРег(ПрочитатьЯчейкуСтрока(ЛистСотрудника, Стр, 1));
|
|
||||||
Если СтрНайти(Текст, "ндфл") > 0 ИЛИ СтрНайти(Текст, "взнос") > 0 Тогда
|
|
||||||
ЕстьБлок = Истина; Прервать;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЦикла;
|
|
||||||
Если Не ЕстьБлок Тогда
|
|
||||||
Если СтрНайти(НРег(ПрочитатьЯчейкуСтрока(ЛистСотрудника, 36, 1)), "январь") = 0 Тогда
|
|
||||||
Возврат Неопределено;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
СД = СтрокаМесяцаНаЛистеСотрудника();
|
|
||||||
НДФЛ = Новый Структура;
|
|
||||||
НДФЛ.Вставить("ФИО", ФИО);
|
|
||||||
НДФЛ.Вставить("МесяцРасчета", ПрочитатьЯчейкуСтрока(ЛистСотрудника, СД, 1));
|
|
||||||
НДФЛ.Вставить("СуммаВаловогоДохода", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 4, ФИО));
|
|
||||||
НДФЛ.Вставить("СуммаВаловогоДоходаСНачалаГода", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 6, ФИО));
|
|
||||||
НДФЛ.Вставить("СкидкаДляНДФЛЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 8, ФИО));
|
|
||||||
НДФЛ.Вставить("СкидкаДляНДФЛЗаГод", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 9, ФИО));
|
|
||||||
НДФЛ.Вставить("СкидкаДляСВЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 10, ФИО));
|
|
||||||
НДФЛ.Вставить("ВычетНаРаботникаЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 12, ФИО));
|
|
||||||
НДФЛ.Вставить("ВычетНаРаботникаЗаГод", 0);
|
|
||||||
НДФЛ.Вставить("ВычетНаИждивенцевЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 13, ФИО));
|
|
||||||
НДФЛ.Вставить("ВсегоВычетовЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 14, ФИО));
|
|
||||||
НДФЛ.Вставить("ОблагаемыйДоходЗаМесяц", 0);
|
|
||||||
НДФЛ.Вставить("ОблагаемыйДоходЗаГод", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 15, ФИО));
|
|
||||||
НДФЛ.Вставить("НачисленныйНДФЛЗаГод", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 16, ФИО));
|
|
||||||
НДФЛ.Вставить("ИтогоНДФЛЗаМесяц", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СД, 18, ФИО));
|
|
||||||
Возврат НДФЛ;
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
&НаКлиенте
|
|
||||||
Функция ПрочитатьВзносыИзРасчета(ЛистРасчет, Ном, ФИО)
|
|
||||||
СВ = ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 63, ФИО);
|
|
||||||
Если СВ <= 0 Тогда Возврат Неопределено; КонецЕсли;
|
|
||||||
Стр = Новый Структура;
|
|
||||||
Стр.Вставить("ФИО", ФИО);
|
|
||||||
Стр.Вставить("ДТ6Процент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 58, ФИО));
|
|
||||||
Стр.Вставить("ДТ4Процент", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 59, ФИО));
|
|
||||||
Стр.Вставить("ПФСтраховая", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 60, ФИО));
|
|
||||||
Стр.Вставить("ФССФОМС", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 61, ФИО));
|
|
||||||
Стр.Вставить("НСПЗ", ПрочитатьЯчейкуЧисло(ЛистРасчет, Ном, 62, ФИО));
|
|
||||||
Стр.Вставить("Итого", СВ);
|
|
||||||
Возврат Стр;
|
|
||||||
КонецФункции
|
|
||||||
|
|
||||||
#КонецОбласти
|
|
||||||
|
|
||||||
#Область ОсновнаяПроцедура_Домен
|
|
||||||
|
|
||||||
&НаКлиенте
|
&НаКлиенте
|
||||||
Процедура ПрочитатьExcelНаКлиенте()
|
Процедура ПрочитатьExcelНаКлиенте()
|
||||||
Состояние("Копирование файла...", 5);
|
КонтекстExcel = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ОткрытьФайлExcel(Объект.ПутьКФайлу);
|
||||||
ВременныйФайл = КаталогВременныхФайлов() + "temp_" + Формат(ТекущаяДата(), "ДФ=yyyyMMddHHmmss") + ".xls";
|
Если КонтекстExcel = Неопределено Тогда Возврат; КонецЕсли;
|
||||||
КопироватьФайл(Объект.ПутьКФайлу, ВременныйФайл);
|
|
||||||
КонтекстExcel = ОткрытьФайлExcel(ВременныйФайл);
|
|
||||||
Если КонтекстExcel = Неопределено Тогда УдалитьФайлы(ВременныйФайл); Возврат; КонецЕсли;
|
|
||||||
|
|
||||||
ЛистРасчет = НайтиЛист(КонтекстExcel.Книга, "Расчет");
|
ЛистРасчет = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.НайтиЛист(КонтекстExcel.Книга, "Расчет");
|
||||||
Если ЛистРасчет = Неопределено Тогда
|
Если ЛистРасчет = Неопределено Тогда
|
||||||
Сообщить("Лист Расчет не найден!");
|
Сообщить("Лист 'Расчет' не найден!");
|
||||||
ЗакрытьExcel(КонтекстExcel, ВременныйФайл);
|
ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ЗакрытьExcel(КонтекстExcel, Неопределено);
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
// Месяц и год
|
// Определяем параметры из Excel
|
||||||
МесяцЗначение = ЛистРасчет.Cells(4, 1).Value;
|
Объект._ГодЗагрузки = Строка(ЗагрузкаДанныхИзExcel_МаппингДанных.ОпределитьГодЗагрузки(ЛистРасчет));
|
||||||
Если ЗначениеЗаполнено(МесяцЗначение) Тогда
|
Объект._ОрганизацияНаименование = ЗагрузкаДанныхИзExcel_МаппингДанных.ОпределитьОрганизацию(ЛистРасчет);
|
||||||
Попытка
|
Объект._СтатьяФинансированияНаименование = ЗагрузкаДанныхИзExcel_МаппингДанных.ОпределитьСтатьюФинансирования(ЛистРасчет);
|
||||||
Объект.МесяцЗагрузки = Число(МесяцЗначение);
|
Объект._СтатьяРасходовКод = "211";
|
||||||
Исключение
|
Объект.МесяцЗагрузки = Число(ЛистРасчет.Cells(4, 1).Value);
|
||||||
Объект.МесяцЗагрузки = 0;
|
|
||||||
КонецПопытки;
|
ГодЗагрузки = Объект._ГодЗагрузки;
|
||||||
КонецЕсли;
|
МесяцТекст = ЗагрузкаДанныхИзExcel_МаппингДанных.НомерМесяцаВТекст(Объект.МесяцЗагрузки) + " " + ГодЗагрузки;
|
||||||
ГодЗначение = ЛистРасчет.Cells(3, 1).Value;
|
|
||||||
Если ЗначениеЗаполнено(ГодЗначение) Тогда
|
// Определяем начальную строку данных
|
||||||
Попытка
|
|
||||||
Объект._ГодЗагрузки = Число(ГодЗначение);
|
|
||||||
Исключение
|
|
||||||
Объект._ГодЗагрузки = 0;
|
|
||||||
КонецПопытки;
|
|
||||||
Иначе
|
|
||||||
Объект._ГодЗагрузки = 0;
|
|
||||||
КонецЕсли;
|
|
||||||
МесяцТекст = НомерМесяцаВТекст(Объект.МесяцЗагрузки) + " " + Объект._ГодЗагрузки;
|
|
||||||
Организация = СокрЛП(Строка(ЛистРасчет.Cells(4, 20).Value));
|
|
||||||
СтатьяФинансирования = СокрЛП(Строка(ЛистРасчет.Cells(8, 20).Value));
|
|
||||||
СтатьяРасходов = "211";
|
|
||||||
// Сохраняем строковые значения для передачи на сервер
|
|
||||||
Объект._ОрганизацияНаименование = Организация;
|
|
||||||
Объект._СтатьяФинансированияНаименование = СтатьяФинансирования;
|
|
||||||
Объект._СтатьяРасходовКод = СтатьяРасходов;
|
|
||||||
// Строка начала данных
|
|
||||||
НачальнаяСтрока = 0;
|
НачальнаяСтрока = 0;
|
||||||
Для Ном = 17 По 30 Цикл
|
Для Ном = 17 По 30 Цикл
|
||||||
Формула = ЛистРасчет.Cells(Ном, 1).Formula;
|
Формула = ЛистРасчет.Cells(Ном, 1).Formula;
|
||||||
@@ -354,7 +86,7 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
Если НачальнаяСтрока = 0 Тогда
|
Если НачальнаяСтрока = 0 Тогда
|
||||||
Сообщить("Данные не найдены!");
|
Сообщить("Данные не найдены!");
|
||||||
ЗакрытьExcel(КонтекстExcel, ВременныйФайл);
|
ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ЗакрытьExcel(КонтекстExcel, Неопределено);
|
||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -376,23 +108,22 @@
|
|||||||
Если СтрНачинаетсяС(ВРег(ФИОТекст), "ИТОГО") Тогда Прервать; КонецЕсли;
|
Если СтрНачинаетсяС(ВРег(ФИОТекст), "ИТОГО") Тогда Прервать; КонецЕсли;
|
||||||
Если СтрНачинаетсяС(ВРег(ФИОТекст), "СОТРУДНИК") ИЛИ СтрНачинаетсяС(ВРег(ФИОТекст), "ФАМИЛИЯ") Тогда Продолжить; КонецЕсли;
|
Если СтрНачинаетсяС(ВРег(ФИОТекст), "СОТРУДНИК") ИЛИ СтрНачинаетсяС(ВРег(ФИОТекст), "ФАМИЛИЯ") Тогда Продолжить; КонецЕсли;
|
||||||
|
|
||||||
ЛистСотрудника = НайтиЛистСотрудника(КонтекстExcel.Книга, ЛистРасчет, Ном);
|
ЛистСотрудника = ЗагрузкаДанныхИзExcel_МаппингДанных.НайтиЛистСотрудника(КонтекстExcel.Книга, ЛистРасчет, Ном);
|
||||||
Если ЛистСотрудника = Неопределено Тогда Продолжить; КонецЕсли;
|
Если ЛистСотрудника = Неопределено Тогда Продолжить; КонецЕсли;
|
||||||
|
|
||||||
ФИО = ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 3);
|
ФИО = ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуСтрока(ЛистСотрудника, 2, 3);
|
||||||
Если Не ЗначениеЗаполнено(ФИО) Тогда ФИО = ФИОТекст; КонецЕсли;
|
Если Не ЗначениеЗаполнено(ФИО) Тогда ФИО = ФИОТекст; КонецЕсли;
|
||||||
Если Не ЗначениеЗаполнено(ФИО) Тогда Продолжить; КонецЕсли;
|
Если Не ЗначениеЗаполнено(ФИО) Тогда Продолжить; КонецЕсли;
|
||||||
|
|
||||||
Счетчик = Счетчик + 1;
|
Счетчик = Счетчик + 1;
|
||||||
Состояние("Загрузка: " + ФИО, 20 + 70 * Счетчик / 50);
|
Состояние("Загрузка: " + ФИО, 20 + 70 * Счетчик / 50);
|
||||||
|
|
||||||
Строка = ПрочитатьРасчетныеДанныеИзРасчета(ЛистРасчет, Ном, ФИО);
|
Строка = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьРасчетныеДанные(ЛистРасчет, Ном, ФИО);
|
||||||
Строка.Вставить("ИдентификаторСотрудника", Счетчик);
|
Строка.Вставить("ИдентификаторСотрудника", Счетчик);
|
||||||
|
Строка.Вставить("ОтработаноДнейКалендарных", ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ПрочитатьЯчейкуЧисло(ЛистСотрудника, ЗагрузкаДанныхИзExcel_МаппингДанных.СтрокаМесяцаНаЛистеСотрудника(), 4, ФИО));
|
||||||
|
|
||||||
Если ЛистСотрудника <> Неопределено Тогда
|
Если ЛистСотрудника <> Неопределено Тогда
|
||||||
СтрокаМесяца = СтрокаМесяцаНаЛистеСотрудника();
|
Карточка = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьКарточкуСотрудника(ЛистСотрудника);
|
||||||
Строка.Вставить("ОтработаноДнейКалендарных", ПрочитатьЯчейкуЧисло(ЛистСотрудника, СтрокаМесяца, 4, ФИО));
|
|
||||||
Карточка = ПрочитатьКарточкуСотрудника(ЛистСотрудника);
|
|
||||||
Если ЗначениеЗаполнено(Карточка.ФИО) Тогда Строка.Вставить("ФИО", Карточка.ФИО); КонецЕсли;
|
Если ЗначениеЗаполнено(Карточка.ФИО) Тогда Строка.Вставить("ФИО", Карточка.ФИО); КонецЕсли;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
@@ -400,17 +131,16 @@
|
|||||||
|
|
||||||
// Сотрудники
|
// Сотрудники
|
||||||
Если ЛистСотрудника <> Неопределено Тогда
|
Если ЛистСотрудника <> Неопределено Тогда
|
||||||
ДанныеСотр = ПрочитатьКарточкуСотрудника(ЛистСотрудника);
|
ДанныеСотр = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьКарточкуСотрудника(ЛистСотрудника);
|
||||||
Иначе
|
Иначе
|
||||||
ДанныеСотр = Новый Структура("ФИО, ИНН, СНИЛС, ЛицевойСчетВБанке, ВидЗанятости, АдресРегистрации",
|
ДанныеСотр = Новый Структура("ФИО, ИНН, СНИЛС, ЛицевойСчетВБанке, ВидЗанятости, АдресРегистрации", ФИО, "", "", "", "", "");
|
||||||
ФИО, "", "", "", "", "");
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
ДанныеСотр.Вставить("Идентификатор", Счетчик);
|
ДанныеСотр.Вставить("Идентификатор", Счетчик);
|
||||||
МассивСотрудников.Добавить(ДанныеСотр);
|
МассивСотрудников.Добавить(ДанныеСотр);
|
||||||
|
|
||||||
// НДФЛ
|
// НДФЛ
|
||||||
Если ЛистСотрудника <> Неопределено Тогда
|
Если ЛистСотрудника <> Неопределено Тогда
|
||||||
ДанныеНДФЛ = ПрочитатьНДФЛСоЛиста(ЛистСотрудника, ФИО);
|
ДанныеНДФЛ = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьНДФЛСоЛиста(ЛистСотрудника, ФИО);
|
||||||
Если ДанныеНДФЛ <> Неопределено Тогда
|
Если ДанныеНДФЛ <> Неопределено Тогда
|
||||||
ДанныеНДФЛ.Вставить("ИдентификаторСотрудника", Счетчик);
|
ДанныеНДФЛ.Вставить("ИдентификаторСотрудника", Счетчик);
|
||||||
МассивНДФЛ.Добавить(ДанныеНДФЛ);
|
МассивНДФЛ.Добавить(ДанныеНДФЛ);
|
||||||
@@ -418,18 +148,21 @@
|
|||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
// Страховые взносы
|
// Страховые взносы
|
||||||
СтрВзносов = ПрочитатьВзносыИзРасчета(ЛистРасчет, Ном, ФИО);
|
СтрВзносов = ЗагрузкаДанныхИзExcel_МаппингДанных.ПрочитатьВзносыИзРасчета(ЛистРасчет, Ном, ФИО);
|
||||||
Если СтрВзносов <> Неопределено Тогда
|
Если СтрВзносов <> Неопределено Тогда
|
||||||
СтрВзносов.Вставить("ИдентификаторСотрудника", Счетчик);
|
СтрВзносов.Вставить("ИдентификаторСотрудника", Счетчик);
|
||||||
МассивВзносов.Добавить(СтрВзносов);
|
МассивВзносов.Добавить(СтрВзносов);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ЗакрытьExcel(КонтекстExcel, ВременныйФайл);
|
ЗагрузкаДанныхИзExcel_ЧтениеЭксель.ЗакрытьExcel(КонтекстExcel, Неопределено);
|
||||||
|
Состояние("Заполнение таблиц...", 95);
|
||||||
|
|
||||||
ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников);
|
ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников);
|
||||||
СтатусЗагрузки = "Готово! " + МассивДанных.Количество() + " сотр., " + МассивНДФЛ.Количество() + " записей НДФЛ";
|
|
||||||
Сообщить(СтатусЗагрузки);
|
СтатусЗагрузки = "Загружено: " + Счетчик + " сотрудников";
|
||||||
ОбновитьОтображениеДанных();
|
Состояние("Готово", 100);
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@@ -438,263 +171,7 @@
|
|||||||
|
|
||||||
&НаСервере
|
&НаСервере
|
||||||
Процедура ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников)
|
Процедура ЗаполнитьТаблицыНаСервере(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников)
|
||||||
Объект.ДанныеРасчетаЗП.Очистить();
|
ЗагрузкаДанныхИзExcel_ЗаписьВРегистры.ЗаполнитьТЧ(МассивДанных, МассивВзносов, МассивНДФЛ, МассивСотрудников, Объект.ДанныеРасчетаЗП, Объект.ДанныеСтраховыхВзносов, Объект.ДанныеНДФЛ, Объект.Сотрудники);
|
||||||
Для Каждого Эл Из МассивДанных Цикл
|
|
||||||
Строка = Объект.ДанныеРасчетаЗП.Добавить();
|
|
||||||
ЗаполнитьЗначенияСвойств(Строка, Эл);
|
|
||||||
КонецЦикла;
|
|
||||||
Объект.ДанныеСтраховыхВзносов.Очистить();
|
|
||||||
Для Каждого Эл Из МассивВзносов Цикл
|
|
||||||
Строка = Объект.ДанныеСтраховыхВзносов.Добавить();
|
|
||||||
ЗаполнитьЗначенияСвойств(Строка, Эл);
|
|
||||||
КонецЦикла;
|
|
||||||
Объект.ДанныеНДФЛ.Очистить();
|
|
||||||
Для Каждого Эл Из МассивНДФЛ Цикл
|
|
||||||
Строка = Объект.ДанныеНДФЛ.Добавить();
|
|
||||||
ЗаполнитьЗначенияСвойств(Строка, Эл);
|
|
||||||
КонецЦикла;
|
|
||||||
Объект.Сотрудники.Очистить();
|
|
||||||
Для Каждого Эл Из МассивСотрудников Цикл
|
|
||||||
Строка = Объект.Сотрудники.Добавить();
|
|
||||||
ЗаполнитьЗначенияСвойств(Строка, Эл);
|
|
||||||
КонецЦикла;
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
&НаСервере
|
|
||||||
Процедура ЗаписатьДанныеНаСервере(Знач ГодЗагрузкиПараметр, ОрганизацияНаименование, СтатьяФинансированияНаименование, СтатьяРасходовКод)
|
|
||||||
// Определяем период
|
|
||||||
ГодЧисло = Число(ГодЗагрузкиПараметр);
|
|
||||||
МесяцЧисло = Цел(Объект.МесяцЗагрузки);
|
|
||||||
Если ГодЧисло = 0 Тогда ГодЧисло = Год(ТекущаяДата()); КонецЕсли;
|
|
||||||
Если МесяцЧисло < 1 Или МесяцЧисло > 12 Тогда
|
|
||||||
Сообщить("Ошибка: месяц загрузки = " + МесяцЧисло + ", год = " + ГодЧисло);
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
Период = Дата(ГодЧисло, МесяцЧисло, 1);
|
|
||||||
|
|
||||||
// Разрешаем ссылки из строковых значений
|
|
||||||
Организация = Справочники.Организации.НайтиПоНаименованию(СокрЛП(ОрганизацияНаименование), Истина);
|
|
||||||
Если Не ЗначениеЗаполнено(Организация) Тогда
|
|
||||||
Сообщить("Не найдена организация: """ + ОрганизацияНаименование + """");
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
СтатьяФинансирования = Неопределено;
|
|
||||||
Если ЗначениеЗаполнено(СтатьяФинансированияНаименование) Тогда
|
|
||||||
СтатьяФинансирования = Справочники.СтатьиФинансированияЗарплата.НайтиПоНаименованию(СокрЛП(СтатьяФинансированияНаименование), Истина);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
СтатьяРасходов = Неопределено;
|
|
||||||
Если ЗначениеЗаполнено(СтатьяРасходовКод) Тогда
|
|
||||||
СтатьяРасходов = Справочники.СтатьиРасходовЗарплата.НайтиПоКоду(СокрЛП(СтатьяРасходовКод));
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
// Создаём документ ПереносДанных
|
|
||||||
ДокПеренос = Документы.ПереносДанных.СоздатьДокумент();
|
|
||||||
ДокПеренос.Дата = Период;
|
|
||||||
|
|
||||||
// Сопоставление сотрудников
|
|
||||||
СоответствиеСотрудников = Новый Соответствие;
|
|
||||||
Для Каждого Эл Из Объект.Сотрудники Цикл
|
|
||||||
СоответствиеСотрудников.Вставить(Эл.Идентификатор, Эл.ФИО);
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
// Кэш сотрудников: Идентификатор -> (Сотрудник, ФизическоеЛицо)
|
|
||||||
// Приоритет поиска: ИНН → СНИЛС → ФИО
|
|
||||||
КэшСотрудников = Новый Соответствие;
|
|
||||||
Для Каждого Эл Из Объект.Сотрудники Цикл
|
|
||||||
СотрСсылка = Неопределено;
|
|
||||||
|
|
||||||
// 1. Поиск по ИНН (уникальный идентификатор)
|
|
||||||
Если ЗначениеЗаполнено(Эл.ИНН) Тогда
|
|
||||||
СотрСсылка = Справочники.Сотрудники.НайтиПоРеквизиту("ИНН", СокрЛП(Эл.ИНН));
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
// 2. Поиск по СНИЛС
|
|
||||||
Если Не ЗначениеЗаполнено(СотрСсылка) И ЗначениеЗаполнено(Эл.СНИЛС) Тогда
|
|
||||||
ФЛ = Справочники.ФизическиеЛица.НайтиПоРеквизиту("СтраховойНомерПФР", СокрЛП(Эл.СНИЛС));
|
|
||||||
Если ЗначениеЗаполнено(ФЛ) Тогда
|
|
||||||
СотрСсылка = Справочники.Сотрудники.НайтиПоРеквизиту("ФизическоеЛицо", ФЛ, Истина);
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
// 3. Поиск по ФИО (fallback)
|
|
||||||
Если Не ЗначениеЗаполнено(СотрСсылка) И ЗначениеЗаполнено(Эл.ФИО) Тогда
|
|
||||||
СотрСсылка = Справочники.Сотрудники.НайтиПоНаименованию(СокрЛП(Эл.ФИО), Истина);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если ЗначениеЗаполнено(СотрСсылка) Тогда
|
|
||||||
КэшСотрудников.Вставить(Эл.Идентификатор, Новый Структура("Сотрудник, ФизическоеЛицо", СотрСсылка, СотрСсылка.ФизическоеЛицо));
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
// Сопоставление организаций и статей
|
|
||||||
// ============================================
|
|
||||||
// Регистр 1: НачисленияУдержанияПоСотрудникам
|
|
||||||
// ============================================
|
|
||||||
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
|
||||||
ИД = Строка.ИдентификаторСотрудника;
|
|
||||||
ДанныеСотр = КэшСотрудников.Получить(ИД);
|
|
||||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
|
||||||
ФизЛицо = ДанныеСотр.ФизическоеЛицо;
|
|
||||||
СотрудникСсылка = ДанныеСотр.Сотрудник;
|
|
||||||
|
|
||||||
// Начисления (Оклад, доплаты, надбавки и т.д.)
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Оклад, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаСовместительство", Строка.ДоплатаСовместительство, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаНочные", Строка.ДоплатаНочные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "ДоплатаПраздничные", Строка.ДоплатаПраздничные, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаКатегорию", Строка.НадбавкаЗаКатегорию, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "НадбавкаЗаВредность", Строка.НадбавкаЗаВредность, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "ПовышающийКоэффициент", Строка.ПовышающийКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "СтимулирующаяВыплата", Строка.СтимулирующиеВыплаты, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "РайонныйКоэффициент", Строка.РайонныйКоэффициент, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "ПремияРазовая", Строка.ПремияРазовая, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "Отпуск", Строка.Отпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "КомпенсацияЗаНеиспользованныйОтпуск", Строка.КомпенсацияЗаОтпуск, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "ВыходноеПособие", Строка.ВыходноеПособие, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "Родовые", Строка.Родовые, Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
|
|
||||||
// Удержания
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "НДФЛ", Строка.НДФЛ, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "ПрофВзнос", Строка.ПрофВзнос, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "ИсполнительныйДокумент", Строка.ИсполнительныеДокументы, Перечисления.ГруппыНачисленияУдержанияВыплаты.Удержано, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
|
|
||||||
// Выплаты
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.Аванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "Оклад", Строка.ЗарплатаЗаПервуюПоловину, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "Касса1", Строка.Касса1, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "БезналичноеПеречисление", Строка.БезналичныеПеречисления, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "ПремияАванс", Строка.ПремияАванс, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
ЗаписатьНачисление(ДокПеренос, Строка, "ВыплатыВМежрасчетный", Строка.ВыплатыВМежрасчетный, Перечисления.ГруппыНачисленияУдержанияВыплаты.Выплачено, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка);
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
// Регистр 2: ОтработанноеВремяПоСотрудникам
|
|
||||||
// ============================================
|
|
||||||
ВидРасчётаОклад = ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Оклад", Истина);
|
|
||||||
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
|
||||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
|
||||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
|
||||||
Если Строка.ОтработаноДней > 0 Или Строка.РабочиеЧасыПоТабелю > 0 Тогда
|
|
||||||
Движение = ДокПеренос.Движения.ОтработанноеВремяПоСотрудникам.Добавить();
|
|
||||||
Движение.Период = Период;
|
|
||||||
Движение.Организация = Организация;
|
|
||||||
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
|
||||||
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
|
||||||
Движение.Начисление = ВидРасчётаОклад;
|
|
||||||
Движение.ОтработаноДней = Строка.ОтработаноДней;
|
|
||||||
Движение.ОтработаноЧасов = Строка.РабочиеЧасыПоТабелю;
|
|
||||||
Движение.ОплаченоДней = Строка.ОтработаноДней;
|
|
||||||
Движение.ОплаченоЧасов = Строка.РабочиеЧасыПоТабелю;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
// ============================================
|
|
||||||
// Регистр 3: СведенияОДоходахНДФЛ
|
|
||||||
// ============================================
|
|
||||||
Для Каждого Строка Из Объект.ДанныеНДФЛ Цикл
|
|
||||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
|
||||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
|
||||||
Движение = ДокПеренос.Движения.СведенияОДоходахНДФЛ.Добавить();
|
|
||||||
Движение.Период = Период;
|
|
||||||
Движение.ГоловнаяОрганизация = Организация;
|
|
||||||
Движение.Организация = Организация;
|
|
||||||
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
|
||||||
Движение.МесяцНалоговогоПериода = Период;
|
|
||||||
Движение.СуммаДохода = Строка.СуммаВаловогоДохода;
|
|
||||||
Движение.СуммаВычета = Строка.СкидкаДляНДФЛЗаМесяц + Строка.ВычетНаРаботникаЗаМесяц + Строка.ВычетНаИждивенцевЗаМесяц;
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
// ============================================
|
|
||||||
// Регистр 4: СтраховыеВзносыПоФизическимЛицам
|
|
||||||
// ============================================
|
|
||||||
Для Каждого Строка Из Объект.ДанныеСтраховыхВзносов Цикл
|
|
||||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
|
||||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
|
||||||
Движение = ДокПеренос.Движения.СтраховыеВзносыПоФизическимЛицам.Добавить();
|
|
||||||
Движение.Период = Период;
|
|
||||||
Движение.Организация = Организация;
|
|
||||||
Движение.ФизическоеЛицо = ДанныеСотр.ФизическоеЛицо;
|
|
||||||
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
|
||||||
Движение.ПФРДоПредельнойВеличины = Строка.ДТ6Процент;
|
|
||||||
Движение.ПФРСтраховая = Строка.ПФСтраховая;
|
|
||||||
Движение.ФФОМС = Строка.ФССФОМС;
|
|
||||||
Движение.ФССНесчастныеСлучаи = Строка.НСПЗ;
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
// ============================================
|
|
||||||
// Регистр 5: ПредоставленныеСтандартныеИСоциальныеВычетыНДФЛ
|
|
||||||
// Вычеты на детей (стандартные и социальные)
|
|
||||||
// Пока нет данных в ТЧ для этого регистра - пропускаем
|
|
||||||
// ============================================
|
|
||||||
|
|
||||||
// ============================================
|
|
||||||
// Регистр 8: ДанныеОВремениДляРасчетаСреднегоОбщий
|
|
||||||
// Dimensions: Сотрудник, ПорядокРасчета
|
|
||||||
// Resources: ОтработаноДней, ОтработаноЧасов, ОтработаноДнейКалендарных
|
|
||||||
// ============================================
|
|
||||||
ДвиженияСреднего = ДокПеренос.Движения.ДанныеОВремениДляРасчетаСреднегоОбщий;
|
|
||||||
Для Каждого Строка Из Объект.ДанныеРасчетаЗП Цикл
|
|
||||||
ДанныеСотр = КэшСотрудников.Получить(Строка.ИдентификаторСотрудника);
|
|
||||||
Если ДанныеСотр = Неопределено Тогда Продолжить; КонецЕсли;
|
|
||||||
Если Строка.ОтработаноДней <> 0 Или Строка.ОтработаноДнейКалендарных <> 0 Тогда
|
|
||||||
Движение = ДвиженияСреднего.Добавить();
|
|
||||||
Движение.Период = Период;
|
|
||||||
Движение.Сотрудник = ДанныеСотр.Сотрудник;
|
|
||||||
Движение.ОтработаноДней = Строка.ОтработаноДней;
|
|
||||||
Движение.ОтработаноЧасов = Строка.РабочиеЧасыПоТабелю;
|
|
||||||
Движение.ОтработаноДнейКалендарных = Строка.ОтработаноДнейКалендарных;
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЦикла;
|
|
||||||
|
|
||||||
ДокПеренос.Записать();
|
|
||||||
|
|
||||||
Сообщить("Данные записаны. Документ: " + ДокПеренос.Ссылка);
|
|
||||||
КонецПроцедуры
|
|
||||||
|
|
||||||
// Вспомогательная процедура для записи начисления/удержания/выплаты
|
|
||||||
&НаСервере
|
|
||||||
Процедура ЗаписатьНачисление(ДокПеренос, Строка, ВидРасчета, Сумма, Группа, Период, Организация, СтатьяФинансирования, СтатьяРасходов, ФизЛицо, СотрудникСсылка)
|
|
||||||
Если Сумма = 0 Тогда Возврат; КонецЕсли;
|
|
||||||
|
|
||||||
// Определяем суффикс ПВР по статье финансирования
|
|
||||||
Суффикс = "";
|
|
||||||
Если СтатьяФинансирования <> Неопределено Тогда
|
|
||||||
НаименованиеСтатьи = СокрЛП(СтатьяФинансирования.Наименование);
|
|
||||||
Если СтрНайти(НаименованиеСтатьи, "\u041e\u041c\u0421") > 0 Тогда
|
|
||||||
Суффикс = " (\u041e\u041c\u0421)";
|
|
||||||
ИначеЕсли СтрНайти(НаименованиеСтатьи, "\u041f\u0414") > 0 Тогда
|
|
||||||
Суффикс = " (\u041f\u0414)";
|
|
||||||
ИначеЕсли СтрНайти(НаименованиеСтатьи, "\u0411\u044e\u0434\u0436\u0435\u0442") > 0 Или СтрНайти(НаименованиеСтатьи, "\u0441\u0443\u0431") > 0 Тогда
|
|
||||||
Суффикс = "";
|
|
||||||
КонецЕсли;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
// Ищем ПВР сначала с суффиксом, потом без
|
|
||||||
ВидРасчёта = Неопределено;
|
|
||||||
Если ЗначениеЗаполнено(Суффикс) Тогда
|
|
||||||
ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета + Суффикс, Истина);
|
|
||||||
КонецЕсли;
|
|
||||||
Если ВидРасчёта = Неопределено Тогда
|
|
||||||
ВидРасчёта = ПланыВидовРасчета.Начисления.НайтиПоНаименованию(ВидРасчета, Истина);
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Если ВидРасчёта = Неопределено Тогда
|
|
||||||
Сообщить("Не найден ПВР: " + ВидРасчета + Суффикс);
|
|
||||||
Возврат;
|
|
||||||
КонецЕсли;
|
|
||||||
|
|
||||||
Движение = ДокПеренос.Движения.НачисленияУдержанияПоСотрудникам.Добавить();
|
|
||||||
Движение.Период = Период;
|
|
||||||
Движение.Организация = Организация;
|
|
||||||
Движение.ФизическоеЛицо = ФизЛицо;
|
|
||||||
Движение.Сотрудник = СотрудникСсылка;
|
|
||||||
Движение.НачислениеУдержание = ВидРасчёта;
|
|
||||||
Движение.Сумма = Сумма;
|
|
||||||
Движение.ГруппаНачисленияУдержанияВыплаты = Группа;
|
|
||||||
Движение.СтатьяФинансирования = СтатьяФинансирования;
|
|
||||||
Движение.СтатьяРасходов = СтатьяРасходов;
|
|
||||||
Движение.Сторно = Ложь;
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
|
|||||||
Reference in New Issue
Block a user