balance
Команда balance — остатки регистра накопления на дату в таблицу значений; разбор и модель работают, но в облачной среде сборка с ней останавливается.
Перед чтением
- data Справочник
На этой странице
balance описывает получение остатков регистра накопления на дату с группировкой по измерениям в таблицу значений. Разбор и запись в модель работают. В облачной среде собрать файл со спецификацией, где есть balance, сейчас нельзя: проверка измерений требует конфигурации, а загрузить её в облачной среде нельзя.
Назначение#
Команда нужна, когда к отчёту требуются остатки по регистру накопления на конец периода: например, количество активов по договорам. Результат кладётся в таблицу значений с именем из into.
Синтаксис#
balance <Вид>.<ИмяРегистра>
at <дата>
by <Измерение1>, <Измерение2>
into <таблица>Команда пишется на верхнем уровне спецификации; части можно переносить на отдельные строки, но порядок at → by → into обязателен.
Элементы#
| Элемент | Обязателен | Что означает |
|---|---|---|
<Вид>.<ИмяРегистра> | да | путь к регистру, обычно РегистрНакопления.… |
at <дата> | да | имя реквизита-даты, на которую берутся остатки; префикс epf. допускается и отбрасывается при генерации |
by <измерения> | да | имена измерений регистра через запятую (без имени регистра) |
into <таблица> | да | имя таблицы значений для результата; префикс epf. допускается |
Ресурс не задаётся: в запросе всегда используется КоличествоОстаток.
Пример#
spec1c {
report assets
title: "Остатки активов"
target: ordinary
data {
contracts = Справочник.КлиентскиеДоговора
fields: Ссылка, Код
}
balance РегистрНакопления.Активы
at epf.ДатаКонПериода
by Договор, Инструмент
into epf.тзОстатки
}Что принимает разбор#
- Все четыре части обязательны и только в порядке
at,by,into. Пропуск любой части или другой порядок — команда пропускается без сообщения; проверьте счётчик «· queries N» в уведомлении. - Путь к регистру — любой из восьми видов объектов (Ссылки на метаданные). Разбор не проверяет, что это регистр накопления:
balance РегистрСведений.…тоже будет принят. - Измерения в
byразбор принимает как есть, в том числе с точкой. - Несколько команд
balance(иturnovers) — все попадают в модель. - Спецификация только из
balance(безreportиdata) — не ошибка, только предупреждение «нет блока data { }».
Что попадает в модель#
Для каждой команды: вид balance, путь к регистру, дата (at), измерения (by) и таблица (into). Уведомление после «Применить без сборки» дополняется счётчиком «· queries N». В инспекторе (когда в дереве навигатора не выбран объект) появляется блок «balance / turnovers (N)» с черновиком текста запроса — по исходному коду Studio.
Что проверяется#
Каждое измерение из by должно быть измерением регистра по сведениям о метаданных загруженной конфигурации. В облачной среде конфигурации нет, поэтому проверка всегда заканчивается ошибкой (живая сверка):
- «Применить без сборки» записывает команду в модель, но в журнале появляется строка «✗ 3.5 3.5: нет пути conf — нельзя проверить by по Index», а уведомление дополняется счётчиком «· 3.5 ошибок 1».
- «Собрать .epf» при наличии источников данных останавливается с уведомлением «Сборка остановлена: 3.5: нет пути conf — нельзя проверить by по Index». Файл не собирается.
По исходному коду Studio, если в спецификации нет источников данных, проверка при сборке не выполняется, но и генерации кода нет — собираются текущие исходники без изменений.
При загруженной конфигурации проверка сообщала бы о ненайденном измерении или о реквизите, который не является измерением; в облачной среде до этого не доходит. Все сообщения Spec1C — Сообщения об ошибках и предупреждения.
Что генерируется в BSL#
Живой сборкой не проверялось — в облачной среде сборка останавливается. Ниже — по исходному коду генератора (фрагменты получены запуском генератора кода на примере выше):
// >>> SPEC1C_QUERIES_BEGIN
Процедура prc_Spec1C_Заполнить_тзОстатки(тзРезультат) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|Остатки.Договор КАК Договор,
|Остатки.Инструмент КАК Инструмент,
|Остатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.Активы.Остатки(&Момент) КАК Остатки
|";
Запрос.УстановитьПараметр("Момент", КонецДня(ДатаКонПериода));
тзРезультат = Запрос.Выполнить().Выгрузить();
КонецПроцедуры
// <<< SPEC1C_QUERIES_END- Для каждой команды — отдельная процедура заполнения; имя процедуры строится из
intoбезepf.. - Ресурс зашит:
КоличествоОстаток. Если у вашего регистра другой ресурс, запрос нужно исправить вручную. - Дата из
at(безepf.) подставляется как имя переменной:КонецДня(ДатаКонПериода). - Дополнительно генерируется процедура вывода таблицы значений в табличный документ.
- При
target: managedпроцедура заполнения вызывается из серверной процедуры формирования, результат выводится в табличный документ. Приtarget: ordinaryпроцедуры генерируются, но не вызываются.
Работа в 1С#
Не проверялось: файл с balance в облачной среде не собирается. По коду можно ожидать, что в новом файле нет реквизита для даты из at и что ресурс КоличествоОстаток есть не у каждого регистра.
Ограничения#
- В облачной среде сборка с
balanceостанавливается. - Ресурс зашит (
КоличествоОстаток). - Пропущенная часть или другой порядок частей — команда теряется без сообщения.
- Удаление команды не очищает модель.
- При
target: ordinaryсгенерированные процедуры не вызываются.
Полный список — Ограничения реализации.
Связанные конструкции#
- turnovers —
turnovers, обороты регистра. - Сообщения об ошибках и предупреждения — сообщения проверки.
- Ссылки на метаданные — пути к объектам и префикс
epf..
См. также
- turnovers Справочник
- Сообщения об ошибках и предупреждения Справочник
- Ссылки на метаданные Справочник
- Ограничения реализации Справочник
Сверено с продуктом: 27.10.2026