Виртуальная таблица ДанныеГрафика в регистрах расчета 1С: настройка и применение

Раскрываем секреты периодических расчетов в 1С 8. Узнайте, как графики привязывают начисления к календарю и упрощают жизнь бухгалтеру.

Бесплатная консультация юриста

+7 (800) 302-87-29

Реклама jurik.ru

Регистры расчета — это сердце расчетного механизма 1С:Предприятие 8․ Они предназначены для реализации периодических расчетов (начислений, удержаний) и регистрации их результатов․ Одной из ключевых особенностей регистров расчета с поддержкой периода действия является возможность использования графиков для привязки расчетов к временным схемам (например, к производственному календарю или графикам работы сотрудников)․

Для работы с этими данными платформа предоставляет специальную виртуальную таблицу — ДанныеГрафика․ В данной статье подробно рассмотрим, что это такое, как это настроить и как правильно запрашивать данные для расчетов․

Теоретические основы: Регистр расчета и График

Типы регистров расчета

Существует два основных типа регистров расчета:

  • Без поддержки периода действия — используются для разовых расчетов, не привязанных к временной шкале (например, премия за год, материальная помощь)․
  • С поддержкой периода действия — предназначены для периодических расчетов (оклад, районный коэффициент, больничный), результаты которых «размазываются» по времени․ Именно этот тип позволяет использовать Графики․

Что такое График (График времени)?

График, это ссылка на непериодический регистр сведений определенной структуры, который описывает временную схему исходных данных, участвующих в расчете․ Простыми словами, это производственный календарь или график смен конкретного сотрудника․

Стандартная структура регистра сведений-графика:

  • Измерения: как минимум два — «График» (ссылка на справочник графиков работы) и «Дата» (тип Дата)․
  • Ресурсы: числовые значения, учитываемые во времени (например, «Часы», «Дни», «Коэффициент»)․

Пример записи графика:

График (Справочник) Дата Часы (Ресурс)
Пятидневка 40 часов 8
Пятидневка 40 часов 8
Пятидневка 40 часов 0

Настройка связи в конфигураторе

Чтобы виртуальная таблица ДанныеГрафика стала доступна, в свойствах регистра расчета необходимо:

  1. Установить флаг Период действия․
  2. Заполнить свойство График, указать ссылку на регистр сведений, играющий роль графика․
  3. В измерениях регистра расчета должно быть измерение, соответствующее измерению «График» в регистре сведений (обычно это «ГрафикРаботы» или «ТабельныйНомер» с соответствующим реквизитом)․

Виртуальная таблица ДанныеГрафика: назначение и параметры

Виртуальная таблица ДанныеГрафика предназначена для получения сведений из регистра-графика с учетом периодов регистра расчета․ Она позволяет получить сумму ресурса графика (например, плановых часов) для строки регистра расчета, учитывая:

  • Базовый период строки регистра расчета․
  • Период действия строки регистра расчета․
  • Период регистрации (текущий период расчета)․
  • Фактический период действия (пересечение периода действия и периода регистрации)․

Параметры виртуальной таблицы

В запросе таблица вызывается со следующими параметрами:

ДанныеГрафика(<ПериодНачало>, <ПериодКонец>, <График>, <ЗначениеГрафика>, <ДатаГрафика>)
  • ПериодНачало, ПериодКонец — границы периода, за который запрашиваются данные графика (обычно это границы базового периода или фактического периода действия)․
  • График — значение измерения «График» (ссылка на элемент справочника графиков работы)․
  • ЗначениеГрафика — имя ресурса регистра-графика, который нужно получить (например, «Часы»)․
  • ДатаГрафика, имя измерения типа «Дата» в регистре-графике․

Возвращаемые поля

Таблица возвращает набор записей, где каждая запись соответствует уникальной комбинации измерений регистра расчета (в контексте запроса) и содержит:

  • Измерения регистра расчета (Сотрудник, ГрафикРаботы и т․д․)․
  • ЗначениеГрафика — сумму ресурса графика за запрошенный период․

Практический пример: Расчет оклада за неполный месяц

Рассмотрим классическую задачу: расчет зарплаты сотрудника, отработавшего неполный месяц․

Исходные данные (из движений документа)

  • Плановых часов в месяце (по графику): 184 часа․
  • Оклад сотрудника: 60 000 руб․
  • Отработано часов (фактически): 64 часа․
  • Начисленная зарплата: 20 869,57 руб․

Проверка расчета

Формула расчета оклада за отработанное время:

Начисление = (Оклад / ПлановыеЧасы) * ФактическиеЧасы

(60 000 / 184) * 64 = 326,0869․․․ * 64 = 20 869,57 руб․

Расчет сходится․ Задача программиста, автоматизировать получение «Плановых часов» (184) через виртуальную таблицу ДанныеГрафика․

Пример запроса для получения плановых часов

Предположим, мы пишем запрос в модуле менеджера регистра расчета или в наборе записей для заполнения ресурса «ПлановыеЧасы» перед расчетом․

ВЫБРАТЬ
 Начисления․Сотрудник,
 Начисления․ГрафикРаботы,
 ДанныеГрафика․Часы КАК ПлановыеЧасы
ИЗ
 РегистрРасчета․Начисления КАК Начисления
 ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета․Начисления․ДанныеГрафика(
 &ПериодНачало, 
 &ПериодКонец, 
 Начисления․ГрафикРаботы, 
 "Часы", 
 "Дата"
 ) КАК ДанныеГрафика
 ПО Начисления․Сотрудник = ДанныеГрафика․Сотрудник
ГДЕ
 Начисления․ПериодРегистрации = &ПериодРегистрации
 И Начисления․ВидРасчета = &ВидРасчетаОклад

Разбор параметров:

  • &ПериодНачало, &ПериодКонец — обычно передаются границы Базового периода строки регистра расчета (доступны как БазовыйПериодНачало и БазовыйПериодКонец в виртуальных таблицах записей) или границы Фактического периода действия․
  • Начисления․ГрафикРаботы — измерение регистра расчета, ссылающееся на справочник графиков․
  • «Часы» — имя ресурса в регистре сведений-графике․
  • «Дата», имя измерения типа Дата в регистре сведений-графике․

Важные нюансы и «подводные камни»

Базовый период vs Фактический период действия

Это самая частая ошибка․

  • Базовый период, это период, за который планировался расчет (например, полный календарный месяц 01․09 – 30․09)․ Если мы запрашиваем график за базовый период, мы получим плановые часы за полный месяц (184)․ Это нужно для расчета «ставки в час» (Оклад / 184)․
  • Фактический период действия — это пересечение периода действия записи и периода регистрации (периода, за который считаем зарплату)․ Если сотрудник уволился 15 числа, фактический период действия будет 01․09 – 15․09․ Запрос графика за этот период даст плановые часы за первую половину месяца․

Правило: Для расчета тарифной ставки в час (день) используйте Базовый период․ Для расчета «плановых часов за фактически отработанное время» (например, для расчета среднего заработка) — Фактический период действия․

Виртуальная таблица «ФактическийПериодДействия»

Часто в паре с ДанныеГрафика используется виртуальная таблица ФактическийПериодДействия․ Она позволяет получить границы фактического периода действия для каждой строки регистра расчета без ручного вычисления пересечений дат․

ВЫБРАТЬ
 ФПД․Сотрудник,
 ФПД․ПериодНачало КАК ФактНачало,
 ФПД․ПериодКонец КАК ФактКонец
ИЗ
 РегистрРасчета․Начисления․ФактическийПериодДействия(&ПериодРегистрации) КАК ФПД

Полученные даты ФактНачало и ФактКонец можно передать в параметры ДанныеГрафика․

Ресурс «Значение графика» в измерениях регистра расчета

В некоторых конфигурациях (например, ЗУП) в регистре расчета есть измерение/реквизит ЗначениеГрафика или ДатаГрафика․ Их заполнение обязательно для корректной работы виртуальной таблицы, если график привязан не только к сотруднику, но и к конкретным датам (сменный график)․ Платформа использует эти поля для отбора нужных срезов графика․

Производительность

  • Виртуальная таблица ДанныеГрафика выполняет агрегацию (SUM) по регистру сведений-графику «на лету»․ При больших объемах данных (тысячи сотрудников, годы истории) это может быть затратной операцией․
  • Рекомендуется запрашивать данные графика только для нужных сотрудников и нужных периодов (использовать временные таблицы или отборы в запросе)․
  • Индексы регистра сведений-графика должны включать измерение «График» и «Дата» в начале․

Типовые ошибки при работе с ДаннымиГрафика

  1. Ошибка «Поле не найдено» или «Таблица не найдена»: Свойство «График» не заполнено в свойствах регистра расчета в конфигураторе․
  2. Неверное имя ресурса/измерения: В параметрах виртуальной таблицы переданы строки («Часы», «Дата»), которые не совпадают с точными именами ресурса и измерения даты в регистре сведений-графике (чувствительно к регистру)․
  3. Пустой результат: В регистре сведений-графике нет записей для переданного значения измерения «График» и диапазона дат․ Проверьте заполнение производственного календаря․
  4. Дублирование строк: Если в регистре расчета несколько строк с одинаковым сотрудником и графиком за один период регистрации, соединение (JOIN) с ДаннымиГрафика умножит строки․ Используйте группировку или запрашивайте график в отдельном подзапросе/временной таблице․

Виртуальная таблица ДанныеГрафика — мощный инструмент платформы 1С:Предприятие 8, позволяющий декларативно получать плановые показатели времени (часы, дни) из производственных календарей и графиков работы, автоматически учитывая сложную логику периодов действия и регистрации․

Ключевые моменты для запоминания:

  • График — это обычный регистр сведений (График + Дата -> Часы/Дни)․
  • Связь настраивается в свойствах регистра расчета (флаг Период действия + свойство График)․
  • Параметры вызова: Период, График, ИмяРесурса, ИмяИзмеренияДаты;
  • Выбирайте правильный период: Базовый для ставок, Фактический для пропорций за отработанное время․
  • Используйте ФактическийПериодДействия для автоматического определения границ пересечения периодов․

Грамотное использование этого механизма избавляет от написания сложных ручных запросов к календарям и гарантирует корректность расчетов при изменении законодательства или графиков работы․