предопределенные табличные части в каждом вновь
|
ПВР i 353s1815d 5;ремии |
ПВР i 353s1815d 9;держания
ПВР i 353s1815d 9;держания
Вытесняющие виды расчета должны быть в рамках
ПВР i 353s1815d 5;ремии |
|
ПВР i 353s1815d 9;держания
Конфигурирование в системе " 1 С:Предприятие 8.0". Решение расчетных задач
о «Подразделение»
о «Должность тип СправочникСсылка.Должности»;
о «Сотрудник»
о «Результат» тип Число длиной 10 точностью 2.
о «График»
«СправочникСсылка.ГрафикиРаботы». Связь с
|
о «ПараметрРасчета»
тип Число длиной 10
о «Подразделение»
о «Должность тип «СправочникСсылка.Должности»;
о «Сотрудник»
о «Результат» тип Число длиной 10 точностью 2.
о «ПараметрРасчета» тип Число длиной 10
о «Подразделение», о «Должность», о «Сотрудник».
|
|
|
|
о «Подразделение»
о «Должность»
о «Сотрудник»
о «Результат» тип Число длиной 10 точностью 2.
о «ПараметрРасчета» тип Число длиной 10
Конфигурирование в системе "1 С:Предприятие 8.0", Решение расчетных задач
|
о «Подразделение»
о «Должность»
о «Сотрудник»
о «Результат» тип Число длиной 10 точностью 2.
о «ПараметрРасчета» тип Число длиной 10
«ВводОсновныхНачисленийИУдержаний», «НачислениеПремий»,
о «ПериодРегистрации» тип Дата. Табличные части:
о Начисления
a о Удержания
Конфигурирование в системе "1С-.Предприятие 8.0"'. Решение расчетных задач
р |
о ФормаСписка, о ФормаДокумента.
|
Также назначим обработчик события При изменении поля ввода
Процедура СписокСотрудникПриИзменении(Элемент,Список) Запрос = Новый Запрос(" Выбрать Сотрудник.Наименование, Подразделение, Должность
Из РегистрСведений.Сотрудники.СрезПоследних(&парамДата, Сотрудник = &парамСотрудник)
Где Состояние = &парамСостояние
I");
Запрос.УстановитьПараметрС'парамДата", Дата); Запрос.УстановитьПараметрС'парамСотрудник", Элемент.Значение);
Запрос.УстановитьПараметр("парамСостояние",
Предупреждение(""+Элемент.3начение+" не работает в организации "+Константы.НазваниеОрганизации);
ВыбраннаяСтрока = МестаРаботы.ВыбратьСтрокуС'Выберите место работы");
Процедура такая же, какую мы рассматривали в документе
Если Элемент.Значение=ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда Запрос = Новый Запрос("
РегистрСведений.Сотрудники.СрезПоследних(&парамДата,
(Сотрудник = &парамСотрудвик) и (Подразделение = &парамПодразделение) и (Должность = &парамДолжность))
I");
Запрос.УстановитьПараметр("парамДата", Дата);
Запрос.УстановитьПараметрС'парамСотрудник",
Запрос.УстановитьПараметр("парамПодразделение", ЭлементыФормы.Начисления.ТекущиеДанные.Подразделение);
Запрос.УстановитьПараметр("парамДолжность", ЭлементыФормы.Начисления.ТекущиеДанные.Должность);
Если ТЗОклад.Количество()<>0 Тогда ОкладВСписок= ТЗОклад[0].Оклад;
Если ТипЗнч(ОкладВСписок)=Тип("Число") Тогда
ТипЗнч(ОкладВСписок)=Тип("СправочникСсылка.ЕТС") Тогда
ЭлементыФормы.Начисления.ТекущиеДанные.Размер =
Комментарии. Процедура такая же, какую мы рассматривали в
о ОсновныеНачисления, о Удержания
Отбор= Новый Структура("Регистратор",Ссылка);
Ресурсы[0] = "ОсновныеНачисления.Резудьтат,Премии.Результат";
Измерения.Вставить("Подразделение","ОсновныеНачисления.Подразделение,Прем
ии.Подразделение");
Измерения.Вставить("Должность","ОсновныеНачисления.Должность,Премии.Долж ность");
Измерения.Вставить("Сотрудник","ОсновныеНачисления.Сотрудник,Премии.Сотру
дник");
Движение.Результат = РассчитатьНачисленияУдержания(Движение, ,,,)'>
. сначала вводятся начисления, затем вводятся удержания.
Отбор. Вставить("Регистратор",Ссылка);
Ресурсы[0] = "ОеновныеНачисления.Результат,Премии.Результат";
Измерения.Вставить("Подразделение","ОсновныеНачисления.Подразделение,Прем ии.Подразделение");
Измерения.Вставить(" Должность", "ОсновныеНачисления.Должность,Премии.Долж ность");
Измерения.Вставить("Сотрудник","ОсновныеНачисления.Сотрудник,Премии.Сотру
дник");
"ВводОсновныхНачисленийИУдержаний" для ввода
|
Документ «ВводОсновныхНачисленийИУдержаний» для ввода
|
Документ «ВводОсновныхНачисленийИУдержаний» окладов и штрафа:
для ввода
|
Конфигурирование в системе "1С:Предприятие 8.0". Решение расчетных задач |
. Имя: «НачислениеПремий».
о «ПериодРегистрации» тип Дата. Табличные части:
о Список
о ФормаСписка, о ФормаДокумента.
Процедура СписокСотрудникПриИзменении(Элемент) Запрос = Новый Запрос(" Выбрать Сотрудник.Наименование, Подразделение, Должность
Из РегистрСведений.Сотрудники.СрезПоследних(&парамДата, Сотрудник = &парамСотрудник)
Где Состояние = &парамСостояние
I");
Запрос.УстановитьПараметр("парамДата", Дата); Запрос.УетановитьПараметр("парамСотрудник", Элемент.Значение);
Запрос.УстановитьПараметр("парамСостояние",
Предупреждение(""+Элемент.3начение+" не работает в организации "+Константы.НазваниеОрганизации);
ВыбраннаяСтрока = МестаРаботы.ВыбратьСтроку("Выберите место
работы");
.■ 8.0". Решение расчетных задач
Процедура такая же, как и процедура в документе
Отбор= Новый Структура("Регистратор",Ссылка);
Ресурсы[0] = "ОсновныеНачисления.Результат";
Измерения.Вставить("Подразделение","ОсновныеНачисления.Подразделение");
Измерения.Вставить(" Должность","ОсновныеНачисления.Должность");
Измерения.Вставить("Сотрудник","ОсновныеНачисления.Сотрудник");
Движение.Результат = РассчитатьНачисленияУдержания(Движение,
Процедура похожа на соответствующую процедуру в документе
|
Конфигурирование в системе " 1 С:Предприятие8,0".
. Имя: «Выплаты».
о «ПериодРегистрации» тип Дата.
|
о Список
■ «Сотрудник»:
ФормаСписка, ФормаДокумента. |
Запрос = Новый Запрос("
Из РегистрСведений.Сотрудники.СрезПоследних(&парамДата, Сотрудник = &парамСотрудник)
Где Состояние = &парамСостояние
I");
Запрос. УстановитьПараметр("парамДата", Дата);
Запрос.УстановитьПараметр("парамСотрудник", Элемент.Значение);
Запрос.УстановитьПараметрС'парамСостояние",
Предупреждение(""+Элемент.3начение+" не работает в организации "+Константы.НазваниеОрганизации);
ВыбраннаяСтрока = МестаРаботы.ВыбратьСтроку("Выберите место работы");
Процедура такая же, как и процедура в документе
Движение.Сотрудник = Строка.Сотрудник; Движение.ВидРасчета = Строка.ВидРасчета;
Движение.Результат = РассчитатьНачисленияУдержания(Движение,
Процедура похожа на соответствующую процедуру в документе
. в данной
процедуре
переменные
ДанныеБазы,
В режиме «1С:Предприятие» создадим ряд документов по вводу
Для корректного расчета результатов в процедуру
Функция РассчитатьНачисленияУдержания(СтрокаДвижений, Индекс, ДанныеБазы,
Сообщить("Расчет оплаты по окладу: Нет рабочих дней в заданном периоде", СтатусСообщения.Информация);
Сообщить("Расчет отпуска: Нет рабочих дней в базовом периоде",
Возврат ДанныеБазы[Индекс].Результат/Отработано Дней *
Конфигурирование в системе 1С:Предприятие 8.0 . Решение расчетных задач
КонецФункции
Посмотрите на результаты расчетов в регистрах расчета
Рассмотрим, как работает вытеснение видов расчета при
Проведем документ «ВводОсновныхНачисленийИУдержаний» для ввода «Отпуска».
Посмотрим, что получилось в регистре расчетов |
"ВЫБРАТЬ РАЗЛИЧНЫЕ
I");
В модуль документа «Начисление премий» добавим процедуры Перерассчитать, ОбработкаЗаполнения и ВвестиПерерасчет:
Отбор.Вставить("Регистратор",Ссылка);
Ресурсы[0] = "ОсновныеНачисления.Результат";
Измерения.Вставить("Подразделение","ОсновныеНачисления.Подразделение");
Измерения.Вставить(" Должность","ОсновныеНачисления.Должность");
Измерения.Вставить("Сотрудник","ОсновныеНачисления.Сотрудник");
СтруктураПоиска = Новый Структура("Подразделение,Должность,Сотрудник");
"ВЫБРАТЬ
I
ГДЕ РегистрРасчета.Премии.Регистратор=&парДокументОбъект
|");
Запрос.УстановитьПараметрС'парДокументОбъект", Ссылка);
СтруктураПоиска = Новый Структура("Подразделение,Должность,Сотрудник");
Конфигурирование в системе "1С:Предприятие 8.0". Решение расчетных задач
КонецПроцедуры
|
|
Конфигурирование в системе "1С:Предприятие 8.0". Решение расчетных задач |
о «Сотрудник»
ТекстЗапроса = "ВЫБРАТЬ
ВидРасчета.Тип=&Начисления
|НачисленияОсн.ПериодРегистрации = &ДатаОтчета"; Условие="";
Условие = Условие + " И Сотрудник В Иерархии (&СписокСотрудников)";
Запрос.УстановитьПараметр("СписокСотрудников", Сотрудники. ВыгрузитьКолонку("Сотрудник"));
ТекстЗапроса = ТекстЗапроса +"
|КОГДА ВидРасчета.Тип=&Начисления ТОГДА СУММА(Премии.Результат)
|Премии.ПернодРегистрации = &ДатаОтчета";
Условие="";
Если Сотрудники.Количестве() <> 0 Тогда
Условие = Условие + " И Сотрудник В Иерархии (&СписокСотрудников)";
Запрос.УстановитьПараметрС СписокСотрудников", Сотрудники.ВыгрузитьКолонкуС'Сотрудник"));
ТекстЗапроса = ТекстЗапроса +"
|КОГДА ВидРасчета.Тип=&Удержания ТОГДА СУММА(Удержания.Результат)
|Удержания.ПериодРегистрации = &ДатаОтчета"; Условие=""; Если Сотрудники.КоличествоО <> 0 Тогда
Условие = Условие + " И Сотрудник В Иерархии (&СписокСотрудников)";
Запрос.УстановитьПараметр("СписокСотрудников",
Сотрудннкн.ВыгрузитьКолонку("Сотрудник"));
ТекстЗапроса = ТекстЗапроса +" |СГРУППИРОВАТЬ ПО
|КОГДА ВидРаечета.Тип=&Выплаты ТОГДА СУММА(Выплаты.Результат)
|Выплаты.ПериодРегистрации = &ДатаОтчета"; Условие="";
Условие = Условие + " И Сотрудник В Иерархии (&СпиеокСотрудников)";
Запрос.УстановитьПараметр("СписокСотрудников", Сотрудники.ВыгрузитьКолонкуС'Сотрудник"));
ТекстЗапроса = ТекстЗапроса +"
B
|";
РегистрРасчета.Премии КАК Премии
|
Конфигурирование в системе " 1 С:Предприятие 8.0". Решение расчетных задач
Практикум №2
налоговой базы по нескольким регистрам расчета методом
расчета «Налоги».
начисления или удержания, отображать сведения о некоторых
по нескольким источникам финансирования и т.д. Более того, очень часто подобное распределение не может быть выполнено в момент отражения в системе реальной расчетной хозяйственной операции
|
Конфигурщование в системе "1С:Предприятие 8.0". Решени££асчетных задач
. Имя: «РаспределениеПоИФ».
Решение задачи
о Сотрудник:
о Подразделение:
о ПериодРегистрации тип Дата.
о ВидыРасчета
о ФормаСписка, о ФормаДокумента.
Конфигурирование в системе "1С:Предприятие^8.0"
II
|
Если (Сотрудник.Пустая()=Ложь) и (Подразделение.Пустая()=Ложь) (Должность.Пустая()=Ложь) и (ПериодРегистрацииоДата("00010101000000")) Тогда
ТекстЗапроса="ВЫБРАТЬ
РасчетыВсе.Сотрудник = &Сотрудник И
РасчетыВсе.Подразделение = &Подразделение И
РасчетыВсе.Должность = &Должность И
РасчетыВсе.ПериодРегистрации = &ПериодРегистрации И
(РасчетыВсе.ВидРасчета.Тип = &Начисление или
РасчетыВсе.ВидРасчета.Тип = &У держание)
ВидРасчета";
Запрос.УстановитъПарметр(" Сотрудник", Сотрудник); Запрос.УстановитьПараметр("Подразделение",Подразделение); Запрос.УстановитьПараметр(" Должность" Должность); Запрос.УстановитьПараметр("ПериодРегистрации",ПериодРегистрации); Запрос.УстановитьПараметр("Начисление",Перечисления.ТипыВидовРасчета.Начислен
Запрос.УстановитьПараметр("Удержание",Перечисления.ТипыВидовРасчета.Удержани
Выбираем запросом из регистра расчета «РасчетыВсе» записи начислений и удержаний за выбранный период для выбранного
сотрудника. Затем создаем в табличной части строки,
Движение.Сотрудник = Сотрудник; Движение.ВидРасчета = Строка.ВидРасчета; Движение.Результат = Строка.Результат;
Конфигурирование в системе " 1С:Предприятие 8.0". Решение расчетных задач
Ресурсы[0] = "РасчетыВсеИФ.Результат"; Измерения= Новый Структура();
Измерения.Вставить("Подразделение","РасчетыВсеИФ.Подразделение"); Измерения.Вставить(" Должность","РасчетыВсеИФ.Должность"); Измерения.Вставить("Сотрудник","РасчетыВсеИФ.Сотрудник"); ИзмеренияИФ= Новый Структура();
ИзмереЕияИФ.Вставить("Подразделение","РасчетыВсеИФ.Подразделение"); ИзмеренияИФ .Встав ить(" Должность","РасчетыВсеИФ.Должность"); ИзмеренияИФ.Вставить("Сотрудник","РасчетыВсеИФ. Сотрудник");
ИзмеренияИФ .Вставить("ИсточникФинансирования","РасчетыВсеИФ.ИсточникФи нансирования");
источников финансирования используется в организации.
конкретному источнику финансирования используется метод записи регистра расчета ПолучитъБазу(Ресурсы,ИзмеренияИФ). Причем в
о ПериодРегистрации 01.01.2003; о Сотрудник: Иванова; о Подразделение: Дирекция; о Должность: Директор;
|
Конфигурирование в системе "1С:Предприятие 8.0". Решение расчетных задач |
После автоматического заполнения табличной части уточним
для Оплаты по окладу - Бюджет;
для Премии процентом - Пропорциональное
|
|