Не забудьте, когда будете заполнять документ "Бригадный наряд", поставить галочку "Учитывать отработанные часы".
//*************************************************
// Проверка(ОбработчикСообщений)
//
// Параметры:
// ОбработчикСообщений — обработчик, переданный в процедуру проведения
//
// Возвращаемое значение:
// число 1, если провести документ можно, 0 — если введены неверные данные
//
// Описание:
// Проверяет возможность проведения документа.
//
Функция Проверка(ОбработчикСообщений)
МожноПроводить = 1;
Если глПроведенВПрошлом(Контекст) = 0 Тогда
НазваниеДока = «Документ «+ глПредставлениеДокумента(Контекст)+»: «;
Если (ШаблонПроводки.Наименование = «Распределять пропорционально расчетной базе») Тогда
МожноПроводить = 0;
глДобавитьСообщение(ОбработчикСообщений, НазваниеДока+»неверно указан шаблон проводки», ТекущийДокумент(),,»ШаблонПроводки»)
КонецЕсли;
Если УчетНалогаНаПрибыль.ВидРасхода=Перечисление.ВидыРасходов.ПропорциональноРаспределять Тогда
МожноПроводить = 0;
глДобавитьСообщение(ОбработчикСообщений, НазваниеДока+» в данных учета налога на прибыль выбран вид расхода «»Распределять пропорционально расчетной базе»».», ТекущийДокумент(),,»УчетНалогаНаПрибыль»);
КонецЕсли;
Если КоличествоСтрок() = 0 Тогда
глДобавитьСообщение(ОбработчикСообщений, НазваниеДока+»список сотрудников пуст.», ТекущийДокумент(),,»Сотрудник»)
Иначе
Если Итог(«Результат») = 0 Тогда
МожноПроводить = 0;
глДобавитьСообщение(ОбработчикСообщений,»Не выполнен расчет из документа, нулевые результаты начислений.», ТекущийДокумент(),,»Результат»);
КонецЕсли;
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Сотрудник.Выбран()=0 Тогда
МожноПроводить = 0;
глДобавитьСообщение(ОбработчикСообщений, НазваниеДока+»в строке №»+НомерСтроки+»не выбран сотрудник», ТекущийДокумент(),,»Сотрудник»)
КонецЕсли;
КонецЦикла;
КонецЕсли;
Иначе
глДобавитьСообщение(ОбработчикСообщений, «Документ «+глПредставлениеДокумента(Контекст)+» был проведен в одном из предыдущих расчетных периодах. Перепроведение такого документа запрещено!», ТекущийДокумент(), ,);
МожноПроводить = 0;
КонецЕсли;
Возврат МожноПроводить
КонецФункции // Проверка
//******************************************************************************
// Предопределенная процедура
//
Процедура ОбработкаПроведения(ОбработчикСообщений)
ГрафикРаботы = Константа.ОсновнойГрафик;
Календарь = ГрафикРаботы.ОсновныеЧасы;
ВсегоЧасов = Календарь.Часов(НачМесяца(ДатаДок),КонМесяца(ДатаДок));
ВсегоДней = Календарь.Дней(НачМесяца(ДатаДок),КонМесяца(ДатаДок));
// если документ содержит ошибки или проведен в прошлом периоде, то не проводим
Если Проверка(ОбработчикСообщений) = 0 Тогда
СтатусВозврата(0); Возврат
КонецЕсли;
глСторнироватьДокумент(КорректируемыйДокумент, ТекущийДокумент());
ЖрнЗарплата = СоздатьОбъект(«ЖурналРасчетов.Зарплата»);
ТекущийГод = ДатаГод(ЖрнЗарплата.КонецТекущегоПериода());
ДатаНачала=ЖрнЗарплата.НачалоТекущегоПериода();
ДатаОкончания=ЖрнЗарплата.КонецТекущегоПериода();
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Сотрудник.Выбран()=1 Тогда
ЖрнЗарплата.УстановитьРеквизит(«Рассчитана», 1);
ЖрнЗарплата.УстановитьРеквизит(«Фиксирована», 1);
Если УчЧасы=1 Тогда
ЖрнЗарплата.УстановитьРеквизит(«Часы»,Часы);
КонецЕсли;
ЖрнЗарплата.ВвестиРасчет(Сотрудник, ВидРасчета.ОплатаПоНаряду, ДатаДок, ДатаДок, Результат);
Если ДатаГод(ДатаДок) <> ТекущийГод Тогда
глВводЗаписейНДФЛ(Сотрудник,ВидРасчета.НДФЛ,ВидРасчета.НДФЛУдержанный,ДатаГод(ДатаДок),ТекущийГод);
КонецЕсли;
КонецЕсли;
КонецЦикла
КонецПроцедуры // ОбработкаПроведения