1С 7.7 ЗиК. Доработка документа "Бригадный наряд" с возможностью увидеть часы в расчетном листке

Маленькая доработка модуля документа "Бригадный наряд" с возможностью увидеть часы в расчетном листке.
Не забудьте, когда будете заполнять документ "Бригадный наряд", поставить галочку "Учитывать отработанные часы".

//*************************************************

// Проверка(ОбработчикСообщений)

//

// Параметры:

//          ОбработчикСообщений — обработчик, переданный в процедуру проведения

//

// Возвращаемое значение:

//                      число 1, если провести документ можно, 0 — если введены неверные данные

//

//          Описание:

//                      Проверяет возможность проведения документа.

//

Функция Проверка(ОбработчикСообщений)

 

            МожноПроводить = 1;

           

            Если глПроведенВПрошлом(Контекст) = 0 Тогда

                       

                        НазваниеДока = «Документ «+ глПредставлениеДокумента(Контекст)+»: «;

                        Если (ШаблонПроводки.Наименование = «Распределять пропорционально расчетной базе») Тогда

                                   МожноПроводить = 0;

                                   глДобавитьСообщение(ОбработчикСообщений, НазваниеДока+»неверно указан шаблон проводки», ТекущийДокумент(),,»ШаблонПроводки»)

                        КонецЕсли;

                        Если УчетНалогаНаПрибыль.ВидРасхода=Перечисление.ВидыРасходов.ПропорциональноРаспределять Тогда

                                   МожноПроводить = 0;

                                   глДобавитьСообщение(ОбработчикСообщений, НазваниеДока+» в данных учета налога на прибыль выбран вид расхода «»Распределять пропорционально расчетной базе»».», ТекущийДокумент(),,»УчетНалогаНаПрибыль»);

                        КонецЕсли;

                        Если КоличествоСтрок() = 0 Тогда

                                   глДобавитьСообщение(ОбработчикСообщений, НазваниеДока+»список сотрудников пуст.», ТекущийДокумент(),,»Сотрудник»)

                        Иначе

                                   Если Итог(«Результат») = 0 Тогда

                                               МожноПроводить = 0;

                                               глДобавитьСообщение(ОбработчикСообщений,»Не выполнен расчет из документа, нулевые результаты начислений.», ТекущийДокумент(),,»Результат»);

                                   КонецЕсли;

                                  

                                   ВыбратьСтроки();

                                   Пока ПолучитьСтроку()=1 Цикл

                                               Если Сотрудник.Выбран()=0 Тогда

                                                           МожноПроводить = 0;

                                                           глДобавитьСообщение(ОбработчикСообщений, НазваниеДока+»в строке №»+НомерСтроки+»не выбран сотрудник», ТекущийДокумент(),,»Сотрудник»)

                                               КонецЕсли;

                                   КонецЦикла;

                        КонецЕсли;

                       

            Иначе

                        глДобавитьСообщение(ОбработчикСообщений, «Документ «+глПредставлениеДокумента(Контекст)+» был проведен в одном из предыдущих расчетных периодах. Перепроведение такого документа запрещено!», ТекущийДокумент(), ,);

                        МожноПроводить = 0;

            КонецЕсли;

           

            Возврат МожноПроводить

           

КонецФункции // Проверка

 

//******************************************************************************

//          Предопределенная процедура

//

Процедура ОбработкаПроведения(ОбработчикСообщений)

             ГрафикРаботы = Константа.ОсновнойГрафик;

                                               Календарь = ГрафикРаботы.ОсновныеЧасы;

                                               ВсегоЧасов = Календарь.Часов(НачМесяца(ДатаДок),КонМесяца(ДатаДок));

                                               ВсегоДней = Календарь.Дней(НачМесяца(ДатаДок),КонМесяца(ДатаДок));

            // если документ содержит ошибки или проведен в прошлом периоде, то не проводим

            Если Проверка(ОбработчикСообщений) = 0 Тогда

                        СтатусВозврата(0); Возврат

            КонецЕсли;

           

            глСторнироватьДокумент(КорректируемыйДокумент, ТекущийДокумент());

           

            ЖрнЗарплата = СоздатьОбъект(«ЖурналРасчетов.Зарплата»);

            ТекущийГод = ДатаГод(ЖрнЗарплата.КонецТекущегоПериода());

    ДатаНачала=ЖрнЗарплата.НачалоТекущегоПериода();

    ДатаОкончания=ЖрнЗарплата.КонецТекущегоПериода();

            ВыбратьСтроки();

            Пока ПолучитьСтроку()=1 Цикл

                        Если Сотрудник.Выбран()=1  Тогда

                                   ЖрнЗарплата.УстановитьРеквизит(«Рассчитана», 1);

                                   ЖрнЗарплата.УстановитьРеквизит(«Фиксирована», 1);

                                    Если УчЧасы=1  Тогда

                                               ЖрнЗарплата.УстановитьРеквизит(«Часы»,Часы);

                                    КонецЕсли; 

                                   ЖрнЗарплата.ВвестиРасчет(Сотрудник, ВидРасчета.ОплатаПоНаряду, ДатаДок, ДатаДок, Результат);

                                   Если ДатаГод(ДатаДок) <> ТекущийГод Тогда

                                               глВводЗаписейНДФЛ(Сотрудник,ВидРасчета.НДФЛ,ВидРасчета.НДФЛУдержанный,ДатаГод(ДатаДок),ТекущийГод);

                                   КонецЕсли;

                        КонецЕсли;

            КонецЦикла

           

КонецПроцедуры // ОбработкаПроведения

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *