Параметры виртуальной таблицы 1с субконто

Обновлено: 04.07.2024

Особенности работы с параметрами виртуальных таблиц

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

В данном примере в качестве значения первого параметра виртуальной таблицы будет использовано значение параметра &Начало.

Параметр компоновки данных

При помощи специальных инструкций в тексте запроса можно указать, какой параметр компоновки данных будет использоваться в качестве значения параметра виртуальной таблицы.

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

Совместное использование параметра запроса и параметра компоновки данных

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

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

Параметры при автоматическом заполнении полей набора данных

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

Таким образом, запись:

И значение параметра &Начало используется только в случае если в настройках не установлено значение параметра &НачалоПериода.


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

Выборка из регистра бухгалтерии

Помимо выборки из основной таблицы регистра бухгалтерии в запросе можно выбрать данные из таблицы субконто.

РегистрБухгалтерии.РегистрБухгалтерии1 КАК РегистрБухгалтерии1


Выборка значений субконто:

РегистрБухгалтерии1Субконто.Регистратор КАК Регистратор , РегистрБухгалтерии1Субконто.МоментВремени КАК МоментВремени , РегистрБухгалтерии1Субконто.НомерСтроки КАК НомерСтроки , РегистрБухгалтерии1Субконто.ВидДвижения КАК ВидДвижения , РегистрБухгалтерии.РегистрБухгалтерии1.Субконто КАК РегистрБухгалтерии1Субконто


Виртуальные таблицы регистра бухгалтерии

У регистра бухгалтерии немного больше виртуальных таблиц, чем у регистра накопления:

При этом у регистра бухгалтерии без поддержки корреспонденции не будет виртуальной таблицы ОборотыДтКт.

ДвиженияССубконто

Виртуальная таблица ДвиженияССубконто содержит в себе поля как основной таблицы регистра бухгалтерии, так и таблицы значений субконто:


Данная таблица получается соединением основной таблицы и таблицы значений субконто. Из всех виртуальных таблиц только данная таблица может содержать неактивные записи (поле Активность = Ложь), но при этом в самой таблице есть поле Активность, поэтому неактивные записи можно будет исключить в запросе.

Таблица ДвиженияССубконто имеет следующие параметры:

  • С помощью параметров НачалоПериода и КонецПериода можно ограничить выборку записей по периоду. Тип может быть Дата, МоментВремени, Граница.
  • Параметр Условие позволяет наложить отбор на любые поля таблицы.
  • Параметр Упорядочивание позволяет задать поле по которому нужно отсортировать таблицу. После имени поля можно указать ВОЗР или УБЫВ для определения порядка сортировки (по возрастанию или по убыванию).
  • Параметр Первые позволяет ограничить количество выбираемых записей.
РегистрБухгалтерии1ДвиженияССубконто.СчетДт КАК СчетДт , РегистрБухгалтерии1ДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1 , РегистрБухгалтерии1ДвиженияССубконто.СубконтоДт2 КАК СубконтоДт2 , РегистрБухгалтерии1ДвиженияССубконто.СчетКт КАК СчетКт , РегистрБухгалтерии1ДвиженияССубконто.СубконтоКт1 КАК СубконтоКт1 , РегистрБухгалтерии1ДвиженияССубконто.СубконтоКт2 КАК СубконтоКт2 , РегистрБухгалтерии1ДвиженияССубконто.Сумма КАК Сумма РегистрБухгалтерии.РегистрБухгалтерии1.ДвиженияССубконто ( &НачДата , &КонДата , СчетДт = &СчетДт , Организация , 10 ) КАК РегистрБухгалтерии1ДвиженияССубконто

Данный запрос выберет первые 10 записей за период между &НачДата и &КонДата, с отбором по счету дебета = &СчетДт, выборка будет отсортирована по полю Организация.

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

Как правило данную таблицу используют для получения проводок вместе с субконто.

Виртуальная таблица остатки

Отличия от виртуальной таблицы регистра накопления

