Как создать и настроить тарификацию услуг в 1С с нуля

· 9 мин

Содержание

Тарификация в 1С — это механизм, который хранит цены на услуги и по ним автоматически считает суммы к начислению за период. Минимальный набор для настройки с нуля — три объекта: справочник услуг, справочник тарифных планов и периодический регистр сведений с ценами. Само начисление делает документ или обработка, которая на нужную дату берёт из регистра актуальный тариф и умножает его на объём.

Сразу уточню границу. В типовых «Бухгалтерии» или «Управлении торговлей» отдельного объекта «тарификация услуг» нет — там работают с прайс-листами и реализацией. Полноценная тарификация с тарифными планами и периодическим начислением встречается в отраслевых решениях (биллинг связи, ЖКХ, абонентское обслуживание) и в доработках под конкретный учёт. Ниже — как устроить такой механизм: какие объекты завести, как создать тарифный план и настроить автоматический расчёт, чтобы он выдерживал базу на тысячи лицевых счетов.

Что такое тарификация и когда она действительно нужна

Тарификация нужна там, где одна и та же услуга начисляется многим клиентам регулярно и по заранее заданной цене. Классические сценарии:

  • 🏢 ЖКХ и управляющие компании — начисление по лицевым счетам (вода, отопление, содержание).
  • 📞 Связь и интернет — помесячная плата по тарифному плану абонента.
  • 🔁 Абонентское обслуживание — фиксированный платёж за пакет услуг.
  • 🏭 Аренда и сервис — повторяющиеся счета по договору.

Общая черта — расчёт повторяется каждый период, объёмы и состав абонентов меняются, а руками это считать невозможно. Отсюда и требование к механизму: тариф хранится отдельно от начисления, с историей изменений, а суммы формируются автоматически.

А вот когда тарификацию заводить не нужно: услуг две-три, цена фиксированная и редко меняется, клиентов немного. Тогда проще обойтись обычным прайс-листом и ручным документом реализации — отдельный механизм тарифных планов только усложнит базу.

Какие объекты конфигурации понадобятся

Прежде чем создавать тарифный план, разберитесь со структурой данных. Вот минимальный каркас и роль каждого объекта.

ОбъектРоль в тарификации
Справочник «Услуги»перечень того, что тарифицируется (строка, кубометр, минута, абонплата)
Справочник «Тарифные планы»набор услуг с условиями: период действия, валюта, правила
Периодический регистр сведений «Тарифы»хранит цену услуги на дату — главный объект, он даёт историю
Документ «Установка тарифов»регистратор, который пишет цены в регистр
Документ или обработка «Начисление»формирует суммы по абонентам за период
Регистр накопления (при необходимости)копит начисленное и оплаченное для сальдо

Ключевой объект — периодический регистр сведений. Именно периодичность (обычно «в пределах дня») позволяет хранить разные цены на одну услугу в разные даты и не терять историю. Если цену держать прямо в карточке услуги или тарифного плана, то при первом же изменении тарифа пересчитается всё прошлое — это самая частая ошибка проектирования.

Измерения регистра тарифов задайте так: тарифный план + услуга (и при необходимости — категория абонента). Ресурс — цена. Тогда один и тот же вид услуги может иметь разную стоимость в разных планах.

Точное размещение этих объектов в интерфейсе зависит от конфигурации: в отраслевых решениях они уже есть в разделе расчётов, в доработке их создаёт разработчик в Конфигураторе. Разработку структуры без уверенности в задаче лучше начинать на копии базы.

Создание тарифного плана с нуля: по шагам

Порядок одинаков и для типового отраслевого решения, и для доработки — меняется только, где именно открываются списки.

  1. Заведите услуги. В справочнике услуг создайте позиции с единицей измерения (мес, м³, мин, шт). Единица определяет, на что умножается тариф при начислении.
  2. Создайте тарифный план. В карточке плана укажите наименование, дату начала действия и валюту. Если планов будет несколько (базовый, льготный, корпоративный) — заложите признак для отбора.
  3. Привяжите услуги к плану и задайте цены. Для каждой услуги плана укажите стоимость за единицу. Это ещё не запись в регистр — это заготовка.
  4. Запишите тарифы документом установки. Документ «Установка тарифов» на дату начала действия переносит цены в периодический регистр. С этого момента они считаются действующими.
  5. Назначьте план абонентам. Свяжите тарифный план с договорами, лицевыми счетами или контрагентами — там, где ведётся список обслуживаемых.

После пятого шага система знает, кому, что и по какой цене начислять. Проверьте результат: откройте регистр тарифов и убедитесь, что по услуге стоит ожидаемая цена на нужную дату. Если цены нет — не проведён документ установки.

Автоматический расчёт и начисление услуг

Начисление — отдельный документ за период (месяц). Его логика проста: для каждого абонента и каждой услуги его плана он запросом берёт из регистра тариф на дату начисления и умножает на объём.

Формула одной строки:

Сумма = Объём × Тариф(на дату периода)

Пример с фиксированной абонплатой. Тариф плана — 850 руб. в месяц, абонентов на плане — 120. За месяц начислится:

850 × 120 = 102 000 руб.

Пример с объёмной услугой. Тариф воды — 45,20 руб. за кубометр, по счётчику прошло 8 м³:

8 × 45,20 = 361,60 руб.

Если тариф прогрессивный (разная цена за объём сверх нормы), в документе начисления реализуют шкалу: первые N единиц по одной цене, остаток — по другой. Шкалу удобно хранить в том же регистре тарифов отдельными записями по порогам.

