Smart1Spec Документация
Studio
СправочникИзучающий Spec1C

balance

Команда balance — остатки регистра накопления на дату в таблицу значений; разбор и модель работают, но в облачной среде сборка с ней останавливается.

Перед чтением

  • data Справочник
На этой странице

balance описывает получение остатков регистра накопления на дату с группировкой по измерениям в таблицу значений. Разбор и запись в модель работают. В облачной среде собрать файл со спецификацией, где есть balance, сейчас нельзя: проверка измерений требует конфигурации, а загрузить её в облачной среде нельзя.

Назначение#

Команда нужна, когда к отчёту требуются остатки по регистру накопления на конец периода: например, количество активов по договорам. Результат кладётся в таблицу значений с именем из into.

Синтаксис#

Spec1C
balance <Вид>.<ИмяРегистра>
  at   <дата>
  by   <Измерение1>, <Измерение2>
  into <таблица>

Команда пишется на верхнем уровне спецификации; части можно переносить на отдельные строки, но порядок at → by → into обязателен.

Элементы#

ЭлементОбязателенЧто означает
<Вид>.<ИмяРегистра>дапуть к регистру, обычно РегистрНакопления.…
at <дата>даимя реквизита-даты, на которую берутся остатки; префикс epf. допускается и отбрасывается при генерации
by <измерения>даимена измерений регистра через запятую (без имени регистра)
into <таблица>даимя таблицы значений для результата; префикс epf. допускается

Ресурс не задаётся: в запросе всегда используется КоличествоОстаток.

Пример#

Spec1C
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#

Живой сборкой не проверялось — в облачной среде сборка останавливается. Ниже — по исходному коду генератора (фрагменты получены запуском генератора кода на примере выше):

BSL
// >>> SPEC1C_QUERIES_BEGIN
Процедура prc_Spec1C_Заполнить_тзОстатки(тзРезультат) Экспорт
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
		|Остатки.Договор КАК Договор,
		|Остатки.Инструмент КАК Инструмент,
		|Остатки.КоличествоОстаток КАК КоличествоОстаток
		|ИЗ
		|	РегистрНакопления.Активы.Остатки(&Момент) КАК Остатки
		|";
	Запрос.УстановитьПараметр("Момент", КонецДня(ДатаКонПериода));
	тзРезультат = Запрос.Выполнить().Выгрузить();
КонецПроцедуры
// <<< SPEC1C_QUERIES_END
  • Для каждой команды — отдельная процедура заполнения; имя процедуры строится из into без epf..
  • Ресурс зашит: КоличествоОстаток. Если у вашего регистра другой ресурс, запрос нужно исправить вручную.
  • Дата из at (без epf.) подставляется как имя переменной: КонецДня(ДатаКонПериода).
  • Дополнительно генерируется процедура вывода таблицы значений в табличный документ.
  • При target: managed процедура заполнения вызывается из серверной процедуры формирования, результат выводится в табличный документ. При target: ordinary процедуры генерируются, но не вызываются.

Работа в 1С#

Не проверялось: файл с balance в облачной среде не собирается. По коду можно ожидать, что в новом файле нет реквизита для даты из at и что ресурс КоличествоОстаток есть не у каждого регистра.

Ограничения#

  • В облачной среде сборка с balance останавливается.
  • Ресурс зашит (КоличествоОстаток).
  • Пропущенная часть или другой порядок частей — команда теряется без сообщения.
  • Удаление команды не очищает модель.
  • При target: ordinary сгенерированные процедуры не вызываются.

Полный список — Ограничения реализации.

Связанные конструкции#

См. также

Сверено с продуктом: 27.10.2026

Нашли неточность? Напишите на [email protected] и укажите адрес страницы.

Smart1Spec · документация описывает текущую версию сервиса.