Как получить кредитовое сальдо на начало периода в запросе 1С?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При разработке отчетов, обработок и интеграционных механизмов часто требуется получить начальный остаток по кредиту определенного счета или группы счетов. В конструкторе запросов 1С для регистра бухгалтерии доступно несколько виртуальных таблиц, и выбор правильной таблицы напрямую влияет на производительность и корректность получаемых данных.

Разберем по шагам, какими способами можно извлечь кредитовое сальдо на дату, в чем различия между таблицами остатков и как правильно накладывать условия.

Способ 1. Использование виртуальной таблицы «Остатки»

Если для задачи не требуются обороты за период, а нужно только сальдо на конкретный момент времени, оптимальным выбором с точки зрения быстродействия является виртуальная таблица Остатки регистра бухгалтерии. В ней доступно готовое ресурсное поле СуммаОстатокКт.

Посмотрим на пример запроса:


ВЫБРАТЬ
    ХозрасчетныйОстатки.СуммаОстатокКт КАК СуммаОстатокКт
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(&НачалоПериода, Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстатки

Проанализируем ключевые особенности этого варианта:

  1. Экономия ресурсов СУБД: таблица Остатки рассчитывает только срез итогов на указанную дату, не выполняя чтение и агрегацию движений за интервал.
  2. Передача условий в параметры: отбор по счету или списку счетов обязательно нужно указывать во втором параметре виртуальной таблицы (Счет В ИЕРАРХИИ (&Счет) или Счет = &Счет), а не в блоке ГДЕ. Это позволяет платформе ограничить выборку на уровне обращения к таблицам итогов.
  3. Поведение границы даты: если в параметр &НачалоПериода передается тип Дата (например, 01.01.2026 00:00:00), остаток рассчитывается строго на начало первой секунды этой даты, то есть движения, проведенные этой же секундой, в расчет не включаются. Если требуется включить документы на точный момент времени, в код передается объект Граница с видом границы ВидГраницы.Включая.

Способ 2. Использование виртуальной таблицы «ОстаткиИОбороты»

В ситуациях, когда в одном запросе необходимо получить не только начальный кредитовый остаток, но и обороты (дебетовый, кредитовый) или конечный остаток, применяется таблица ОстаткиИОбороты. В ней начальный кредитовый остаток представлен полем СуммаНачальныйОстатокКт.

Рассмотрим пример построения запроса:


ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Сотрудник,
    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт КАК НачальныйОстатокКт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК ОборотДт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК ОборотКт,
    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК КонечныйОстатокКт
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
        &НачалоПериода,
        &КонецПериода,
        ,
        ,
        Счет = &Счет,
        ,
    ) КАК ХозрасчетныйОстаткиИОбороты

Выясним важные правила работы с таблицей ОстаткиИОбороты:

  1. Избыточность: если обороты за период в отчете не нужны, использовать эту таблицу не рекомендуется, так как обращение к ней создает повышенную нагрузку на сервер баз данных по сравнению с таблицей Остатки.
  2. Периодичность: третий параметр таблицы позволяет задать периодичность (например, Месяц, День, Регистратор), если требуется развернуть сальдо и обороты во временной динамике.

Важные нюансы получения сальдо по активно-пассивным счетам

При получении кредитового остатка по счетам расчетов (например, 70 «Расчеты с персоналом по оплате труда» или 76 «Расчеты с разными дебиторами и кредиторами») важно учитывать характер счета:

  1. Развернутое и свернутое сальдо: счета расчетов являются активно-пассивными. Если запросить поле СуммаОстатокКт без группировки по субконто (сотрудникам, контрагентам), система вернет свернутое сальдо, где дебетовые остатки одних аналитик уменьшат кредитовые остатки других. Чтобы получить реальный долг перед конкретным лицом, в запросе обязательно нужно выбирать поля Субконто1, Субконто2 и передавать типы субконто в параметры виртуальной таблицы.
  2. Учет в специализированных конфигурациях: в таких конфигурациях, как «1С:Зарплата и управление персоналом» или «1С:ERP Управление предприятием», детальные взаиморасчеты с сотрудниками ведутся не по плану счетов, а в регистрах накопления (например, ВзаиморасчетыССотрудниками). В регистрах накопления отсутствуют понятия дебета и кредита — там используются поля СуммаОстаток, СуммаПриход и СуммаРасход, где знак остатка определяет сторону задолженности.
← На главную