Приветствую Вас ГостьПонедельник, 29.04.2024, 07:00

Каталог статей


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

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

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

!ВАЖНО! Обратите внимание на использование параметра виртуальных таблиц "Субконто". Подробнее о его использовании написано ниже.

Таблица остатков

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

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

  • Период – имеет тип значения Дата, МоментВремени или Граница. На этот момент будут рассчитаны остатки виртуальной таблицы. Если параметр не задан, будут получены актуальные остатки, включающие движения последнего проведенного документа. Физическая организация таблиц позволяет максимально быстро получить остатки за месяц (на начало следующего месяца) и актуальные остатки.

!ВАЖНО! Остатки рассчитываются как входящий остаток на заданный период. Если в качестве периода будет задано КонецДня(&Дата), то при расчете остатков не попадут проводки выполненные в 23:59:59 этой даты. Чтобы учесть эти проводки надо в качестве периода брать начало следующего дня, либо используя границу: Новый Граница(КонецДня(&Дата), ВидГраницы.Включая);

  • УсловиеСчета – содержит конструкцию языка запросов. Позволяет установить фильтр по счету или счетам. Как правило, содержит следующие условия: Счет = (В ИЕРАРХИИ, В) &Счет. Так же в условие счета может быть указано условие по реквизиту счета: Счет.Валютный = ИСТИНА
  • Субконто – имеет тип ПланВидовХарактеристикСсылка.<имя> или содержит массив значений типа ПланВидовХарактеристикСсылка.<имя>. В этот параметр таблицы можно передать ссылку на вид субконто для получения отбора по этому виду или массив видов для установки отбора и упорядочивания видов субконто в результате запроса.
  • Условие – содержит конструкцию языка запросов. Позволяет устанавливать отбор данных виртуальной таблицей по значениям субконто и измерений регистра бухгалтерии.

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

ВЫБРАТЬ
    Остатки.КоличествоОстаток
ИЗ

    РегистрБухгалтерии.ОсновнойРегистрБухгалтерии.Остатки(&Момент, Счет = &СчетТоваров, , Организация = &Организация И Субконто1 = &Номенклатура) КАК Остатки

Поля таблицы:

  • Счет – это поле имеет тип ПланСчетовСсылка.<имя>. Поле позволяет получить остатки, сгруппированные по счетам.
  • Субконто<N> – это поле имеет тип Характеристика.<имя>. Количество полей Субконто зависит от максимального количества субконто на счете плана счетов. Поле позволяет получить остатки, сгруппированные по значениям субконто.
  • <Измерение> – тип этого поля задается при создании измерения регистра. Количество полей зависит от количества измерений, объявленных в регистре бухгалтерии. На поле не влияет свойство измерения Балансовый. Поле позволяет получить остатки, сгруппированные по измерениям регистра.
  • <Ресурс>Остаток – это поле имеет тип Число. Абсолютный остаток (как он хранится в физических таблицах информационной базы) без учета вида счета: дебетовый остаток показывается положительным числом, кредитовый – отрицательным.
  • <Ресурс>ОстатокДт – это поле имеет тип Число. Дебетовый остаток с учетом вида счета. Если счет пассивный, значение этого поля всегда равно нулю. Если счет активный, значение поля равно значению поля Остаток. Если счет активно-пассивный, значение поля равно значению поля Остаток, если Остаток больше или равен нулю. Если Остаток меньше нуля, значит – ноль.
  • <Ресурс>ОстатокКт – это поле имеет тип Число. Кредитовый остаток с учетом вида счета. Если счет активный, значение этого поля всегда равно нулю. Если счет пассивный, равно «- Остаток». Если счет активно-пассивный, значение поля равно нулю, если значение поля Остаток больше или равно нулю. Если значение поля Остаток меньше нуля, значение этого поля равно «- Остаток».
  • <Ресурс>РазвернутыйОстатокДт – это поле имеет тип Число. Развернутый дебетовый остаток. Имеет смысл только при использовании в запросе итогов. Для детальной записи значение этого поля равно значению поля ОстатокДт. Для итоговой записи равно сумме дебетовых остатков всех детальных записей.
  • <Ресурс>РазвернутыйОстатокКт – это поле имеет тип Число. Развернутый кредитовый остаток. Имеет смысл только при использовании в запросе итогов. Для детальной записи значение этого поля равно значению поля ОстатокКт. Для итоговой записи равно сумме кредитовых остатков всех детальных записей. 

Таблица оборотов

используется для получения оборотов по счету в разрезе измерений и субконто, а также оборотов между корреспондирующими счетами (для регистра с поддержкой корреспонденции).

Поля таблицы.

  • Счет – это поле имеет тип ПланСчетовСсылка.<имя>. Поле позволяет получить обороты выбранного счета.
  • КорСчет – это поле имеет тип ПланСчетовСсылка.<имя>. Поле позволяет получить обороты выбранного счета, указанного в параметре Счет с выбранным корреспондирующим счетом.
  • Субконто<N> – это поле имеет тип Характеристика.<имя>. Количество полей Субконто зависит от максимального количества субконто на счете плана счетов. Поле позволяет получить обороты, сгруппированные по значениям субконто.
  • КорСубконто<N> – это поле имеет тип Характеристика.<имя>. Количество полей КорСубконто зависит от максимального количества субконто на счете плана счетов. Поле позволяет получить обороты, сгруппированные по значениям субконто корреспондирующего счета.
  • <Измерение> – тип поля задается при создании измерения регистра. Количество полей зависит от количества измерений, объявленных в регистре бухгалтерии. Поле существует как для балансовых, так и для небалансовых измерений.
  • <Измерение>Кор – тип поля задается при создании измерения регистра. Количество полей зависит от количества измерений, объявленных в регистре бухгалтерии. Поле создается только для небалансовых измерений.

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

  • Период – тип Дата,
  • Регистратор – тип ДокументСсылка.<имя>,
  • НомерСтроки – тип Число.
  • <Ресурс>Оборот – это поле имеет тип Число. Разница оборотов выбранного счета (дебетовый оборот минус кредитовый оборот).
  • <Ресурс>ОборотДт – это поле имеет тип Число. Дебетовый оборот счета.
  • <Ресурс>ОборотКт – это поле имеет тип Число. Кредитовый оборот счета.

      Для оборотов с корреспонденцией

  • <Ресурс>КорОборот – это поле имеет тип Число. Содержит разницу оборотов (кор. оборот дебета минус кор. оборот кредита) для небалансового ресурса корреспондирующего счета.
  • <Ресурс>КорОборотДт – это поле имеет тип Число. Дебетовый оборот для небалансового ресурса корреспондирующего счета.
  • <Ресурс>КорОборотКт – это поле имеет тип Число. Кредитовый оборот для небалансового ресурса корреспондирующего счета.

Параметры таблицы.

  • НачалоПериода, КонецПериода – имеет тип Дата, МоментВремени или Граница. Период времени, за который будут получены обороты. При получении оборотов следует иметь в виду, что таблица оборотов регистра бухгалтерии (также как и таблица оборотов регистра накопления) строится с начала секунды значения параметра НачалоПериода по конец секунды параметра КонецПериода, то есть включая границы заданного периода. Поэтому чтобы получить все обороты за указанный интервал, включая указанные дни, нам достаточно использовать функции НачалоДня() и КонецДня().
  • Периодичность – содержит конструкцию языка запросов. Позволяет задать дополнительную группировку данных по стандартным периодам. Возможные значения: Период, Год, Полугодие, Квартал, Месяц, Декада, Неделя, День, Час, Минута, Секунда (в качестве группировки выводится начало указанного периода), Регистратор, Запись (группировка по регистратору и номеру строки в наборе записей). Если периодичность не задана или задана как Период, дополнительная группировка не выполняется.
  • УсловиеСчета – содержит конструкцию языка запросов. Позволяет установить фильтр по счету или счетам. Как правило, содержит следующие условия: Счет = (В ИЕРАРХИИ, В) &Счет.
  • Субконто – имеет тип ПланВидовХарактеристикСсылка.<имя> или содержит массив значений типа ПланВидовХарактеристикСсылка.<имя>. В этот параметр таблицы можно передать ссылку на вид субконто для получения отбора по этому виду или массив видов для установки отбора и упорядочивания видов субконто в результате запроса.
  • Условие – содержит конструкцию языка запросов. Позволяет устанавливать отбор данных виртуальной таблицей по значениям субконто и измерений регистра бухгалтерии.

Для регистров с поддержкой корреспонденции:

  • УсловиеКорСчета – содержит конструкцию языка запросов. Позволяет установить фильтр по корреспондирующему счету или счетам. Как правило, содержит следующие условия: КорСчет = (В ИЕРАРХИИ, В) &КорСчет.
  • КорСубконто – имеет тип ПланВидовХарактеристикСсылка.<имя> или содержит массив значений типа ПланВидовХарактеристикСсылка.<имя>. В этот параметр таблицы можно передать ссылку на вид субконто для получения отбора по этому виду или массив видов для установки отбора и упорядочивания видов субконто в результате запроса.

Пример запроса итогов оборотов по всем проводкам, где корреспондировали между собой счет Товары и счет Товары 

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

Таблица остатков и оборотов

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

Поля таблицы:

  • Счет – это поле имеет тип ПланыСчетовСсылка.<имя>. Поле содержит счет, для которого получены остатки и обороты.
  • Субконто<N> – это поле имеет тип Характеристика.<имя>, тип этого поля определяется типом субконто. Количество таких полей зависит от максимального количества субконто на счете плана счетов. Поле позволяет получить остатки и обороты, сгруппированные по значениям субконто.
  • <Измерение> – тип этого поля определяется типом измерения регистра накопления. Количество таких полей зависит от количества измерений, объявленных в регистре бухгалтерии. Поле существует как для балансовых, так и для небалансовых измерений.
  • Период, Регистратор, НомерСтроки – эти поля имеют тип соответственно Дата, ДокументСсылка.<имя> и Число. Поля создаются в том случае, если в параметрах виртуальной таблицы задана периодичность и она отличается от Период.
  • <Ресурс>Оборот, <Ресурс>ОборотДт, <Ресурс>ОборотКт – эти поля имеют тип Число. Поля аналогичны полям таблицы оборотов. 
  • <Ресурс>НачальныйОстаток, <Ресурс>НачальныйОстатокДт, Ресурс>НачальныйОстатокКт, <Ресурс>НачальныйРазвернутыйОстатокДт, <Ресурс>НачальныйРазвернутыйОстатокКт – эти поля имеют тип Число. Поля аналогичны полям таблицы остатков, рассчитываются на дату начала интервала, указанного в параметре таблицы остатков и оборотов НачалоПериода.
  • <Ресурс>КонечныйОстаток, <Ресурс>КонечныйОстатокДт, <Ресурс>КонечныйОстатокКт, <Ресурс>КонечныйРазвернутыйОстатокДт, <Ресурс>КонечныйРазвернутыйОстатокКт – эти поля имеют тип Число. Поля аналогичны полям таблицы остатков, рассчитываются на дату окончания интервала, указанного в параметре таблицы остатков и оборотов КонецПериода.

Развернутые остатки отличаются от обычных тем, что если на счете активо-пассивном) ведется какая-то аналитика, то отдельно будет отображаться остаток по дебету и отдельно остаток по кредиту. Например обычный остаток по счету = 5, а развернутые остатки по счету равны Сальдо дебет = 2, Сальдо кредит = 7.

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

Без итогов:

Счет Контрагент СвернутыйДт СвернутыйКт РазвернутыйДт РазвернутыйКт
Контрагенты Иванов 2   2  
Контрагенты Петров   7   7

С  итогами:

Счет Контрагент СвернутыйДт СвернутыйКт РазвернутыйДт РазвернутыйКт
Контрагенты     5 2 7
  Иванов 2   2  
  Петров   7   7

 

Параметры таблицы.

Такие же как для таблицы Обороты плюс

  • МетодДополнения – этот параметр содержит конструкцию языка запросов. Возможны два значения: Движения (в отчет попадаю только периоды, в которых было движение) или ДвиженияИГраницыПериода (Начало периода, периоды с движением и конец периода). Значение по умолчанию – ДвиженияИГраницыПериода. Управляет включением в отчет периодов, не имеющих оборотов, но имеющих остатки.

Важно! Новички очень часто не обращают внимание на параметр МетодДополнения и потом получают сложности при построении отчетов. По умолчанию значение этого параметра равно ДвиженияИГраницыПериода, и если вы используете параметр Периодичность, отличный от значения Период, то этот метод будет добавлять вам в отчет дополнительные строки со значениями на начало и конец периода.

Пример запроса для получения оборотно-сальдовой ведомости:

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

УПОРЯДОЧИТЬ ПО
    ОстаткиИОбороты.Счет.Код
ИТОГИ
    СУММА(НачОстДт),
    СУММА(НачОстКт),
    СУММА(ОборотДт),
    СУММА(ОборотКт),
    СУММА(КонОстДт),
    СУММА(КонОстКт)
ПО
    Счет ИЕРАРХИЯ

Не забываем про особенности задания периодов при формировании остатков. Чтобы не думать, правильно или нет задан конец периода, предлагаю в параметрах всех таблиц, где в названии есть слово "Остаток" использовать конструкцию:

Граница = Новый Граница(КонецДня(ДатаКонцаПериода), ВидГраницы.Включая);
Момент = Граница.Значение;
Запрос.УстановитьПараметр("Момент",Момент);

Таблица ДвиженияССубконто

Это таблица, получаемая соединением двух физических таблиц: основной таблицы и таблицы значений с субконто. Отличительной особенностью таблицы является то, что в нее попадают все записи, в том числе и не активные. Используется для отборов проводок.

Параметры таблицы

  • НачалоПериода, КонецПериода – эти параметры имеют тип Дата, МоментВремени или Граница. Период времени, за который будут отобраны проводки.
  • Условие – этот параметр содержит конструкцию языка запросов. Конструкция позволяет установить условие на любое поле виртуальной таблицы.
  • Порядок – этот параметр содержит конструкцию языка запросов. Конструкция позволяет задать упорядочивание проводок.
  • Первые – этот параметр имеет тип Число. С его помощью задается ограничение максимального количества записей.

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

Таблица оборотов Дт Кт

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

Поля виртуальной таблицы

  • Период, Регистратор, НомерСтроки - Тип Дата ДокументСсылка.<имя>, Число. Поля существуют в таблице, только если значение параметра Периодичность задано и отличается от Период
  • СчетДт    - тип ПланыСчетовСсылка.<имя>. Дебетуемый счет
  • СчетКт    - тип ПланыСчетовСсылка.<имя>. Кредитуемый счет
  • <Измерение>    - Определяется типом измерения регистра бухгалтерии    Балансовое измерение регистра бухгалтерии
  • <Измерение>Дт, <Измерение>Кт - Небалансовое измерение регистра бухгалтерии создает два поля в таблице
  • СубконтоДт<N>, СубконтоКт<N> - Определяется типом субконто    Количество полей зависит от настройки плана счетов
  • <Ресурс>Оборот - Число    Оборот балансового ресурса регистра бухгалтерии
  • <Ресурс>ОборотДт, <Ресурс>ОборотКт - Число    Обороты небалансового ресурса регистра бухгалтерии

Запрос для получения оборотов между счетами:

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

Эти же данные можно получить используя таблицу Обороты

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

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

Использую таблицу Обороты достаточно одного обращения к таблице:

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

Параметр Субконто

Назначение параметра Субконто:
1)  Отбор итогов по виду субконто.

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

ВЫБРАТЬ
    Остатки.Субконто1 КАК Товар,
    Остатки.Счет КАК Счет,
    Остатки.СуммаОстаток КАК Остаток
ИЗ
    РегистрБухгалтерии.ОсновнойРегистрБухгалтерии.Остатки(&Дата, , &ВидСубконто, ) КАК Остатки
ИТОГИ
    СУММА(Остаток)
ПО
    ОБЩИЕ,
    Товар

В параметрах запроса &ВидСубконто = ПланыВидовХарактеристик.ВидыСубконто.Номенклатура

В результате будет выведен список товаров с указанием остатка по каждому счету.

Если надо отобрать по конкретному значению Субконто, то надо добавить на него условие в параметр "Условие"


2) упорядочивание субконто в результате запроса (в особенности, если запрос выполняется по нескольким счетам).

Допустим есть 2 счета. У одного счета Номенклатура - Субконто1, а у другого счета Субконто 2.

Если в запросе указать просто "Остатки.Субконто1 КАК Товар" без заданного параметра Субконто, то для второго счета будет выведено не Номенклатура, а то, что указано у него как Субконто 1.

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

Например выберем остатки товаров в разрезе складов по счетам "Товары" и "Материалы".

Параметры счетов:

Код Счет Субконто1 Субконто2
1.3 Товары Номенклатура Склады
1.4 Материалы Склады Номенклатура

 

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|   ОсновнойРегистрБухгалтерииОстатки.Субконто1 КАК Товар,
|   ОсновнойРегистрБухгалтерииОстатки.Субконто2 КАК Склад,
|   ОсновнойРегистрБухгалтерииОстатки.СуммаОстаток КАК СуммаОстаток
|ИЗ
|   РегистрБухгалтерии.ОсновнойРегистрБухгалтерии.Остатки(&Дата, Счет В (&СчетТоваров, &СчетМатериалов), &ВидыСубконто, ) КАК ОсновнойРегистрБухгалтерииОстатки
|ИТОГИ
|   СУММА(СуммаОстаток)
|ПО
|   ОБЩИЕ,
|   Товар,
|   Склад";
 
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("СчетТоваров", ПланыСчетов.ОсновнойПланСчетов.Товары);
Запрос.УстановитьПараметр("СчетМатериалов", ПланыСчетов.ОсновнойПланСчетов.Материалы);
мВидыСубконто = Новый Массив;
мВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
мВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Склады);
Запрос.УстановитьПараметр("ВидыСубконто", мВидыСубконто);

Таким образом, нам удалось «расставить субконто по местам»: первым субконто в нашем запросе является Номенклатура, вторым – Склады. Причем если мы хотим изменить последовательность группировок в запросе (сначала группировать по складам, потом внутри склада – по номенклатурным позициям), то достаточно изменить порядок следования элементов массива, который передается в параметр виртуальной таблицы Субконто.

Категория: Регистры | Добавил: leshic (20.01.2023)
Просмотров: 2603 | Рейтинг: 3.0/1
Всего комментариев: 0
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [40]
Администрирование [34]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [28]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0