При разработке отчетов, обработок и интеграционных механизмов часто требуется получить начальный остаток по кредиту определенного счета или группы счетов. В конструкторе запросов 1С для регистра бухгалтерии доступно несколько виртуальных таблиц, и выбор правильной таблицы напрямую влияет на производительность и корректность получаемых данных.
Разберем по шагам, какими способами можно извлечь кредитовое сальдо на дату, в чем различия между таблицами остатков и как правильно накладывать условия.
Если для задачи не требуются обороты за период, а нужно только сальдо на конкретный момент времени, оптимальным выбором с точки зрения быстродействия является виртуальная таблица Остатки регистра бухгалтерии. В ней доступно готовое ресурсное поле СуммаОстатокКт.
Посмотрим на пример запроса:
ВЫБРАТЬ
ХозрасчетныйОстатки.СуммаОстатокКт КАК СуммаОстатокКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&НачалоПериода, Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстатки
Проанализируем ключевые особенности этого варианта:
Остатки рассчитывает только срез итогов на указанную дату, не выполняя чтение и агрегацию движений за интервал.Счет В ИЕРАРХИИ (&Счет) или Счет = &Счет), а не в блоке ГДЕ. Это позволяет платформе ограничить выборку на уровне обращения к таблицам итогов.&НачалоПериода передается тип Дата (например, 01.01.2026 00:00:00), остаток рассчитывается строго на начало первой секунды этой даты, то есть движения, проведенные этой же секундой, в расчет не включаются. Если требуется включить документы на точный момент времени, в код передается объект Граница с видом границы ВидГраницы.Включая.В ситуациях, когда в одном запросе необходимо получить не только начальный кредитовый остаток, но и обороты (дебетовый, кредитовый) или конечный остаток, применяется таблица ОстаткиИОбороты. В ней начальный кредитовый остаток представлен полем СуммаНачальныйОстатокКт.
Рассмотрим пример построения запроса:
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Счет КАК Счет,
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Сотрудник,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт КАК НачальныйОстатокКт,
ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК ОборотДт,
ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК ОборотКт,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт КАК КонечныйОстатокКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
&НачалоПериода,
&КонецПериода,
,
,
Счет = &Счет,
,
) КАК ХозрасчетныйОстаткиИОбороты
Выясним важные правила работы с таблицей ОстаткиИОбороты:
Остатки.Месяц, День, Регистратор), если требуется развернуть сальдо и обороты во временной динамике.При получении кредитового остатка по счетам расчетов (например, 70 «Расчеты с персоналом по оплате труда» или 76 «Расчеты с разными дебиторами и кредиторами») важно учитывать характер счета:
СуммаОстатокКт без группировки по субконто (сотрудникам, контрагентам), система вернет свернутое сальдо, где дебетовые остатки одних аналитик уменьшат кредитовые остатки других. Чтобы получить реальный долг перед конкретным лицом, в запросе обязательно нужно выбирать поля Субконто1, Субконто2 и передавать типы субконто в параметры виртуальной таблицы.ВзаиморасчетыССотрудниками). В регистрах накопления отсутствуют понятия дебета и кредита — там используются поля СуммаОстаток, СуммаПриход и СуммаРасход, где знак остатка определяет сторону задолженности.