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 400 руб./час

Подробнее

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

29.06.2018
Рассмотрим задачу, когда нужно вывести дополнительные реквизиты и сведения в общем списке элементов. Рассмотрим на примере конфигурации УТ 11, в справочник Номенклатура добавлен дополнительный...
29.06.2018
Рассмотрим задачу, когда нужно добавить дополнительные сведения. Рассмотрим на примере конфигурации УТ 11, добавим дополнительное сведение в элемент справочника Номенклатура.Открываем список...
29.06.2018
Рассмотрим задачу, когда нужно добавить дополнительные реквизиты. Рассмотрим на примере конфигурации УТ 11, добавим дополнительный реквизит в элемент справочника Номенклатура.Открываем список...

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

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

Подписка
 

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