gifts2017

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

Опубликовал Ирина Баранова (Ироида) в раздел Программирование - Практика программирования

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

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

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

//

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

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

//

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

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

//

//          Описание:

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

//

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

 

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

           

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

                       

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

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

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

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

                        КонецЕсли;

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

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

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

                        КонецЕсли;

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

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

                        Иначе

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

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

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

                                   КонецЕсли;

                                  

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

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

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

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

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

                                               КонецЕсли;

                                   КонецЦикла;

                        КонецЕсли;

                       

            Иначе

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

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

            КонецЕсли;

           

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

           

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

 

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

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

//

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

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

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

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

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

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

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

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

            КонецЕсли;

           

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

           

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

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

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

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

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

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

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

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

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

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

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

                                    КонецЕсли; 

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

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

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

                                   КонецЕсли;

                        КонецЕсли;

            КонецЦикла

           

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

 

См. также

Подписаться Добавить вознаграждение

Комментарии

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



Перейти к публикации

1. Сергей Рудаков (fishca) 09.09.11 10:16
Классная разработка есть по оформлению исходного кода, было бы не грех ею воспользоваться, лежит здесь
2. Александр Рытов (Арчибальд) 09.09.11 10:49
(1) Оно так. Но все равно плюс. ;)
3. Сергей Рудаков (fishca) 09.09.11 10:55
(2) а почему бы и нет, собственно ;)
4. Olga Z (Pilot741) 09.09.11 11:41
5. Артур Аюханов (artbear) 09.09.11 18:06
Баян :(
Я подобный код еще в 2001/2002 годах юзал :(
6. Ирина Баранова (Ироида) 12.09.11 11:20
artbear пишет:

Баян :(
Я подобный код еще в 2001/2002 годах юзал :(


Вот я этого и опасалась. Захочешь кому-нибудь помочь - помидорами закидают :)
Одно утешение - Pilot741 доволен.
7. Таня Кусова (tdk22) 14.09.11 21:45
:idea: Очень бы хотелось увидеть пободное для 8-ки
8. элла иванова (2011b11) 28.09.11 09:00
9. Beloved (vboston) 26.04.12 18:02
Спасибо большое, неплохо бы было то же самое увидеть по бригадным и индивидуальным нарядам
10. элла иванова (2011b11) 12.11.12 11:32
<<?>>/*************************************************
{Документ.НарядБригадный.Модуль Документа(1)}: Неопознанный оператор
Модуль не скомпилирован!
У меня вот такая ошибка что сделать?
11. Ирина Баранова (Ироида) 12.11.12 13:44
(10) 2011b11, должно быть //********* (два слеша, а у вас один)
12. Сергей Иванов (u_n_k_n_o_w_n) 25.11.15 06:37
Добрый день!

Автору +.

Прекрасный подход к реализации задачи.

Спасибо.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа