click fraud detection

Добавление расчета сумм взносов в документ Начисление за первую половину месяца в 1С:ЗУП 3.1

Дата публикации: 26.12.2017

Рассмотрим задачу: в документе Начисление за первую половину месяца нужно показывать рассчитанную сумму страховых взносов (аналогично закладке Взносы в документе Начисление зарплаты и взносов). Рассмотрим на примере конфигурации ЗУП 3.1.2.212.

Потребуются изменения в следующих объектах:

1. Документ

1.1. Добавить табличную часть пр_Взносы (как в документе НачислениеЗарплаты)

2. Форма документа

2.1. Вывести на форму табличную часть пр_Взносы

3. Модуль формы документа

3.1. Внести изменения в ДанныеДляЗаполненияВДанныеФормы (для заполнения табличной части данными по рассчитанным взносам)

3.2. Внести изменения в ДанныеФормыВДанныеМенеджераРасчета (для передачи данных документа по взносам в менеджер расчета)

3.3. Внести изменения в ЗаполнениеПослеВыполненияДлительнойОперации (для подготовки табличной части к заполнению)

3.4. Внести изменения в ЗаполнитьНастройкиМенеджераРасчета (для того, чтобы в менеджере расчета зарплаты рассчитывались взносы)

3.5. Внести изменения в ОписаниеДокумента (для того, чтобы в менеджере расчета зарплаты рассчитывались взносы)

3.6. Внести изменения в ПерезаполнитьДанныеФормыНаСервере (для устранения ошибки при нажатии Заполнить - Сохранить ручные исправления в документе Начисление за первую половину месяца)

3.7. Внести изменения в ПриСозданииНаСервере (если программно устанавливаем видимость колонок табличной части пр_Взносы)

3.8. Внести изменения в РасчетЗарплатыВДанныеФормы (для заполнения табличной части данными по рассчитанным взносам)

4. Общий модуль

4.1. Внести изменения в общий модуль РасчетЗарплатыРасширенный в процедуру ПодготовитьДанныеДляПерезаполнения (для правильного заполнения при нажатии Заполнить - Сохранить ручные исправления в документе Начисление за первую половину месяца)

Везде, где нужно внести изменения в процедуры, имеется в виду добавление строк в конец процедуры, кроме тех строк, которые нужно добавить в определенное место процедуры (описано отдельно в соответствующем разделе).

Подробнее на примере:

Часть 1. Доработка реквизитов документа.

Копируем табличную часть Взносы из документа НачислениеЗарплаты в документ НачислениеЗаПервуюПоловинуМесяца, заменяем имя на пр_Взносы (рис. 1):

Часть 2. Доработка формы документа.

Выводим на форму закладку Взносы (Страницы – Добавить – Группа – Страница, имя пр_ГруппаВзносы) с табличной частью пр_Взносы (рис. 2). Названия и порядок колонок Заменяем аналогично названиям и порядку колонок на форме документа НачислениеЗарплаты. Видимость колонок устанавливаем программно (описано в разделе Часть 3), т.к. видимость колонок зависит от функциональных опций (также, вместо этого, можно внести изменения в состав функциональных опций, но потом при обновлении нужно будет учитывать этот момент).

Рис. 2. Добавление на форму документа закладки Взносы с табличной частью

Часть 3. Доработка модуля формы документа.

3.1. Изменения в ДанныеДляЗаполненияВДанныеФормы.

Добавляем строки:

//пр

РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыВзносыВДанныеФормы(Объект.пр_Взносы, ДанныеМенеджера.Взносы, НачальныеПозицииВставки);

3.2. Изменения в ДанныеФормыВДанныеМенеджераРасчета.

Добавляем строки:

//пр

РасчетЗарплатыРасширенныйФормы.ВзносыВДанныеМенеджераРасчета(Объект.пр_Взносы, МенеджерРасчета, Отбор, НачальныеПозицииВставки);

3.3. Изменения в ЗаполнениеПослеВыполненияДлительнойОперации.

Добавляем строки в разделе, где очищаются остальные табличные части:

//пр

Объект.пр_Взносы.Очистить();

3.4. Изменения в ЗаполнитьНастройкиМенеджераРасчета.

Добавляем строки:

//пр

МенеджерРасчета.НастройкиРасчета.РассчитыватьВзносы = Истина;

3.5. Изменения в ОписаниеДокумента.

Добавляем строки перед Возврат Описание; :

//пр

Описание.ВзносыИмя = "пр_Взносы";

