Счётчики
Отслеживайте показания счётчиков коммунальных услуг для ваших объектов
Что такое счётчики?
Счётчики позволяют отслеживать показания приборов учёта для ваших объектов: электричество, вода, газ, отопление и другие коммунальные услуги. Каждый счётчик хранит серийный номер, начальное показание и историю всех показаний.
Ключевые возможности
- Привязаны к типам затрат (электричество, вода, газ и т.д.)
- Прикрепление документов к счётчикам и показаниям (фото, PDF, до 20 МБ)
- Полная история показаний с датами
- Автоматическая валидация: новые показания должны быть больше или равны предыдущим
- Поддержка многозонных тарифов на электричество (однозонный, двузонный, трёхзонный)
Тарифные зоны электроэнергии
Для счётчиков электроэнергии вы можете выбрать разные типы тарифов в зависимости от возможностей вашего счётчика.
| Тип тарифа | Зоны | Описание |
|---|---|---|
| однозонный | 1 зона | Стандартный счётчик с одним показанием. По умолчанию для всех типов затрат. |
| двухзонный | T1 (День (Т1)), T2 (Ночь (Т2)) | День/ночь счётчик. Введите обе зоны, сумма рассчитывается автоматически. |
| трёхзонный | T1 (Пик (Т1)), T2 (Полупик (Т2)), T3 (Ночь (Т3)) | Пик/полупик/ночь счётчик. Все зоны обязательны. |
Важно
Многозонные тарифы доступны только для типов затрат, которые их поддерживают (например, электроэнергия). При добавлении показания для многозонного счётчика необходимо ввести значения для всех зон.
Как создать счётчик?
Перейдите к вашему объекту
Откройте страницу объекта, где вы хотите добавить счётчик.
Откройте раздел Счётчики
Нажмите "Счётчики" в меню объекта, чтобы увидеть существующие счётчики или добавить новый.
Заполните данные счётчика
Выберите тип затрат, введите серийный номер, начальное показание и при желании загрузите фото счётчика.
Добавление показаний
После создания счётчика вы можете добавлять показания для отслеживания потребления со временем.
Правила валидации
Новые показания должны быть больше или равны предыдущим. Система не примет меньшие значения для обеспечения целостности данных.
Прикрепите документы
Загружайте фото дисплея счётчика или PDF-документы с каждым показанием для подтверждения и справки.
Отслеживайте даты
Всегда вводите точную дату снятия показания для точного отслеживания потребления.
Регулярные обновления
Добавляйте показания регулярно (ежемесячно) для отслеживания закономерностей потребления и раннего выявления проблем.
Корректировки и исправления
Иногда показания счётчиков необходимо корректировать из-за отката счётчика, замены или корректировок от поставщика услуг.
Потребление
Обычные показания. Новое значение должно быть больше или равно предыдущему показанию.
Корректировка
Корректировочные показания. Используйте, когда счётчик заменён, откатан или скорректирован поставщиком услуг.
Когда использовать корректировки?
- Замена счётчика - новый счётчик начинает с меньшего значения
- Откат счётчика после достижения максимального значения
- Корректировка от поставщика услуг после перерасчёта
- Исправление ошибки в ранее введённом показании
Важно
Корректировочные показания хранятся как отрицательные значения и исключаются из автоматических расчётов начислений.
Показания, привязанные к начислениям
Когда начисление создаётся на основе показаний счётчика, система автоматически привязывает показание к начислению.
Показание не привязано ни к одному начислению. Может быть отредактировано или удалено Собственником/Представителем.
Показание привязано к начислению. Не может быть отредактировано или удалено для обеспечения целостности данных.
Автоматическая привязка
При создании начисления для затрат на основе счётчика система автоматически находит и привязывает последнее непривязанное показание.
Правила привязки
| Тип показания | Может быть привязано | Причина |
|---|---|---|
| Обычное потребление | Да | Обычные показания отражают фактическое потребление |
| Корректировка/Исправление | Нет | Отрицательные значения не могут представлять потребление для оплаты |
| Начальное показание | Нет | Начальные показания являются отправными точками, а не потреблением |
Создание начислений
При создании начисления для расходов со счётчиками вы выбираете существующее показание вместо ввода значений вручную. Это обеспечивает целостность данных и правильный учёт.
Добавьте показание счётчика
Сначала добавьте новое показание счётчика с текущим значением.
Создайте начисление
Перейдите к расходу и создайте новое начисление. Выберите показание из списка.
Автоматический расчёт
Система автоматически рассчитывает потребление на основе разницы между выбранным показанием и предыдущим.
Нет непривязанных показаний?
Если нет доступных непривязанных показаний, вы не можете создать начисление. Сначала добавьте новое показание счётчика, затем вернитесь для создания начисления.
Создание начислений через API
# 1. Get available unlinked readings:
GET /api/v1/properties/{propertyId}/expenses/{expenseId}/unlinked-readings
# Response:
{
"has_counters": true,
"has_unlinked_readings": true,
"counters": [
{
"counter_id": 5,
"serial_number": "ABC-123456",
"unlinked_readings": [
{
"id": 12,
"date": "2026-01-15",
"value": "1500.00",
"previous_value": "1350.00",
"consumption": "150.0000"
}
]
}
]
}
# 2. Create charge with selected reading:
POST /api/v1/properties/{propertyId}/expenses/{expenseId}/charges
{
"charge_date": "2026-01-21",
"period_start": "2025-12-01",
"period_end": "2025-12-31",
"counter_value_ids": [12]
}
Права доступа
Разные участники объекта имеют разные права на счётчики и показания.
Права на счётчики
| Действие | Кто может это делать |
|---|---|
| Просмотр счётчиков | Все участники объекта |
| Создание счётчиков | Все участники объекта |
| Редактирование счётчиков | Все участники объекта |
| Удаление счётчиков | Только владелец и представитель |
Права на показания
| Действие | Кто может это делать |
|---|---|
| Просмотр показаний | Все участники объекта |
| Добавление показаний | Все участники объекта |
| Редактирование показаний | Только владелец и представитель |
| Удаление показаний | Только владелец и представитель |
Роли в объекте
- Владелец (PROPERTY_LANDLORD): Полный доступ ко всем операциям
- Представитель (PROPERTY_LANDLORD_AGENT): Может редактировать и удалять счётчики и показания
- Другие участники: Могут просматривать, создавать счётчики и добавлять новые показания
Статус счётчика
Счётчики могут быть активированы или деактивированы в зависимости от того, используются ли они в данный момент.
Счётчик используется. Можно добавлять новые показания, и счётчик будет использоваться для автоматического расчёта начислений.
Счётчик деактивирован. Он остаётся в системе для исторических записей, но не используется для новых расчётов.
Когда деактивировать счётчик?
- Счётчик заменён на новый
- Счётчик временно не работает
- Счётчик больше не актуален для объекта
Важно
Неактивные счётчики исключаются из автоматического расчёта начислений. Если вам нужно снова использовать счётчик, просто активируйте его.
Удаление счётчика
Для сохранения целостности данных счётчики с привязанными начислениями нельзя удалить.
Можно удалить
Счётчик не имеет показаний, связанных с начислениями. Вся история будет окончательно удалена.
Нельзя удалить
Счётчик имеет показания, связанные с начислениями. Вместо удаления деактивируйте счётчик для сохранения исторических данных.
Альтернатива удалению
Если вы не можете удалить счётчик, деактивируйте его. Деактивированные счётчики остаются в системе для справки, но не используются в новых расчётах.
REST API
Все API-эндпоинты требуют JWT-аутентификации.
Примечание уровня сервиса
API счётчиков
GET /api/v1/properties/{propertyId}/counters # List counters for property
POST /api/v1/properties/{propertyId}/counters # Create counter
GET /api/v1/properties/{propertyId}/counters/{id} # Counter details with readings
PUT /api/v1/properties/{propertyId}/counters/{id} # Update counter
DELETE /api/v1/properties/{propertyId}/counters/{id} # Delete counter (if no linked charges)
POST /api/v1/properties/{propertyId}/counters/{id}/toggle # Toggle active/inactive status
API показаний
POST /api/v1/properties/{propertyId}/counters/{counterId}/values # Add reading
PUT /api/v1/properties/{propertyId}/counters/{counterId}/values/{id} # Edit reading
DELETE /api/v1/properties/{propertyId}/counters/{counterId}/values/{id} # Delete reading
Документы счётчика
POST /properties/{propertyId}/counters/{id}/documents/upload # Upload document (multipart/form-data)
POST /properties/{propertyId}/counters/{id}/documents/{documentId}/delete # Delete document
Документы показания
POST /properties/{propertyId}/counters/{id}/values/{valueId}/documents/upload # Upload document (multipart/form-data)
POST /properties/{propertyId}/counters/{id}/values/{valueId}/documents/{documentId}/delete # Delete document
Ограничения файлов
Максимальный размер файла: 20 МБ. Поддерживаемые форматы: JPEG, PNG, GIF, WebP, HEIC, PDF. К каждому счётчику или показанию можно прикрепить несколько файлов.
Пример: Создание счётчика
POST /api/v1/properties/1/counters
Content-Type: application/json
Authorization: Bearer <token>
{
"expense_type_id": 1,
"serial_number": "ABC-123456",
"tariff_type": "TWO_ZONE",
"initial_value": "100.500",
"initial_value_t1": "60.300",
"initial_value_t2": "40.200",
"initial_value_date": "2026-01-01"
}
Пример: Добавление показания
POST /api/v1/properties/1/counters/5/values
Content-Type: application/json
Authorization: Bearer <token>
# Single-zone counter (regular consumption):
{ "value": "1350.75", "date": "2026-01-07" }
# Multi-zone counter (total auto-calculated):
{
"value_t1": "150.300",
"value_t2": "80.200",
"date": "2026-01-07"
}
# Adjustment reading (correction):
{
"value": "50.000",
"date": "2026-01-07",
"is_adjustment": true
}
Документы счётчика: Upload
POST /properties/1/counters/5/documents/upload
Content-Type: multipart/form-data
documents[] — file (jpg, jpeg, png, gif, webp, heic, pdf), max 20 MB
comment — string (optional)
# Response:
{ "success": true, "uploaded": 1 }
Документы показания: Upload
POST /properties/1/counters/5/values/12/documents/upload
Content-Type: multipart/form-data
documents[] — file (jpg, jpeg, png, gif, webp, heic, pdf), max 20 MB
comment — string (optional)
# Response:
{ "success": true, "uploaded": 2 }
Пример ответа
{
"id": 12,
"value": "230.500",
"value_t1": "150.300",
"value_t2": "80.200",
"value_t3": null,
"date": "2026-01-07",
"is_initial": false,
"is_adjustment": false,
"has_linked_charge": true,
"expense_charge_id": 45,
"can_edit": false,
"can_delete": false,
"documents_count": 2,
"created_at": "2026-01-07T10:30:00+00:00"
}
Связанные разделы
Swagger / OpenAPI
Полная документация API доступна в Swagger UI: /api/v1/doc