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