3.6. Изменения в ПерезаполнитьДанныеФормыНаСервере.

Добавляем строки после Отбор = СотрудникиФизическиеЛицаОтбор(Сотрудники);  :

//пр

Если НЕ ЗначениеЗаполнено(Отбор.СотрудникиКРасчету) Тогда

                Отбор.СотрудникиКРасчету = Неопределено;           

КонецЕсли;

3.7. Изменения в ПриСозданииНаСервере.

Добавляем строки:

//пр

УстановитьВидимостьКолонокВзносов();

3.7.1. Добавляем процедуру УстановитьВидимостьКолонокВзносов()

//пр

&НаСервере

Процедура УстановитьВидимостьКолонокВзносов()

                УчетСтраховыхВзносов.УстановитьВидимостьКолонокТаблицыСтраховыхВзносов(ЭтаФорма, Объект.МесяцНачисления, "пр_Взносы");    

                Если ПолучитьФункциональнуюОпцию("ПлательщикЕНВДЗарплатаКадры")

                               ИЛИ ПолучитьФункциональнуюОпцию("ПлательщикЕНВДЗарплатаКадрыРасширенная") Тогда                 Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыФФОМСЕНВД.Видимость = Истина;                                   Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыТФОМСЕНВД.Видимость = Истина; 

                Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыФССЕНВД.Видимость = Истина;                   Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРНакопительнаяЕНВД.Видимость = Истина;                               Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРСтраховаяЕНВД.Видимость = Истина;                      Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРПоСуммарномуТарифуЕНВД.Видимость = Истина;                           Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРДоПредельнойВеличиныЕНВД.Видимость = Истина;                           Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРСПревышенияЕНВД.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыФФОМСЕНВД.Видимость = Ложь;   Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыТФОМСЕНВД.Видимость = Ложь;                Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыФССЕНВД.Видимость = Ложь;                 Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРНакопительнаяЕНВД.Видимость = Ложь;                   Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРСтраховаяЕНВД.Видимость = Ложь;                   Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРПоСуммарномуТарифуЕНВД.Видимость = Ложь;                               Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРДоПредельнойВеличиныЕНВД.Видимость = Ложь;                               Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРСПревышенияЕНВД.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользуетсяТрудЧленовЛетныхЭкипажей") Тогда

                               Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРНаДоплатуЛетчикам.Видимость = Истина;          

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРНаДоплатуЛетчикам.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользуетсяТрудШахтеров") Тогда                         Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРНаДоплатуШахтерам.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРНаДоплатуШахтерам.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользуютсяРаботыСДосрочнойПенсией") Тогда                Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботах.Видимость = Истина;                           Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботах.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботах.Видимость = Ложь;                               Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботах.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользоватьПФРЗаЗанятыхНаПодземныхИВредныхРаботахОпасный") Тогда                    Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботахОпасный.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботахОпасный.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользоватьПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный1") Тогда

                                Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный1.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный1.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользоватьПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный2") Тогда                    Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный2.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный2.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользоватьПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный3") Тогда                    Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный3.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный3.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользоватьПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный4") Тогда                    Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный4.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаПодземныхИВредныхРаботахВредный4.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользоватьПФРЗаЗанятыхНаТяжелыхИПрочихРаботахОпасный") Тогда

                                Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботахОпасный.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботахОпасный.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользоватьПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный1") Тогда                 Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный1.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный1.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользоватьПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный2") Тогда                 Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный2.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный2.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользоватьПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный3") Тогда                 Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный3.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный3.Видимость = Ложь;

                КонецЕсли;

               

                Если ПолучитьФункциональнуюОпцию("ИспользоватьПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный4") Тогда

                                Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный4.Видимость = Истина;

                Иначе                  Элементы.пр_Взносы.ПодчиненныеЭлементы.пр_ВзносыПФРЗаЗанятыхНаТяжелыхИПрочихРаботахВредный4.Видимость = Ложь;

                КонецЕсли;      

КонецПроцедуры

3.8. Изменения в РасчетЗарплатыВДанныеФормы.

Добавляем строки:

//пр

РасчетЗарплатыРасширенныйФормы.РасчетЗарплатыВзносыВДанныеФормы(Объект.пр_Взносы, ДанныеМенеджераРасчета.Взносы, НачальныеПозицииВставки);

 

Часть 4. Доработка процедуры ПодготовитьДанныеДляПерезаполнения общего модуля РасчетЗарплатыРасширенный.

