Приветствуем вас! Сегодня мы рассмотрим распространенную ситуацию в учете 1С, когда по активно-пассивному счету, такому как 62 "Расчеты с покупателями и заказчиками", одновременно существует как дебетовое, так и кредитовое сальдо по одной и той же аналитике (например, для одного контрагента и договора). Это явление известно как развернутое сальдо. Стандартные отчеты часто "сворачивают" эти остатки, показывая лишь итоговую разницу, что затрудняет выявление таких случаев. Мы вместе разберем, как обнаружить и вывести эти записи, используя как стандартные возможности 1С, так и произвольные запросы.
Прежде всего, давайте посмотрим, как стандартные инструменты 1С могут помочь нам в решении этой задачи.
Стандартная оборотно-сальдовая ведомость по счету 62 по умолчанию показывает свернутое сальдо, то есть разницу между дебетовыми и кредитовыми остатками. Чтобы увидеть развернутое сальдо, нам потребуется внести изменения в настройки отчета.
62.Контрагентам, Договорам, и, возможно, по Документам расчетов с контрагентами (Субконто3). Это позволит нам увидеть, по каким конкретным комбинациям контрагента и договора возникают обе стороны задолженности.Важный момент: Активация опции "Развернутое сальдо" позволяет увидеть обе стороны задолженности, но не всегда сразу отфильтровать только те строки, где они существуют одновременно. Для более точного отбора нам пригодится "Универсальный отчет".
"Универсальный отчет" — это очень гибкий инструмент в 1С, который позволяет получать данные практически из любых объектов информационной базы и настраивать сложные отборы. Давайте разберем, как его настроить для нашей задачи.
Регистр бухгалтерииЖурнал проводок (бухгалтерский и налоговый учет)Сумма конечный остаток ДтСумма конечный остаток КтСубконто1 (Контрагент), Субконто2 (Договор), Счет.Сумма конечный остаток Дт. Вид сравнения установите Больше, значение 0.Сумма конечный остаток Кт. Вид сравнения установите Больше, значение 0.Счет, Субконто1 (Контрагент), Субконто2 (Договор). Это позволит нам увидеть развернутое сальдо в разрезе каждой комбинации контрагента и договора.Совет из обсуждений: В некоторых случаях, для более тонкого отбора, можно использовать опцию "Использовать вместо значения поле" в настройках отбора "Универсального отчета". Например, сравнивая развернутое сальдо с конечным сальдо для выявления специфических ситуаций. Однако для базовой задачи одновременного наличия Дт и Кт > 0, прямое сравнение с нулем является наиболее простым и эффективным способом.
Если стандартные отчеты не дают нужной гибкости или требуется более сложная логика, мы можем обратиться к написанию собственного запроса. Это особенно актуально, если вы работаете с Системой Компоновки Данных (СКД) или консолью запросов.
Для получения развернутого сальдо по счету 62 в запросе мы будем использовать виртуальные таблицы регистра бухгалтерии. Рассмотрим подробнее, как это сделать.
Ключевым моментом является использование полей, которые специально предназначены для отображения обеих сторон активно-пассивного счета. В виртуальных таблицах регистра бухгалтерии РегистрБухгалтерии.Хозрасчетный.Остатки или РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты существуют такие поля, как СуммаОстатокДт и СуммаОстатокКт, а также СуммаРазвернутыйОстатокДт и СуммаРазвернутыйОстатокКт. Именно последние два поля нам понадобятся, если стандартные СуммаОстатокДт и СуммаОстатокКт уже свернуты по счету.
Давайте посмотрим на пример запроса, который позволяет решить эту задачу. Мы будем использовать виртуальную таблицу Остатки, так как она предоставляет остатки на определенную дату.
ВЫБРАТЬ
ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
ХозрасчетныйОстатки.Субконто2 КАК Договор,
СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК СуммаОстатокДт,
СУММА(ХозрасчетныйОстатки.СуммаОстатокКт) КАК СуммаОстатокКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
&КонДата,
Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками)),
&ВидыСубконто,
ВидСубконто1 = ЗНАЧЕНИЕ(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты)
И ВидСубконто2 = ЗНАЧЕНИЕ(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры)
) КАК ХозрасчетныйОстатки
ГДЕ
ХозрасчетныйОстатки.СуммаОстатокДт > 0
И ХозрасчетныйОстатки.СуммаОстатокКт > 0
СГРУППИРОВАТЬ ПО
ХозрасчетныйОстатки.Субконто1,
ХозрасчетныйОстатки.Субконто2
ИМЕЮЩИЕ
СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) > 0
И СУММА(ХозрасчетныйОстатки.СуммаОстатокКт) > 0
Разберем этот запрос по шагам:
РегистрБухгалтерии.Хозрасчетный.Остатки(&КонДата, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками)), &ВидыСубконто, ...): Мы обращаемся к виртуальной таблице остатков регистра бухгалтерии на заданную дату &КонДата. Мы указываем, что нас интересуют счета, входящие в иерархию счета 62 (РасчетыСПокупателямиИЗаказчиками), чтобы охватить все субсчета, такие как 62.01 и 62.02. Также мы явно указываем, что хотим получить остатки в разрезе Контрагентов и Договоров.СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК СуммаОстатокДт, СУММА(ХозрасчетныйОстатки.СуммаОстатокКт) КАК СуммаОстатокКт: Мы выбираем суммарные дебетовые и кредитовые остатки. Использование агрегатной функции СУММА() здесь критично, так как по одному контрагенту и договору может быть несколько записей.ГДЕ ХозрасчетныйОстатки.СуммаОстатокДт > 0 И ХозрасчетныйОстатки.СуммаОстатокКт > 0: Это условие позволяет нам на этапе выборки отфильтровать только те записи, где уже есть ненулевые остатки с обеих сторон.СГРУППИРОВАТЬ ПО ХозрасчетныйОстатки.Субконто1, ХозрасчетныйОстатки.Субконто2: Мы группируем результат по Контрагенту и Договору, чтобы получить итоговое сальдо для каждой уникальной пары.ИМЕЮЩИЕ СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) > 0 И СУММА(ХозрасчетныйОстатки.СуммаОстатокКт) > 0: Это условие применяется уже к сгруппированным данным. Оно гарантирует, что в итоговую выборку попадут только те комбинации контрагента и договора, по которым суммарно присутствуют и дебетовое, и кредитовое сальдо.Обратите внимание: Параметр &ВидыСубконто в виртуальной таблице Остатки позволяет указать, по каким видам субконто нужно получать остатки, что оптимизирует запрос. Если его не указать, запрос будет работать, но может быть менее производительным. В нашем случае мы хотим получить остатки по Контрагентам и Договорам.
Если вы столкнулись с проблемой, когда запрос в консоли работает, а в СКД нет, это часто связано с тем, что СКД может модифицировать или "сворачивать" данные, если вы не указали все необходимые поля в структуре отчета или не настроили правильные группировки в самой СКД. Всегда проверяйте, что поля СуммаОстатокДт и СуммаОстатокКт (или СуммаРазвернутыйОстатокДт и СуммаРазвернутыйОстатокКт) присутствуют в выбранных полях и в группировках отчета СКД.
В исходной теме автор пытался использовать объединение для сбора данных с разных субсчетов, а затем связывать их. Давайте проанализируем его подход и покажем, как его можно адаптировать.
Исходный запрос автора, который использовал объединение, мог столкнуться с проблемой "сворачивания" или некорректной связки данных, если итоговое условие ИЛИ (как было указано в комментарии) не позволяло получить нужный результат. Наша цель — получить строки, где одновременно есть оба сальдо.
Давайте посмотрим на исправленный подход, который использует временные таблицы и последующее соединение для выявления развернутого сальдо по Контрагенту и Договору, что может быть полезно для более сложных сценариев.
// Шаг 1: Получаем дебетовые остатки по 62.01
ВЫБРАТЬ
ХозрасчетныйОстаткиДт.Субконто1 КАК Контрагент,
ХозрасчетныйОстаткиДт.Субконто2 КАК Договор,
ХозрасчетныйОстаткиДт.СуммаОстатокДт КАК СуммаДебет,
0 КАК СуммаКредит
ПОМЕСТИТЬ втОстаткиДебет
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
&КонДата,
Счет.Ссылка = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателями),
, // без отборов по субконто
ВидСубконто1 = ЗНАЧЕНИЕ(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты)
И ВидСубконто2 = ЗНАЧЕНИЕ(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры)
) КАК ХозрасчетныйОстаткиДт
ГДЕ
ХозрасчетныйОстаткиДт.СуммаОстатокДт > 0
;
// Шаг 2: Получаем кредитовые остатки по 62.02
ВЫБРАТЬ
ХозрасчетныйОстаткиКт.Субконто1 КАК Контрагент,
ХозрасчетныйОстаткиКт.Субконто2 КАК Договор,
0 КАК СуммаДебет,
ХозрасчетныйОстаткиКт.СуммаОстатокКт КАК СуммаКредит
ПОМЕСТИТЬ втОстаткиКредит
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
&КонДата,
Счет.Ссылка = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоАвансамПолученным),
, // без отборов по субконто
ВидСубконто1 = ЗНАЧЕНИЕ(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты)
И ВидСубконто2 = ЗНАЧЕНИЕ(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры)
) КАК ХозрасчетныйОстаткиКт
ГДЕ
ХозрасчетныйОстаткиКт.СуммаОстатокКт > 0
;
// Шаг 3: Объединяем и группируем данные для выявления развернутого сальдо
ВЫБРАТЬ
ОбъединенныеОстатки.Контрагент,
ОбъединенныеОстатки.Договор,
СУММА(ОбъединенныеОстатки.СуммаДебет) КАК ИтогоСуммаДт,
СУММА(ОбъединенныеОстатки.СуммаКредит) КАК ИтогоСуммаКт
ИЗ
(ВЫБРАТЬ
Контрагент,
Договор,
СуммаДебет,
СуммаКредит
ИЗ
втОстаткиДебет
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Контрагент,
Договор,
СуммаДебет,
СуммаКредит
ИЗ
втОстаткиКредит) КАК ОбъединенныеОстатки
СГРУППИРОВАТЬ ПО
ОбъединенныеОстатки.Контрагент,
ОбъединенныеОстатки.Договор
ИМЕЮЩИЕ
СУММА(ОбъединенныеОстатки.СуммаДебет) > 0
И СУММА(ОбъединенныеОстатки.СуммаКредит) > 0
В этом запросе мы:
62.01 (РасчетыСПокупателями) и помещаем их во временную таблицу втОстаткиДебет.62.02 (РасчетыПоАвансамПолученным) и помещаем их во временную таблицу втОстаткиКредит.Контрагенту и Договору и используем условие ИМЕЮЩИЕ, чтобы отобрать только те комбинации, где суммарно присутствуют и дебетовый, и кредитовый остатки.Такой подход позволяет нам четко разделить логику получения дебетовых и кредитовых остатков, а затем объединить их для анализа развернутого сальдо.
Мы выяснили, как найти развернутое сальдо, но давайте также проанализируем причины его возникновения и посмотрим, как можно исправить ситуацию.
Часто развернутое сальдо является следствием ошибок в учете. Рассмотрим основные причины:
Для исправления выявленного развернутого сальдо в 1С можно использовать следующие методы:
Надеемся, что это подробное руководство поможет вам эффективно находить и анализировать развернутое сальдо по счету 62 в 1С, а также предпринимать шаги по его устранению. Успехов в работе!
← К списку