Добавил:
sora.alai.102@gmail.com Делаю работы на заказ. Какие именно? Пишите. Или регайтесь на бирже, где я работаю: https://vsesdal.com/promo?ref=748568 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013)

.pdf
Скачиваний:
2185
Добавлен:
25.11.2018
Размер:
31.3 Mб
Скачать

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

Рассмотрим примеры построения запросов к таблице оборотов регистра бухгалтерии.

Самым распространенным примером отчета, который формируется с использованием таблицы остатков и оборотов, является отчет «Оборотно-сальдовая ведомость», текст которого приведен в листинге 3.72.

Листинг 3.72. Запрос для формирования отчета «Оборотно-сальдовая ведомость»

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

Рис. 3.75. Отчет «Оборотно-сальдовая ведомость»

ВНИМАНИЕ!

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

Периодичность таблицы остатков и оборотов

Для получения дополнительного разворота оборотов по периодичности при построении таблицы остатков и оборотов используется параметр Периодичность. Его назначение и использование аналогично другим таблицам оборотов.

подробнее

Раздел «Периодичность таблиц оборотов».

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

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

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

Рассмотрим эти отличия на примере запроса, получающего остатки и обороты по счету товаров за период с 01.06.2013 по 30.06.2013 включительно (листинг 3.73).

Листинг 3.73. Остатки и обороты по счету «Товары»

Если параметр МетодДополнения принимает значение ДвиженияИГраницыПериода или если он не задан, то в отчет включается дата начала интервала отбора итогов (01.06.2013, так как на эту дату был входящий остаток), и дата конца интервала

(30.06.2013, по той же причине), рис. 3.76.

Рис. 3.76. Остатки и обороты по счету «Товары»

В случае, если параметр МетодДополнения принимает значения Движения (листинг 3.74), в отчет попадают только те даты, за которые были обороты по счету Товары (рис. 3.77).

Листинг 3.74. Остатки и обороты по счету «Товары»

Рис. 3.77. Остатки и обороты по счету «Товары»

Развернутые остатки

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

Например, в нашей демонстрационной конфигурации существует активно-пассивный счет Контрагенты, по которому проведены следующие операции (табл. 3.7).

Таблица 3.7. Проводки по счету «Контрагенты»

Период

Счет дт

Аналитика

Счет кт

Аналитика

Сумма

1

31.05.2013

Касса

 

Контрагенты

Иванов

8

 

 

 

 

 

 

 

2

31.05.2013

Контрагенты

Петров

Касса

 

3

 

 

 

 

 

 

 

3

20.06.2013

Контрагенты

Иванов

Касса

 

10

 

 

 

 

 

 

 

4

20.06.2013

Касса

 

Контрагенты

Петров

10

 

 

 

 

 

 

 

Предположим, требуется узнать за период с 01.06.2013 по 30.06.2013 начальный остаток, обороты и конечный остаток на счете Контрагенты. Причем требуется развернуть остатки по контрагентам, т. е. получить остатки в разрезе аналитики (Субконто1), ведущейся на счете.

Это можно сделать с помощью следующего запроса (листинг 3.75).

Листинг 3.75. Получение развернутых остатков из таблицы остатков и оборотов

Развернутый остаток не имеет смысла без критерия, по которому он будет «разворачиваться». В практике учета чаще всего получают развернутые остатки счета с разворотом по аналитике этого счета. Поэтому в выборку запроса включено поле Субконто1 (в качестве первого субконто на счете Контрагенты учитываются

Контрагенты).

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

В результате будет получена следующая динамика остатков и оборотов по счету Контрагенты за июнь 2013 года (рис. 3.78).

Рис. 3.78. Остатки, развернутые остатки и обороты по счету «Контрагенты»