Вносим изменения после строки Если Сотрудники = Неопределено Тогда: добавляем условие на документ НачислениеЗаПервуюПоловинуМесяца. Эта часть будет выглядеть так:

 

Если Сотрудники = Неопределено Тогда

                //пр (добавлено условие для док. НачислениеЗаПервуюПоловинуМесяца)

                //взято из ДанныеДляЗаполненияТаблицДокумента(), из определения "Если Сотрудники = Неопределено Тогда"

                //т.к. иначе заполняется всеми сотрудниками, а не только теми, у которых в ПриемНаРаботу Аванс = Расчетом за перв. пол. месяца

Если ТипЗнч(СтруктураПараметров.ДокументСсылка) = Тип("ДокументСсылка.НачислениеЗаПервуюПоловинуМесяца") Тогда

                               ПараметрыСотрудников = РасчетЗарплатыРасширенный.ДополнительныеПараметрыСотрудниковДляНачисленияЗарплаты();

                               ПараметрыСотрудников.ОкончаниеПериода = ОкончаниеПериода;

                               ПараметрыСотрудников.ЗаполнятьНачисленияПоТрудовымДоговорам = ЗаполнятьНачисленияПоТрудовымДоговорам;

                               ПараметрыСотрудников.ЗаполнятьНачисленияПоДоговорамПодряда = ЗаполнятьНачисленияПоДоговорамПодряда;                                         

                               ПараметрыСотрудников.РежимДоначисления = ОписаниеДокумента.РежимДоначисления;                                  

                               ПараметрыСотрудников.РасчетПервойПоловиныМесяца = РасчетПервойПоловиныМесяца;

                                              

                               Сотрудники = СотрудникиДляНачисленияЗарплаты(Организация, Подразделение, МесяцНачисления, ПараметрыСотрудников);

                Иначе                                 

                               ПараметрыПолученияСотрудников = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц();

                               ПараметрыПолученияСотрудников.Организация                     = Организация;

                               ПараметрыПолученияСотрудников.Подразделение               = Подразделение;

                               ПараметрыПолученияСотрудников.НачалоПериода                              = МесяцНачисления;

                               ПараметрыПолученияСотрудников.ОкончаниеПериода  = ОкончаниеПериода;                                                                  ПараметрыПолученияСотрудников.ПодработкиРаботниковПоТрудовымДоговорам = ПолучитьФункциональнуюОпцию("ИспользоватьПодработки");

                               ПараметрыПолученияСотрудников.РаботникиПоДоговорамГПХ = Истина;                              

                               ТаблицаСотрудников = КадровыйУчет.СотрудникиОрганизации(Истина, ПараметрыПолученияСотрудников);

                               Сотрудники = ОбщегоНазначения.ВыгрузитьКолонку(ТаблицаСотрудников, "Сотрудник", Истина);

                КонецЕсли;

СтруктураПараметров.Сотрудники = Сотрудники;

КонецЕсли;

Теперь можно проверить расчет взносов в документе Начисление за первую половину месяца в режиме Предприятие (рис. 3):

Рис. 3. Расчет взносов

Если нет возможности добавить документ Начисление за первую половину месяца, то нужно проверить наличие вида расчета (Все функции – Планы видов расчета – Начисления) с установленной галочкой Начисляется при расчете первой половины месяца и у нужного сотрудника в документе Прием на работу на вкладке Оплата труда в поле Аванс значение Расчетом за первую половину месяца.

 

Автор: Дина Королева.

 

Аренда разработчика 1С

Опытные специалисты, 1 200 руб./час

Подробнее

Другие записи в блоге

19.12.2017
Рассмотрим задачу, когда в типовую недоработанную конфигурацию в документ нужно добавить новое поле – реквизит. Рассмотрим на примере конфигурации ЗУП, добавим реквизит Внутренний номер в документ...
12.10.2017
Рассмотрим задачу, когда на форму нужно добавить кнопку, при нажатии на которую должно что-то произойти. Рассмотрим на примере заполнения табличной части документа.На форму на вкладку Команды –...
03.10.2017
Продолжаем рассматривать варианты размещения элементов на форме на примере вывода реквизитов документа на форму документа, состав документа представлен на рис. 1:Рис. 1. Реквизиты документа

Подпишитесь на блог

Все интересные статьи нашего блога на Вашем почтовом ящике!

Подписка
 

Сервис звонка с сайта RedConnect