РегистрНакопления.<Имя регистра накопления>.Остатки

Язык запросов · Balance

Предназначена для получения остатков по регистру накопления. Данные представляют собой итоги ресурсов. При расчете итогов учитываются только активные записи. Таблица существует только для регистров остатков. Агрегация производится по измерениям указанным в запросе.

Синтаксис

РегистрНакопления.<Имя регистра накопления>.Остатки (AccumulationRegister.<Имя регистра накопления>.Balance)

Примеры платформы

ВЫБРАТЬ * ИЗ РегистрНакопления.УчетНоменклатуры.Остатки(&КонПериода,
    Номенклатура = &ПарНоменклатура)
Полное описание, параметры и ограничения

РегистрНакопления.<Имя регистра накопления>.Остатки (AccumulationRegister.<Имя регистра накопления>.Balance)

Синтаксис
РегистрНакопления.<Имя регистра накопления>.Остатки (AccumulationRegister.<Имя регистра накопления>.Balance)
Поля
<Имя измерения>
<Имя общего реквизита> (<Common attribute name>)
<Имя ресурса>Остаток (<Имя ресурса>Balance)

Параметры
Период (Period)
Условие (Condition)

Описание:

Предназначена для получения остатков по регистру накопления. Данные представляют собой итоги ресурсов.
При расчете итогов учитываются только активные записи.
Таблица существует только для регистров остатков.
Агрегация производится по измерениям указанным в запросе.

Пример:

// Получение остатков по регистру остатков по указанному товару

// на указанный момент времени

ВЫБРАТЬ * ИЗ РегистрНакопления.УчетНоменклатуры.Остатки(&КонПериода,
Номенклатура = &ПарНоменклатура)

Методическая информация

Практические примеры

Получить остаток учебного товара на включающей границе

Граница с видом Включая явно включает движение, попавшее точно на заданный момент.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. В отдельной учебной конфигурации создайте документ УчебноеДвижение с разрешённым проведением и автонумерацией. Реквизиты: Артикул (Строка 20), Количество (Число 15.3), Приход (Булево), Комментарий (Строка 100).

  2. Создайте регистр накопления УчебныеОстатки, вид Остатки. Измерение Артикул (Строка 20), ресурс Количество (Число 15.3), реквизит Комментарий (Строка 100). Регистратор — УчебноеДвижение; включите регистр в движения документа.

  3. В отдельной учебной конфигурации создайте общий реквизит УчебныйИсточник типа Строка 20. Разделение данных — Не использовать. В составе явно включите только учебный объект этого урока; использование — Использовать.

  4. Если общий реквизит не выведен на форму, его пустое строковое значение допустимо. Запрос всё равно покажет именованную колонку УчебныйИсточник. Это не разделитель данных и не механизм ограничения доступа.

  5. Общий реквизит УчебныйИсточник включите в состав именно регистра УчебныеОстатки. Виртуальные таблицы итогов этого урока его не используют: обычный неразделяющий реквизит там не является измерением.

  6. В модуль объекта документа вставьте отдельный обработчик проведения ниже. Обновите только учебную базу.

  7. Вручную проведите два учебных документа: 01.10.2026 12:00:00, Артикул КНИГА, Количество 10, Приход Истина, Комментарий Поступление; 02.10.2026 12:00:00, тот же артикул, Количество 3, Приход Ложь, Комментарий Продажа. Других движений КНИГА в этом учебном регистре не должно быть.

  8. Основной код запроса запускайте в отдельной серверной процедуре учебной обработки, не внутри проведения. Запрос ничего не пишет и не перепроводит.

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Данные.Артикул, Данные.КоличествоОстаток
|ИЗ РегистрНакопления.УчебныеОстатки.Остатки(&Граница, Артикул = &Артикул) КАК Данные";
Запрос.УстановитьПараметр("Граница", Новый Граница(Дата(2026, 10, 2, 12), ВидГраницы.Включая));
Запрос.УстановитьПараметр("Артикул", "КНИГА");
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
    Для Каждого Колонка Из Результат.Колонки Цикл
        Сообщить(Колонка.Имя + ": " + Строка(Выборка[Колонка.Имя]));
    КонецЦикла;
КонецЦикла;
Проведение учебного движения

Документы → УчебноеДвижение → Модуль объекта

Выполняется только при ручном проведении подготовленных учебных документов.

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    Движения.УчебныеОстатки.Записывать = Истина;
    Запись = Движения.УчебныеОстатки.Добавить();
    Запись.Период = Дата;
    Запись.Активность = Истина;
    Запись.Артикул = Артикул;
    Запись.Количество = Количество;
    Запись.Комментарий = Комментарий;
    Запись.УчебныйИсточник = "Урок";
    Если Приход Тогда
        Запись.ВидДвижения = ВидДвиженияНакопления.Приход;
    Иначе
        Запись.ВидДвижения = ВидДвиженияНакопления.Расход;
    КонецЕсли;
КонецПроцедуры

Разбор по шагам

  1. Параметр Граница имеет тип Граница, а не просто Дата.

  2. Включая учитывает запись точно на времени границы.

  3. Условие по артикулу ограничивает записи, по которым считается остаток.

Как проверить результат

  1. На 02.10.2026 12:00:00 с Включая показан остаток 7.

  2. Замените Включая на Исключая на том же времени: расход 3 не входит, остаток равен 10.

Ожидаемый результат

Остаток получен с явно выбранным правилом включения граничной записи.

На что обратить внимание

  1. У простой даты в параметре Остатки другое поведение на самой границе; не теряйте различие между Дата и Граница.

  2. Таблица Остатки существует для регистра остатков, не для регистра оборотов.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.