Обновлено 26.08.2019

Свойства расчета

Описание расчета состоит из 8 разделов:

  1. Страница
  2. Таблица
  3. Шаблоны
  4. Параметры
  5. Алгоритм расчета
  6. Условия
  7. Реквизиты
  8. Сумирование

Раздел "Cтраница"

Данный раздел содержит общие сведения об расчете:

  • Название
  • Тип - всегда список сотрудников
  • № по порядку
  • Группа
  • Строк на листе для формирования протокола расчета
  • Выдавать в головном меню (Да/Нет)
  • Выделять в головном меню (Да/Нет), если Да, то предлагается выбрать Шрифт и Фон названия отчета в головном меню.
  • Выдавать в меню Расчет (Да/Нет), которое рассположено на панели инструментов на кнопке (только для текстового бланка и расчетной ведомости), т.е. в данное меню выводятся т.н. персональные формы.
  • Кнопка быстрого доступа (Да/Нет) + Иконка, если Да, то данная иконка появтся на панели инструментов, как кнопка быстрого доступа к отчету;
  • Параметры страницы: отступ (сверху, снизу, слева, справа), ориентация (книжная, альбомная)
  • Нумеровать листы (только для отчета списочного типа)
  • Нумеровать колонки (только для отчета списочного типа)
  • Выдавать дату-время (только для отчета списочного типа)
  • Только на чтение - будет установлен режим запрета редактирования уже сформированного отчета
  • Выдавать итоги (Да/Нет)
  • Выдавать строку итого (Да/Нет)
  • Выдавать итоговый лист (Да/Нет)
  • Итоги могут выдаваться на каждом листе или в целом по отчету в виде итоговой строки и (или) в виде итогового листа. Какие реквизиты суммировать и куда выводить описывается в свойствах реквизитов в разделе Реквизиты и Суммирование .

Раздел "Таблица"

Здесь описываются свойства таблицы протокола расчета. Такая таблица состоит из заголовка, информационных строк и итоговой строки. Для каждого из этих элементов Вы можете описать Шрифт и Фон основного текста, а также цвет линий. Также Вы можете описать

  • Интервалы между ячейками по вертикале и горизонтале;
  • Интервалы между рамкой таблицы и ячейками по вертикале и горизонтале;
  • Поля ячеек;
  • Толщина линий;
  • Тип рамки;

Раздел "Шаблоны"

Любой алгоритм расчета на выходе должен завершаться протоколом или выходной формой. Структура протокола:

  • Титульный лист
  • Заголовок
  • Информационная строка
  • Заголовок
  • Подвал
  • Итоговый лист

Каждый из этих элементов описан шаблоном, т.е. это файл формата RTF или RVF, который при выполнении будет загружен в отчет и при этом если текст в файле совпадает с названием поля (см. Реквизиты), то данный текст будет заменен на значение этого поля.

Раздел "Параметры"

Параметры расчета - это список полей, которые будут запрошены при выполнении расчета. Свойства параметра:

  • Название - имя параметра, которое в алгоритме можно использовать как переменную .
  • Комментарий - выйдет при запросе параметра. Если комментарий не указан, то при запросе выйдет имя параметра.
  • Тип переменной - соответственно в алгоритме к ней можно будет применять функции для данного типа.
  • Длина и точность (для цифр) переменной
  • Список - перечисляются варианты значений через ";". Если переменная цифровая , то к ней можно обращатья по номеру варианта, если символьная - по значению.

Например: параметр "Цвет" цифровой длиной 2, список значений:

  1. Синий
  2. Красный
  3. Голубой

Если при выполнении расчета Вы выберете вариант "Красный", то переменная "Цвет: будет иметь значение = 2.

Если бы переменная "Цвет" имела символьный тип, то в данном случае ее значение = "Красный".

В дальнейшем Вы можете использовать переменную "Цвет" при описании Алгоритмов, Условий, а также при описании полей в разделе Реквизиты и Суммирование.

Раздел "Алгоритм"

Алгоритм расчета позволяет выполнить любые действия с использованием Интерпретатора FoxPro. Причем все переменный, которые будут определены в алгоритме можно использовать при описании Условий выборки, а также при описании полей в разделе Реквизиты и Суммирование.

Описание алгоритмов подробно описано в разделе Алгоритмы расчета.

Алгоритм расчета разбит на две части:

  1. До цикла - это алгоритм, который выполняется один раз, например, когда нужно проинициализировать переменные
  2. В цикле - это алгоритм, который выполняется для каждой записи списка

В алгоритме расчета обязательно должен присутствовать функция Формировать документ - записать одно начисление или удержание по текущему сотруднику.

Пример алгоритма "Табель":

