A1sQ.GetBalancesQueryText
Назначение: вернуть готовую строку QueryText для получения остатков по счетам и субконто из регистра бухгалтерии.
Регистратор: по умолчанию используется регистр "Хозрасчетный", но имя можно передать вторым параметром.
Гибкость: в конец текста можно добавить свой фрагмент (например, WHERE/ORDER BY/GROUP BY) через параметр WhereConditionText.
Регистратор: по умолчанию используется регистр "Хозрасчетный", но имя можно передать вторым параметром.
Гибкость: в конец текста можно добавить свой фрагмент (например, WHERE/ORDER BY/GROUP BY) через параметр WhereConditionText.
Сигнатура
Function GetBalancesQueryText(WhereConditionText = Неопределено, НазваниеРегистраБухгалтерии = "Хозрасчетный") Export
Как работает (по исходному коду)
// Внутри функции строится текст запроса вида:
ВЫБРАТЬ
Остатки.Субконто1 КАК Субконто1,
Остатки.Субконто2 КАК Субконто2,
Остатки.Субконто3 КАК Субконто3,
Остатки.Счет КАК СчетУчета,
/* ... поля суммы остатков (Дт/Кт), обороты при необходимости ... */
ИЗ
/* подзапрос, получающий остатки по выбранному регистру
(НазваниеРегистраБухгалтерии), с фильтром по Организации */
( ... ГДЕ Организация = &Организация ... ) КАК Остатки;
// Если WhereConditionText заполнен — он как есть добавляется в конец:
Если ValueIsFilled(WhereConditionText) Тогда
QueryText = QueryText + " " + WhereConditionText;
КонецЕсли;
Важно: функция не добавляет ключевые слова автоматически. Если вы хотите отфильтровать результат, передавайте строку с нужным ключевым словом, например: "ГДЕ СчетУчета В(&Счета)" или "УПОРЯДОЧИТЬ ПО СчетУчета".
Какие колонки формируются
Точный список зависит от ресурсов регистра и логики внутри подзапроса «Остатки». По фрагменту исходного кода гарантированы как минимум:
- Субконто1, Субконто2, Субконто3 — измерения субконто.
- СчетУчета — счёт (из Остатки.Счет).
- Суммы остатков — по данным регистра (например, Остатки.СуммаОстатокДт, Остатки.СуммаОстатокКт), алиасы могут быть заданы внутри текста.
Если в вашем регистре есть ресурсы «Обороты», в подзапрос также могут попадать колонки оборотов — смотрите сгенерированный текст.
Параметры и требования
- WhereConditionText — дополнительный фрагмент запроса, добавляемый в самый конец. Допускаются любые корректные конструкции языка запросов (например, ГДЕ, СГРУППИРОВАТЬ ПО, УПОРЯДОЧИТЬ ПО).
- НазваниеРегистраБухгалтерии — строка с именем регистра бухгалтерии (по умолчанию «Хозрасчетный»).
- Параметры запроса — внутри подзапроса используется, как минимум, параметр &Организация; его необходимо установить перед выполнением.
Примеры
1) Все остатки по организации
QT = A1sQ.GetBalancesQueryText(); // регистр: "Хозрасчетный"
Q = A1sQ.CreateQ(QT);
Q.УстановитьПараметр("Организация", ТекОрганизация);
ТЗ = Q.Выполнить().Выгрузить();
2) Остатки только по заданным счетам
Where = "ГДЕ СчетУчета В(&Счета)";
QT = A1sQ.GetBalancesQueryText(Where);
Q = A1sQ.CreateQ(QT);
Q.УстановитьПараметр("Организация", ТекОрганизация);
Q.УстановитьПараметр("Счета", СписокСчетов);
ТЗ = Q.Выполнить().Выгрузить();
3) Фильтр по субконто и сортировка
Where = "ГДЕ Субконто1 = &Контрагент УПОРЯДОЧИТЬ ПО СчетУчета, Субконто1";
QT = A1sQ.GetBalancesQueryText(Where, "Хозрасчетный");
Q = A1sQ.CreateQ(QT);
A1sQ.SetQParams(Q, Новый Структура("Организация, Контрагент", ТекОрганизация, ВыбранныйКонтрагент));
ТЗ = Q.Выполнить().Выгрузить();
Нюансы и ограничения
✅ Удобно — даёт готовую заготовку запроса по остаткам
✅ Гибко — можно дописать собственные WHERE/ORDER BY/GROUP BY
❗ &Организация — обязательный параметр (используется внутри подзапроса)
❗ Функция не валидирует имя регистра и не ловит ошибки внутри Try/Except (исключение игнорируется) — итогом будет строка (в т.ч. пустая при проблемах)
❗ WhereConditionText добавляется «как есть» — пишите ключевые слова сами
❗ Состав колонок зависит от вашего регистра и конфигурации