Виртуальная таблица остатков регистра бухгалтерии очень сильно похожа на виртуальную таблицу остатков регистра накопления, поэтому рассмотрим только основные отличия.

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


В нашем примере в настройках плана счетов было указано максимум два субконто, поэтому в таблице есть два поля для субконто: Субконто1 и Субконто2. Если на каком-то счете присутствует только одно субконто, то в поле Субконто2 будет NULL.

Во-вторых, для каждого ресурса создается по пять полей:

  • Остаток
  • ОстатокДт
  • ОстатокКт
  • РазвернутыйОстатокДт
  • РазвернутыйОстатокКт

В поле Остаток будет остаток, как он хранится в таблице итогов. Дебетовый остаток будет больше нуля, кредитовый меньше.

Поля ОстатокДт и ОстатокКт рассчитываются по разному, в зависимости от вида счета:

  • Для активного счета ОстатокКт всегда равен нулю, а ОстатокДт = Остаток.
  • Для пассивного счета ОстатокДт всегда равен нулю, а ОстатокКт = -Остаток.
  • Для активно-пассивного счета, если Остаток > 0, то ОстатокДт = Остаток, а ОстатокКт = 0. Если Остаток < 0, то ОстатокДт = 0, а ОстатокКт = -Остаток.

Даже если у активного счета остаток будет меньше нуля, то он будет отображаться как дебетовый остаток, но с минусом. Аналогично с пассивным счетом: если остаток больше нуля, то он будет по кредиту, но с минусом:


Признак Балансовый у измерений и ресурсов никак не влияет на количество полей.

В-четвертых, есть два новых параметра: УсловиеСчета и Субконто:


УсловиеСчета позволяет задать отбор по счетам учета, можно указать несколько счетов.

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

Статья предназначена для технических специалистов – разработчиков 1С.

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

· Если по виртуальной таблице (в частности «Остатки») регистра бухгалтерии делать выборку без разворота по субконто, то можно получить неверный результат

Обычный активно/пассивный счет «60.4» с двумя субконто: «Организация» и «Контрагенты».



Требуется получить остаток по нему с отбором по списку контрагентов.

Казалось бы, простейший запрос нам поможет:



его результат Сумма = 12 221 544,65 . Конкретное значение суммы значения не имеет, но сразу скажу, что она неверная.

Достаточно добавить поле выборки по Субконто1 и я получаю другой результат с итоговой суммой 51 765 945,85 . И это уже правильный результат.



Но как быть, если разворот по субконто счета в 1С нам не нужен, а нужна одна итоговая сумма? Простое применение агрегатной функции не помогает:



Получаю те же неправильные: Сумма = 12 221 544,65

Чтобы получить правильный результат, пришлось в запрос добавить конструкцию, которая никак не изменяет структуру выборки, но обращается к субконто:



В результате получил искомый результат 51 765 945,85, который можно было использовать в следующих запросах пакета.

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

Статья предназначена для технических специалистов – разработчиков 1С.

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

· Если по виртуальной таблице (в частности «Остатки») регистра бухгалтерии делать выборку без разворота по субконто, то можно получить неверный результат

Обычный активно/пассивный счет «60.4» с двумя субконто: «Организация» и «Контрагенты».



Требуется получить остаток по нему с отбором по списку контрагентов.

Казалось бы, простейший запрос нам поможет:



его результат Сумма = 12 221 544,65 . Конкретное значение суммы значения не имеет, но сразу скажу, что она неверная.

Достаточно добавить поле выборки по Субконто1 и я получаю другой результат с итоговой суммой 51 765 945,85 . И это уже правильный результат.



Но как быть, если разворот по субконто счета в 1С нам не нужен, а нужна одна итоговая сумма? Простое применение агрегатной функции не помогает:



Получаю те же неправильные: Сумма = 12 221 544,65

Чтобы получить правильный результат, пришлось в запрос добавить конструкцию, которая никак не изменяет структуру выборки, но обращается к субконто:



В результате получил искомый результат 51 765 945,85, который можно было использовать в следующих запросах пакета.

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

Читайте также: