Аттестация "1С:Специалист" > Аттестация "1С:Специалист" ЗУП
ЗУП 3.0 Программист Билет 1 ПОЕХАЛИ!!!
malknatal:
Я сделала регистр Фактические условия работы, для загрузки данных - обработку с формой выбора файла(пока документ не стала создавать для проведения).
А вот на табличной части Графика работы в особых условиях остановилась - т.к. если сделать ТЧ Сотрудник, Дата начала, Дата окончания - получится, что по сотруднику можно указать только один период (допустим с 1 по 7 число), а как тогда указать два периода (с 1 по 7 и с 21 по 28, например)?
(В задаче по ЗУП 2.5 данные в график на форме вводились по каждому дню, поэтому там несколько периодов можно было ввести без проблем)
nasurdinov:
--- Цитата: malknatal;35901 ---по сотруднику можно указать только один период
--- Конец цитаты ---
А что мешает вводить несколько строк?
malknatal:
Да, можно и так
demos:
Алгоритм решения:
1. Создаем РС УсловияСреды, периодический в пределах дня, с одним ресурсом "Условие". Добавляем возможность загрузки данных из текстового файла
2. Создаем Начисление - "ЗаРаботуВОсобыхУсловиях": повременная оплата труда, ежемесячно, формула: ТарифнаяСтавкаЧасовая, учет времени: за работу полную смену, вид времени: "РаботаВОсобыхУсловиях".
3. Создаем документ - "ГрафикРаботыВОсобыхУсловиях", который будет писать в РС - ПлановыеНачисления (с указанием действуетДО как конец месяца, чтобы начисление появлялось, в начислении зарплаты) и в РН - РабочееВремяСотрудников пишем Явку и РаботаВОсобыхУсловиях причем исключаем выходные через ВыборкаДанныхОВремени = Документы.ИндивидуальныйГрафик.ДанныеОВремениСотрудников(ЭтотОбъект);
4. В модуле РасчетЗарплатыРасширенный процедура РассчитатьНачисленияОчередности
создаем ВТЗаСложность, которая берет данные из ВТРабочееВремяПоДнямПоВидам и РС УсловияСреды и вычисляем Сумму процентов за сложность для строк начисления "ЗаРаботуВОсобыхУсловиях"
5. в этой же процедуре после:
РассчитатьСтрокуНачисления( ...
....
добавляем:
Если СтрокаРасчета.Начисление = ВидРасчетаЗаСложность Тогда
ИсходныеДанные.Результат = ИсходныеДанные.Результат * Выборка.СуммаПроцентовЗаСложность / 100;
КонецЕсли;
6. Отчет через "Представления_"
КодВЫБРАТЬ
НачисленияДанныеГрафика.ПериодДействия,
НачисленияДанныеГрафика.ПериодДействияКонец,
НачисленияДанныеГрафика.Сотрудник,
НачисленияДанныеГрафика.Результат КАК Доплата,
НачисленияДанныеГрафика.ОтработаноДней КАК Факт,
НачисленияДанныеГрафика.ОсновноеЗначениеБазовыйПериод КАК План,
ВЫРАЗИТЬ(НачисленияДанныеГрафика.Результат / НачисленияДанныеГрафика.ОтработаноДней КАК ЧИСЛО(12, 2)) КАК СреднийРазмер
ПОМЕСТИТЬ ВТВсеНачисления
ИЗ
РегистрРасчета.Начисления.ДанныеГрафика(
ПериодДействия МЕЖДУ &НачалоПериода И &КонецПериода
И ВидРасчета = &ВидРасчета
И Активность = ИСТИНА) КАК НачисленияДанныеГрафика
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТВсеНачисления.Сотрудник КАК Сотрудник,
ВТВсеНачисления.ПериодДействияКонец КАК Период
ПОМЕСТИТЬ ВТСотрудники
ИЗ
ВТВсеНачисления КАК ВТВсеНачисления
СГРУППИРОВАТЬ ПО
ВТВсеНачисления.Сотрудник,
ВТВсеНачисления.ПериодДействияКонец
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
ЗНАЧЕНИЕ(Справочник.РазрядыКатегорииДолжностей.ПустаяСсылка) КАК РазрядКатегория,
ВТСотрудники.Период
ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников
ИЗ
ВТСотрудники КАК ВТСотрудники
ГДЕ
"ТолькоРазрешенные" = ИСТИНА
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВТВсеНачисления.ПериодДействия КАК Период,
ВТВсеНачисления.Сотрудник КАК Сотрудник,
Представления_КадровыеДанныеСотрудников.Должность КАК Должность,
ВТВсеНачисления.План,
ВТВсеНачисления.Факт,
ВТВсеНачисления.Доплата,
ВТВсеНачисления.СреднийРазмер
ИЗ
ВТВсеНачисления КАК ВТВсеНачисления
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников КАК Представления_КадровыеДанныеСотрудников
ПО ВТВсеНачисления.Сотрудник = Представления_КадровыеДанныеСотрудников.Сотрудник
И ВТВсеНачисления.ПериодДействияКонец = Представления_КадровыеДанныеСотрудников.Период
tank-kras:
--- Цитата: demos;36439 ---... и вычисляем Сумму процентов за сложность для строк начисления "ЗаРаботуВОсобыхУсловиях"...
--- Конец цитаты ---
а зачем нам сумма процентов? нам нужен процент на каждый день (или период с одинаковым условием) умноженный на количество отработанных дней в этом условие и умноженный на тарифную ставку, если на следующий день условие поменялось, то и процент для этих отработанных дней тоже поменялся.
--- Цитата: demos;36439 ---ИсходныеДанные.Результат = ИсходныеДанные.Результат * Выборка.СуммаПроцентовЗаСложность / 100;
--- Конец цитаты ---
а где идет умножение на отработанные часы?
Скажите, пожалуйста, сколько у вас получается строк для начисления "ЗаРаботуВОсобыхУсловиях"? Судя по тому, что в РС ПлановыеНачисления идет одна запись, то получается одна строка?
Я не много не так делал.
1) Создаем вид начисления "ЗаРаботуВОсобыхУсловиях", "Дополнительная оплата за уже оплаченное время", ставим формулу РасчетнаяБаза * ПроцентНадбавкиПоОсобымУсловиям /100, где РасчетнаяБаза - ставим "Оплата по часовому тарифу"(нужно если будет вытеснение больничным или иным видом начисления), да и к тому же в задании сказано, что это доплата. Созданный показатель ПроцентНадбавкиПоОсобымУсловиям, который зависит от другого показателя УсловияТруда, ставим тип показателя "Числовой, зависящий от другого показателя", вводим шкалу процентов в зависимости от условий труда. Наверное надо было как у вас, через РС сделать, что было бы гибче. Но в задании не сказано, что процент премии может меняться. И опять же увеличивается время на экзамене на обработку разных случаев, если допустим процент поменялся много раз за месяц.
2) Создаем документ "ГрафикРабот_В_ОсобыхУсловиях" - пишем данные в РС ГрафикПоОсобымУсловиямРабот - нужен для отчета
3) Создаем документ "ФактическиеУсловияТруда" - куда загружаем данные из файла, добавляем также ТЧ с сотрудниками. Документ добавляет строки периодами в РС Плановые начисления, для всех сотрудников из ТЧ, по тем дням которые регистрировались прибором. В ресурс "Размер" записывается значение условие труда. То есть фактически делается запись:
10.01.2014 - 15.01.2014 1
16.01.2014 - 18.01.2014 0
20.01.2014 - 25.01.2014 2
Т.к. формула у нас идет от РасчетБазы, то получается что, если сотрудник работал в определенный период месяца, а в другой период, допустим, болел, то будет начислена доплата за отработанный период.
И в документе Начисление зарплаты будут разбиты на столько строк, сколько записей в РС Плановые начисление, и визуально можно будет посмотреть в какой период времени было условие труда
Далее в процедуре "РассчитатьНачисленияОчередности" перед РассчитатьСтрокуНачисления( обращаемся к РС ПлановыеНачсиления, вытягиваем условие труда для строки расчета конкретного периода и подсовываем в структуру ИсходныеДанные.УсловияТруда наше значение, далее все рассчитается само собой.
Плюсы такого подхода:
видно в какой период времени было условие труда и его расчетная база
Минусы:
пришлось дописать, чтобы строки с нулевым результатом удалялись
Про РН РабочееВремяСотрудников - документ "Начисление зарплаты" сам пишет данные по виду расчета ЗаРаботуВОсобыхУсловиях
demos, у вас есть еще решенные билеты, хотелось бы свериться с альтернативным взглядом? я решил пока 3, остальные 3 решу в эти выходные. Сдаю экзамен 10.10.2014
Навигация
Перейти к полной версии