* Подсчитываем количество часов и дней по рабочему календарю
ЧасКал = РабЧасы(1)
ДниКал = РабДни(1)
* Расчитываем повременную оплату, для этого оклад (SR.OKL) * отработанные часы (SR.T1) делим на часы по календарю и записываем в переменную Повременно и далее формируем 102 видом оплаты "повременно"
Повременная = SR.OKL*SR.T1/ЧасКал
=Формировать(Повременная,102,SR.T1,SR.T1/8)
*Заведование м/о - надбавка за заведование, формируем 112 видом оплаты
ЗавМО = Повременная*SR.MO/100
=Формировать(ЗавМО,112)
*Суммируем повременную и сдельную оплаты
ПоврСдел = Повременная + СумВоп(101)
*Надбавка за условия труда, формируем 118 видом оплаты
УсловияТруда = ПоврСдел*SR.UT/100
=Формировать(УсловияТруда,118)
*Надбавка за вредность, формируем 139 видом оплаты
ЗаВредность = ПоврСдел*SR.VREDN/100
=Формировать(ЗаВредность,139)
*Надбавка напряженность в работе, формируем 117 видом оплаты
Напряженность = ПоврСдел*SR.NAPR/100
=Формировать(Напряженность,117)
*Стимулирующая надбавка, формируем 150 видом оплаты
СтимулирующаяНадбавка = (Повременная+СумВОП(113))*SR.STIMULN/100
=Формировать(СтимулирующаяНадбавка,150)
*Бригадирские, формируем 126 видом оплаты
Бригадирские = ПоврСдел*SR.BRG/100
=Формировать(Бригадирские,126)
*Ночные, формируем 119 видом оплаты
Ночные = (SR.OKL*SR.NOHN/ЧасКал)*0.5
=Формировать(Ночные,119,SR.NOHN)
*Праздничные, формируем 114 видом оплаты
Праздничные = SR.OKL*SR.PRAZD/ЧасКал
=Формировать(Праздничные,114,SR.PRAZD)

Раздел "Условия"

Условия - это список условий выборки записей списка.

Например, условие для списка сотрудников:

СумНач(102)>0, где СумНач(102) - это сумма начислений по виду оплат 102 - повременная оплата (см. Зарплатные функции ) в список выйдут только те сотрудники, для которых данное условие верно.

Следует отметить, что можно было в Алгоритме написать:

СумПовременная=СумНач(102)

и тогда в условии можно написать:

СумПовременная>0

Это будет более правильно, поскольку переменную "СумПовременная" с момента ее появления можно использовать везде. С большой долей вероятности это значение надо будет выдать в Реквизитах.

Раздел "Реквизиты"

Каждый реквизит характеризуется названием, типом (цифровой, символьный, дата, логический), названием группы (только для отчета списочного типа), рядом свойств, и, самое главное, Алгоритмом расчета.

  • Название. Для отчетов списочного типа это может быть любой текст, который выйдет в заголовке. Для отчетов типа текстовый бланк название не должно содержать пробелы и спецсимволы (#,$;, и т.д.), только буквы и цифры, поскольку при выполнении такого отчета соответствующий текст в шаблоне будет заменен на значение реквизита.
  • Группа. Только для отчетов списочного типа. Если у рядом рассположенных полей название группы совпадает, то при формировании заголовка программа объединит такие поля под этим названием.
  • Тип. В зависимости от типа программа определяет, что можно делать с данным полем, а чего нет. Например, можно или нельзя его суммировать.
  • Дополнительный свойства:
    • Формат вывода (в зависимости от типа).
    • Предлагать для сортировки (только для отчета списочного типа).
    • Выравнивание горизонтальное и вертикальное (только для отчета списочного типа).
    • Суммировать, cуммировать итого на листе, суммировать общий итог (только для реквизита цифрового типа).
  • Алгоритм расчета.

    Алгоритм - это программа на языке FoxPro (см. Интерпретатор FoxPro) При описании алгоритма расчета поля можно использовать ранее определенные в Предварительном расчете переменные.

    Например: в предварительном расчете (на примере отчета "Расчетный листок"):

    СальдоНач=СумНач(299)

    ДолгНач=СумУдер(325)

    СумНач=СумНач()-СальдоНач

    СумУдер=СумУдер()-ДолгНач

    НаРуки=НаРуки()

    Долг=СумДолг()

    Допустим мы описываем поле "Долг", тогда алгоритм этого поля состоит из одной строки:

    return Долг

    Если поле "На руки", тогда алгоритм этого поля:

    return НаРуки

Причем, если в алгоритме расчета поля появляется переменная, то ее можно использовать во всех полях, которые рассположенны ниже данного поля.

Раздел "Суммирование"

Поля, рассположенные в разделе Суммирование, по всем свойствам ничем не отличаются от полей, рассположенных в разделе Реквизиты. Одно, но принципиальное отличие заключается в том, что поля в разделе Суммирование выводятся только на итоговый лист. Причем это может быть итоговый лист, заданный шаблоном или итоговый лист, формируемый автоматически. Все цифровые поля, которые выводятся на итоговый лист суммируются автоматически, поэтому, если Вы хотите вывести на итоговый лист поле цифрового формата (например, "Оклад", имя реквизита SR.OKL) и не хотите, чтобы оно суммировалось по каждому табельному, вам необходимо:

  1. описать поле как символьное
  2. в алгоритме преобразовать значение поля к символьному типу: str(SR.OKL,10,2)
Наверх Задать вопрос