Мы видим, что на 01.06.2013 контрагент Иванов был нашим кредитором, и мы были ему должны 8 рублей. В текущем отчетном периоде мы заплатили ему 10 рублей. Переплатили 2 рубля, и теперь он наш дебитор (он нам должен 2 рубля). Контрагент Петров, наоборот, был дебитором (был нам должен 3 рубля), в текущем отчетном

периоде он сделал платеж на 10 рублей. Переплатил нам 7 рублей. Теперь мы ему должны 7 рублей.

В результате мы имеем одинаковый свернутый начальный (5=8-3) и конечный (5=7-2) кредитовый остаток на счете Контрагенты. Но развернутые остатки, подсчитанные отдельно по дебету и отдельно по кредиту, на начало периода равны 3 (Дт) и 8 (Кт), а на конец периода равны 2 (Дт) и 7 (Кт).

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

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

Получение движений с субконто

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

Таблица движений с субконто позволяет получить информацию о записях регистра бухгалтерии вместе со значениями субконто. Эта таблица может быть использована при разработке таких отчетов, как «Карточка счета/субконто», «Отчет по проводкам», а также служит основой для формы списка регистра бухгалтерии.

Виртуальная таблица движений с субконто содержит следующий состав полей:

<Имя измерения> – поле, содержащее значения балансового измерения регистра. Количество таких полей равно количеству балансовых измерений, определенных для регистра как объекта конфигурации; <Имя измерения>Дт – поле, содержащее значения дебетового небалансового

измерения регистра с именем, заданным в конфигурации; <Имя измерения>Кт – поле, содержащее значения кредитового небалансового измерения регистра с именем, заданным в конфигурации;

<Имя общего реквизита> – поле, содержащее значения общего реквизита с именем, заданным в конфигурации. Такие поля создаются для общих реквизитов, являющихся разделителями (режим разделения данных – Разделять) с режимом использования разделяемых данных НезависимоИСовместно, в которых участвует данный регистр; <Имя реквизита> – поле, содержащее значения реквизита регистра с именем, заданным в конфигурации; <Имя ресурса> – поле, содержащее значения балансового ресурса регистра по

именам ресурсов, как они заданы в конфигураторе; <Имя ресурса>Дт – поле, содержащее значения дебетового небалансового ресурса

регистра по именам ресурсов, как они заданы в конфигураторе; <Имя ресурса>ОборотКт – поле, содержащее значения кредитового небалансового

ресурса регистра по именам ресурсов, как они заданы в конфигураторе; Активность – имеет тип Булево. Содержит признак активности записи и влияния на получение итогов регистра;

ВидСубконтоДт<Номер субконто> – имеет тип ПланВидовХарактеристикСсылка. <имя>. Количество таких полей зависит от максимального количества субконто на счете плана счетов. Номер вида субконто начинается с 1. Набор и порядок видов субконто соответствуют набору и порядку видов субконто у счета дебета;

ВидСубконтоКт<Номер субконто> – имеет тип ПланВидовХарактеристикСсылка. <имя>. Количество таких полей зависит от максимального количества субконто на счете плана счетов. Номер вида субконто начинается с 1. Набор и порядок видов субконто соответствуют набору и порядку видов субконто у счета кредита; Момент времени – виртуальное поле, не хранится в информационной базе. Содержит объект МоментВремени (который включает в себя дату и ссылку на документ-регистратор).

Период – имеет тип Дата. Содержит дату записи. Совместно с полями Регистратор и НомерСтроки определяет положение данной записи на временной оси; Регистратор – имеет тип ДокументСсылка.<имя>. Содержит ссылку на документ,

которому подчинена данная запись; НомерСтроки – имеет тип Число. Содержит уникальный номер данной записи в

наборе записей регистра, подчиненных документу, указанному в поле Регистратор;

СубконтоДт<Номер субконто> – имеет тип Характеристика.<имя>, тип этого поля определяется типом субконто. Содержит значение субконто дебета. Количество таких полей зависит от максимального количества субконто на счете плана счетов. Номер вида субконто начинается с 1. Набор и порядок видов субконто соответствуют набору и порядку видов субконто у счета дебета;

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

СчетКт – имеет тип ПланСчетовСсылка.<Имя>. Содержит ссылку на кредитуемый счет.

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

НачалоПериода, КонецПериода – имеет тип Дата, МоментВремени или Граница.

Период времени, за который будут отобраны проводки; Условие – содержит конструкцию языка запросов. Конструкция позволяет установить

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

Порядок – содержит конструкцию языка запросов. Конструкция позволяет задать упорядочивание проводок; Первые – имеет тип Число. С его помощью задается ограничение максимального количества записей.

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

Листинг 3.76. Получение всех проводок по счетам, подчиненным счету «Касса»

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

Рис. 3.79. Получение всех проводок по счетам, подчиненным счету «Касса»

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

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

Счет (без указания стороны проводки), Субконто, ВидСубконто, КорСчет, <Ресурс>Кор.

Сложные периодические расчеты

Для решения задач сложных периодических расчетов (например, расчет заработной платы, расчет стоимости долгосрочной аренды и др.) в системе «1С:Предприятие» используются такие объекты конфигурации, как планы видов расчета и регистры расчета. В этом разделе мы рассмотрим примеры использования этих объектов для решения различных прикладных задач с помощью языка запросов.

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

Планы видов расчета

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

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

<Имя общего реквизита> – поле, содержащее значения общего реквизита с именем, заданным в конфигурации. Такие поля создаются для общих реквизитов, не являющихся разделителями, или для разделителей с режимом использования разделяемых данных НезависимоИСовместно, в которых участвует данный план видов расчета; <Имя реквизита> – поле, содержащее значения реквизита вида расчета с именем,

заданным в конфигурации. Количество таких полей равно количеству реквизитов, определенных для плана видов расчета как объекта конфигурации; <Имя табличной части> – поле, содержащее табличные части вида расчета. Имена

полей соответствуют именам табличных частей плана видов расчета, как они заданы в конфигураторе. Имеет тип РезультатЗапроса. Результат запроса к табличной части состоит из колонки НомерСтроки и колонок с именами, соответствующими именам реквизитов табличной части; БазовыеВидыРасчета – предопределенная табличная часть плана видов расчета.

Содержит вложенную таблицу базовых видов расчета. Имеет тип РезультатЗапроса. Результат запроса к табличной части состоит из колонок

НомерСтроки, ВидРасчета и Предопределенный. Существует только для планов видов расчета, у которых задано свойство Зависимость от базы; ВедущиеВидыРасчета – предопределенная табличная часть плана видов расчета. Содержит вложенную таблицу ведущих видов расчета. Имеет тип РезультатЗапроса. Результат запроса к табличной части состоит из колонок

НомерСтроки, ВидРасчета и Предопределенный;

ВытесняющиеВидыРасчета – предопределенная табличная часть плана видов расчета. Содержит вложенную таблицу вытесняющих видов расчета. Имеет тип РезультатЗапроса. Результат запроса к табличной части состоит из колонок

НомерСтроки, ВидРасчета и Предопределенный. Существует только для планов видов расчета, у которых задано свойство Использует период действия; Код – имеет тип Строка или Число. Содержит код вида расчета; Наименование – имеет тип Строка. Содержит наименование вида расчета; ПериодДействияБазовый – имеет тип Булево. Содержит признак того, что для

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

Зависимость от базы и Использует период действия;

ПометкаНаУдаление – имеет тип Булево. Содержит признак пометки на удаление вида расчета; Предопределенный – имеет тип Булево. Содержит признак того, что данный вид

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

Рассмотрим некоторые примеры получения данных из планов видов расчетов.

Для хранения списка видов расчетов в нашей демонстрационной конфигурации используются планы видов расчетов Основные начисления и Дополнительные начисления (рис. 3.80).