Отдельно стоит разобрать составной тариф — когда в плане есть постоянная часть (абонплата) и переменная (плата за превышение лимита). Такой тариф считают в две строки и складывают. Например, в плане абонплата 350 руб. с включёнными 300 минутами, минута сверх лимита — 3 руб. Абонент наговорил 480 минут:

Сверх лимита: 480 − 300 = 180 мин
Переменная часть: 180 × 3 = 540 руб.
Итого: 350 + 540 = 890 руб.

Включённый объём (лимит) логично хранить тем же регистром тарифов — как ещё один ресурс рядом с ценой. Тогда и цена, и лимит меняются одной записью и не разъезжаются по датам.

Решите заранее, где округляете — по каждой строке или по итогу документа. Округление каждой строки до копейки и округление общей суммы дают разный результат на больших объёмах. Зафиксируйте одно правило и примените его единообразно.

Объём (показания счётчиков, количество дней обслуживания) заносят до начисления — вручную, импортом или отдельным документом ввода показаний. Начисление только считает, данные об объёме берёт готовыми.

Автоматизация: расчёт без ручного запуска

Ручной запуск начисления для каждого абонента не масштабируется. Автоматизируют это двумя приёмами.

  • Пакетное формирование. Один документ начисления обрабатывает сразу всех абонентов нужного плана или всю базу за период, создавая строки по каждому. Не делайте по документу на абонента — на тысячах счетов это убьёт производительность.
  • Регламентное задание. Запуск начисления по расписанию — например, первого числа каждого месяца. Задание формирует документы, при необходимости проводит их и фиксирует результат в журнале.

Чтобы выбрать подходящий способ под вашу задачу и не усложнить без нужды, пройдите короткое дерево решений.

Как реализовать тарификацию под вашу задачу?

После каждого автоматического прогона нужен контроль, иначе ошибки всплывут на этапе выставления счетов. Минимум — сверить число созданных документов с числом активных абонентов и просмотреть журнал регистрации на предмет сбоев проведения. Удобно, когда задание пишет короткий итог: сколько документов создано, на какую сумму, сколько абонентов пропущено и почему. Пропуски (нет тарифа на дату, не введён объём, закрыт договор) разбирают до закрытия периода.

Регламентное начисление на большой базе создаёт заметную нагрузку. Ставьте его на нерабочие часы (ночь, раннее утро) и предупредите, что во время прогона база будет отзываться медленнее. Перед первым автоматическим запуском обязательно прогоните начисление вручную на тестовом периоде.

Типичные ошибки при настройке тарификации

Эти проблемы всплывают уже после запуска, когда данные накоплены. Разберём по симптомам.

Диагностика: выберите симптом

Общее правило: тариф и начисление — это разные сущности. Тариф отвечает на вопрос «сколько стоит на эту дату», начисление — «кому и в каком объёме». Смешивать их в одном объекте нельзя.

Оптимизация тарификации для больших баз

Когда абонентов тысячи, узким местом становится не логика, а скорость запросов. Что помогает удержать расчёт в разумном времени:

  • 🔹 Индексация измерений регистра тарифов и регистров начислений — запрос по конкретному абоненту и услуге тогда не перебирает всю таблицу.
  • 🔹 Пакетная обработка вместо построчной: собирайте данные одним запросом с временными таблицами, а не циклом с обращением к базе на каждого абонента.
  • 🔹 Отбор по периоду в запросе начисления — не читайте весь регистр, ограничивайте выборку датами расчётного месяца.
  • 🔹 Фоновое задание для тяжёлого прогона — расчёт идёт в фоне, пользователи продолжают работать.
  • 🔹 Свёртка истории тарифов, которые уже не нужны для перерасчётов, — чем меньше лишних записей в регистре, тем быстрее выборка.

На практике переход от построчной обработки к одному пакетному запросу с временными таблицами сокращает время начисления базы на несколько тысяч абонентов с десятков минут до единиц. Остальные приёмы дают прирост на порядок меньше, но вместе ощутимы.

Перед оптимизацией снимите замер времени на реальном объёме (например, через журнал регистрации или замер производительности в конфигураторе). Иначе непонятно, что именно тормозит — запрос начисления, проведение или обновление итогов регистра.

Частые вопросы

Чем тарифный план отличается от обычного прайс-листа?
Прайс-лист — это цены на момент продажи, он не хранит, кому и регулярно ли начислять. Тарифный план привязан к абоненту и работает в связке с периодическим начислением: система сама считает суммы каждый период без участия менеджера.
Можно ли хранить несколько тарифов на одну услугу одновременно?
Да. Если в измерениях периодического регистра есть тарифный план (и, при необходимости, категория абонента), одна услуга спокойно имеет разную цену в базовом и льготном плане на одну и ту же дату.
Как учесть повышение тарифа с середины месяца?
Задайте периодичность регистра «в пределах дня» и запишите новую цену документом на дату изменения. Начисление тогда делят на два отрезка — до и после даты, — и каждый считают по своей цене пропорционально дням.
Нужна ли доработка конфигурации или где-то это есть из коробки?
В отраслевых решениях (ЖКХ, биллинг, абонентское обслуживание) механизм встроен. В типовых «Бухгалтерии» и «Управлении торговлей» готовой тарификации услуг нет — там либо берут отраслевое решение, либо дорабатывают объекты под задачу.
Как пересчитать уже начисленное после смены тарифа задним числом?
Отмените проведение документов начисления за затронутый период и перепроведите их — они возьмут обновлённые цены из регистра. На закрытых периодах делайте это только после согласования, корректнее оформить отдельным документом доначисления или сторно.