ALTE DOCUMENTE |
РассчитатьНачисленияУдержания(СтрокаДвижений, Индекс, ДанныеБазы,
Если СтрокаДвижений.ВидРасчета = ПланыВидовРасчета.Все 12512j95m 42;идыРасчета. Оклад Тогда
Сообщить("Расчет оплаты по окладу: Нет рабочих дней в заданном периоде", СтатусСообщения.Информация);
ПланыВидовРасчета,Все 12512j95m 42;идыРасчета.ПремияПроцентом Тогда //
ПланыВидовРасчета.Все 12512j95m 42;идыРасчета.Отпуск Тогда
Сообщить("Расчет отпуска: Нет рабочих дней в базовом периоде", СтатусСообщения.Информация);
Возврат ДанныеБазы[Индекс].Результат/ОтработаноДней *
ПланыВидовРасчета.Все 12512j95m 42;идыРасчета.ШтрафСуммой ИЛИ
ПланыВидовРасчета.Все 12512j95m 42;идыРасчета.Выплата Тогда
нормы часов, по номеру строки, соответствующему номеру записи в
позже. При этом понятия Отработанное количество дней, Норма и
несколько разных по своей структуре регистров расчета... Но об этом
проведения документа в регистре расчета «РасчетыВсе» |
|
|
Конфигурирование в системе " 1С:Предприятие 8.0". Решение расчетных задач |
|
|
|
Конфигурирование в системе "1С предприятие 8.0". Решение расчетных задач
|
|
|
|
плане видов расчета «Все 12512j95m 42;идыРасчета» следующим образом:
Доработаем модуль документа «НачислениеЗарплатыВсе 12512j95m 81;».
Если Строка.ВидРасчета = ПланыВидовРасчета.Все 12512j95m 42;идыРасчета.Отпуск
Создадим и проведем документ «НачислениеЗарплатыВсе 12512j95m 81;»
|
|
|
действия, вводятся на основании уже имеющихся данных, поэтому являются вторичными данными. Отобразим сказанное на схеме.
Конфигурирование в системе " 1С:Предприятие 8.0". Решение расчетных задач |
|
|
|
". Решение расчетных задач
действия
(так работает
метод ПолучитьДанныеГрафика
(Отбор,
Доработаем документ «НачислениеЗарплатыВсе 12512j95m 81;».
сторно). Такие сторно-записи формируются на основании периодов действия записей регистра расчета и правил конкуренции за период действия, задаваемых списками вытесняемых видов расчета в плане
|
ййй£йЗ»^2&г:й¥£:5:Шя;^^
Движение.ПараметрРасчета = СтрокаПараметрРасчета;
Конфигурирование в системе " 1 С: Предприятие 8.0". Решение расчетных задач
«Все 12512j95m 42;идыРасчета» следующим образом:
Перерасчета можно вводить записи и самим из программного кода).
обращать внимания» на сведения, которые предоставляет нам система в таблице перерасчета, то есть отказаться от пересмотра результатов
Сонфигурирование в системе "1С: Предприятие 8.0". Решение расчетных задач
|
|
=у придется создать ряд новых объектов и внести изменения в
создадим обработку, в которой будет проверяться регистра расчета, которые необходимо будет пересчитать - т.е. «ПремииПроцентом»),
создадим константу «Дата запрета редактирования». Эта константа будет определять «закрытие» периода. Записи регистра расчета с периодом регистрации меньше (или редактирования» будут считаться архивными, их нельзя будет редактировать. Для пересчета таких записей будем внесем изменения в модуль документа
о Табличные части: ДокументыПерерасчета.
|
|
Вставим табличное поле СтрокиПерерасчета и определим тип
Подразделение: поле ввода типа СправочникСсылка.
Должность: поле ввода типа СправочникСсылка.
|
"ВЫБРАТЬ РАЗЛИЧНЫЕ
I
I
I");
следующий состав полей.
|
колонка с названием Пометка, содержащая значения Истина.
перерасчетов объекта «Перерасчет», соответствующих документу из
ДокументыПерерасчета.
Конфигурирование в системе "1С:Предприятие 8.0". Решение расчетных задач
Найдем
строку
с
февральским
окладом
Ивановой,
двойным щелчком
откроем
документ-регистратор
и
изменим оклад
Ивановой
с
760
на
800.
Проведем
|
|
|
|
При нажатии на кнопку «Выполнить перерасчет» вызывается
Если СтрокаТаблицы.Документ.ПериодРегистрации > Константы.ДатаЗапретаРедактирования.ПолучитьО Тогда
Сообщить("Перерасчитан "
Сообщить("Введен перерасчет документа "
Сообщить("Документ " + СтрокаТаблицы.Документ+ " не может быть перерасчитан автоматически");
ДокументыПерерасчета выполняется попытка:
пересчитать
расчеты
(фактически
перепровести
документы-регистраторы
этих расчетов),
которые попали
в «Перерасчет».
Это действие
выполняется
только
в
ввести
документы-перерасчеты
для расчетов,
которые
попали в
«Перерасчет».
Это действие
выполняется
в
модуль документа «НачислениеЗарплатыВсе 12512j95m 81;» процедуру
РВсе 12512j95m 52;енеджер=РегистрыРасчета.РасчетыВсе;
Отбор .Вставить("Регистратор",Ссылка);
Ресурсы[0] = "РасчетыВсе.Результат";
Измерения.Вставить("Подразделение","РасчетыВсе.Подразделение");
Измерения.Вставить("Должность","РасчетыВсе.Должность");
Измерения.Вставить("Сотрудник","РасчетыВсе.Сотрудник");
ДанныеБазы = РВсе 12512j95m 52;енеджер.ПолучитьБазу(Отбор,Ресурсы,Измерения);
РВсе 12512j95m 52;енеджер.ПолучитьДанныеГрафика(Отбор,ВидПериодаРегистраРасчета.Фактический ПериодДействия);
РВсе
12512j95m 52;енедхер.ПолучитьДанныеГрафика(Отбор,ВидПериодаРегистраРасчета.ПериодРегис
трации);
ОтработаноПоБазе =РВсе 12512j95m 52;енеджер.ПолучитьДанныеГрафика(Отбор,ВидПериодаРегистраРасчета.БазовыйПер
СтруктураПоиска = Новый Структура("Подразделение,Должность,Сотрудник");
найденной строке производится перерасчет записи (вызывается уже
Нажмем
в
обработке
«ПерерасчетЗарплаты»
кнопку
В результате в строке сообщений появится примерно
«Перерасчитан документ Начисление зарплаты всей 6 от
Для выполнения перерасчета с вводом
необходимо поместить в модуль документа
«НачислениеЗарплатыВсе 12512j95m 81;» процедуру
документа (перерасчета) на основании текущего, поэтому в модуль документа «НачислениеЗарплатыВсе 12512j95m 80;» также необходимо поместить процедуру ОбработкаЗаполнения.
ДокументПерерасчета = Документы.НачислениеЗарплатыВсе 12512j95m 81;.СоздатьДокумент();
"ВЫБРАТЬ
I
I
|где РегистрРасчета.РасчетыВсе.Регистратор=&парДокументОбъект
Запрос.УстановитьПараметр(" парДокументОбъект", Ссылка);
СтруктураПоиска = Новый Структура("Подразделение,Должность,Сотрудник");
НоваяСтрока.ВидРасчета = СтрокаРегистра.ВидРасчета; НоваяСтрока.Подразделение = СтрокаРегистраЛодразделение; НоваяСтрока.Должность = СтрокаРегистра.Должность; НоваяСтрока.График = СтрокаРегистра.График; НоваяСтрока.ВидРасчета = СтрокаРегистра.ВидРасчета;
НоваяСтрока.ВидРасчета = СтрокаРегистра.ВидРасчета; НоваяСтрока.Подразделение = СтрокаРегистраЛодразделение; НоваяСтрока.График = СтрокаРегистра.График; НоваяСтрока.ВидРасчета = СтрокаРегистра.ВидРасчета;
Конфигурирование в системе "1 С'Предприятие 8.0". Решение расчетных задач
Нажмем
в
обработке
«ПерерасчетЗарплаты»
кнопку
В результате в строке сообщений появится примерно
«НачислениеЗарплатыВсе
12512j95m 81;».
Откроем
последний
. Проведем данный документ.
В регистре расчета «РасчетыВсе» появятся две новые записи
|
Табличные
части: Сотрудники.
Реквизиты
табличной
о «Сотрудник»
|
|
Конфигурирование в системе "1 С:Предприятие 8.0". Решение расчетных задач |
|
В процедуре ОтчетРасчетыСотрудниковВсе 12512j95m 53;ажатие, связанной с
Макет = ПолучитьМакет("РасчетыСотрудников");
ТекстЗапроса = "ВЫБРАТЬ |
|КОГДА ВидРасчета.Тип=&Начисления ТОГДА СУММА(РасчетыВсе.Результат)
|КОГДА ВидРасчета.Тип=&Удержания ТОГДА СУММА(РасчетыВсе.Результат)
|КОГДА ВидРасчета.Тип=&Выплаты ТОГДА СУММА(РасчетыВсе.Результат)
|РасчетыВсе.ПериодРегистрации = &ДатаОтчета"; Условие="";
Условие = Условие + " И Сотрудник В Иерархии (&СписокСотрудников)";
Запрос.УстановитьПараметр("СписокСотрудников",
Сотрудники.ВыгрузитьКолонкуС'Сотрудник"));
ТекстЗапроса = ТекстЗапроса +"
■зирование в системе "1С:Предприятие 8.0"..
|";
Запрос .Текст = ТекстЗапроса; Запрос УстановитьПараметр("ДатаОтчета", ДатаОтчета);
Запрос .УстановитьПараметр("Начисления",
Запрос.У становитьПараметрС'Удержания",
Запрос .У становитьПараметрС'Выплаты", Перечисления.ТипыВидовРасчета.Выплата); Результат = Запрос.Выподнить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьЗаголовок.Параметры.ДатаОтчета=ДатаОтчета; ОбластьПодразделение = Макет.ПолучитьОбласть("Подразделение"); ОбластьДолжность = Макет.ПолучитьОбласть(" Должность"); ОбластьСотрудник = Макет.ПолучитьОбласть("Сотрудник"); ТабДок.Вывести(ОбластьЗаголовок);
|КОГДА ВидРасчета.Тип=&Начисления ТОГДА СУММА(РасчетыВсе.Результат)
|КОГДА ВидРасчета.Тип=&Удержания ТОГДА СУММА(РасчетыВсе.Результат)
|КОГДА ВидРасчета.Тип=&Выплаты ТОГДА СУММА(РасчетыВсе.Результат)
используем группировки, по каждой группировочной строке будет
Конфигурирование в системе "1С:Предприятие8,0". Решение расчетных задач
Создайте в плане видов расчета Все 12512j95m 42;идыРасчета предопределенный вид расчета Командировка. Выполните настройку базы вида расчета
[ |
|
|
|
|
|
|
|
|
"ВЫБРАТЬ
(ГрафикиРаботы.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания) И
ГрафикиРаботы.ГрафикРаботы=&График
|";
Запрос.УстановитьПараметрС'ДатаНачала", ДН); Запрос.УстановитьПараметр("ДатаОкончания", ДК); Запрос.УстановитьПараметр("График", График); Результат = Запрос.Выполнить();
нажатии на кнопку необходимо производить заполнение табличной
Колонка Месяц
в
табличной
части
должна
заполняться
Колонка ОтработаноДней
должна
содержать информацию
о
фактически отработанных
сотрудником
днях
(по
графику
Шестидневка) в
соответствующих
значениям из колонки
Месяц
Колонка Зарплата
должна содержать
информацию
о
колонки Месяц периодах.
Зарплата
сотрудника
должна
рассчитываться
как сумма результатов
видов расчета,
ЗапросФПД = Новый Запрос("ВЫБРАТЬ
РасчетыВсе. ПериодДействия = &Период И
РасчетыВсе.Должность = &Должность И
РасчетыВсе.Подразделение = &Подразделение И
РасчетыВсе.Сотрудник = &Сотрудник И
РасчетыВсе.ВидРасчета = &ВидРасчетаОклад");
ЗапросФПД.УстановитьПараметр("Период", Период);
ЗапросФПД.УстановитьПараметр(" Должность", Должность);
ЗапросФПД.УстановитьПараметр("Подразделение", Подразделение);
ЗапросФПД,УстановитьПараметр("Сотрудник", Сотрудник);
ЗапросФПД.УстановитьПараметр("ВидРасчетаОклад", ПланыВидовРасчега.Все 12512j95m 42;идыРасчета. Оклад);
каждой строке таблицы фактического периода действия, а затем накопление полученных результатов. В том случае, если фактический период действия не определялся, производится анализ записи. Также
регистр расчета еще не производилась.
Функция ПолучитьДанныеРасчетнойБазы(Период)
ЗапросБ = Новый
Запрос("ВЫБРАТЬ
|
ПланВидовРасчета.Все 12512j95m 42;идыРаечета.БазовыеВидыРасчета
Все 12512j95m 42;идыРасчетаБазовыеВидыРасчета
Все 12512j95m 42;идыРасчетаБазовыеВидыРасчета.ВидРасчета
РасчетыВсе.ПериодДействия = &Период И
РасчетыВсе.Должность = &Должность И
РасчетыВсе.Подразделение = &Подразделение И
РасчетыВсе.Сотрудник = &Сотрудник И
Все 12512j95m 42;идыРасчетаБазовыеВидыРасчета.Ссылка = &Командировка");
ЗапросБ.УстановитьПараметр("Период", Период); ЗапросБ.УстановитьПараметр(" Должность", Должность); ЗапросБ.УстановитьПараметр("Подразделение", Подразделение); ЗапросБ.УстановшъПараметрС'Сотрудник", Сотрудник);
ЗапросБ.УстановитьПараметрС'Командировка", ПланыВидовРасчета.Все 12512j95m 42;идыРасчета.Командировка);
В данной функции производится суммирование значений ресурса
которого можно было очень просто получить базу для записей
воспользоваться этим методом затруднительно, т.к. запись в
также элемент управления формы надпись (свойство «Данные»
котором отображайте среднедневной заработок сотрудника за
несколько периодов. Формула для определения среднедневного
Список.Итог( "Зарплата ")/
Список.Итог(''ОтработаноДней ").
результата начисления с учетом среднедневного заработка
Pe e e
"эмулировать" работу функций ПолучитьДанныеГрафика и ПолучитьДанныеРасчетнойБазы. Сложность «ручной» реализации используется большое количество запросов, что сильно «утяжеляет» решение. Оптимальнее получать все необходимые данные "за один раз", а не "мельчить", создавая сетевой трафик и получая много
Конфигурирование в системе "1 С:Предприятие 8.0". Решение расчетных задач
|
|
Конфигурироеание в системе " 1С:Предприятие 8.0". Решение расчетных задач
|
|
|
|
|