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

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

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

Листинг 3.65. Пример получения оборотов регистра бухгалтерии

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

Листинг 3.66. Пример установки начала и конца периода при получении оборотов

Если мы установим значение поля ввода Дата обработки Работа с виртуальными таблицами как 01.06.2013, то результатом работы функции будет значение 20, соответствующее обороту за первое июня 2013 года.

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

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

Получение оборотов между корреспондирующими счетами

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

счета с кредита счета (субконто, измерения). Таблица оборотов ДтКт может быть использована при разработке таких отчетов, как «Шахматный баланс (шахматка)», «Сводные проводки» и др.

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

Виртуальная таблица ОборотыДтКт имеет следующий состав полей:

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

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

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

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

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

Номер субконто начинается с 1. Набор и порядок субконто определяются параметром СубконтоДт;

СубконтоКт<Номер субконто> – имеет тип Характеристика.<имя>. Содержит

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

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

параметра виртуальной таблицы оборотов Периодичность: Год, Полугодие,

Квартал, Месяц, Декада, Неделя, День, Секунда, Минута, Час, Регистратор или

Запись. Данное поле содержит начальную дату и время периода, к которому относится оборот регистра; Регистратор – имеет тип ДокументСсылка.<имя>. Существует только в случаях,

если указано значение параметра виртуальной таблицы оборотов Периодичность: Регистратор или Запись. Данное поле содержит ссылку на документ-регистратор, к которому относится оборот регистра.

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

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

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

дополнительную группировку данных по стандартным периодам. Возможные значения: Период, Год, Полугодие, Квартал, Месяц, Декада, Неделя, День, Час,

Минута, Секунда, Регистратор, Запись. Если периодичность не задана или задана как Период, дополнительная группировка не выполняется; УсловиеСчетаДт – этот параметр содержит конструкцию языка запросов. Отбор по

дебетуемому счету, как правило, содержит следующие условия: СчетДт = (В

ИЕРАРХИИ, В) &СчетДт; СубконтоДт – имеет тип ПланВидовХарактеристикСсылка.<имя> или содержит

массив значений этого типа. Задает набор и порядок субконто дебета, которыми можно оперировать в запросе. А также служит для отбора дебетовых оборотов регистра по видам субконто. Если параметр задан, то будут выбираться данные только по тем дебетуемым счетам, у которых определены все указанные виды субконто. Если параметр не задан, то ограничений по видам субконто нет. Субконто дебета определяются позиционно по соответствующему счету; УсловиеСчетаКт – этот параметр содержит конструкцию языка запросов. Отбор по кредитуемому счету, как правило, содержит следующие условия: СчетКт = (В

ИЕРАРХИИ, В) &СчетДт; СубконтоКт – имеет тип ПланВидовХарактеристикСсылка.<имя> или содержит

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

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

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

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

(не указываются параметры НачалоПериода и КонецПериода).

Пример 1

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

Листинг 3.67. Запрос для формирования отчета «Сводные проводки»

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

Рис. 3.70. Отчет «Сводные проводки»

Пример 2

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

Листинг 3.68. Обороты между счетами «Товары» и «Поставщики»

В запросе накладывается отбор по счетам Товары (счет дебета) и Поставщики (счет кредита). Обратите внимание, что при получении оборотов между счетами в суммовом выражении мы обращаемся в запросе к полю СуммаОборот, т. к. ресурс Сумма является балансовым ресурсом регистра бухгалтерии, а при получении оборотов в количественном выражении мы обращаемся в запросе к полю КоличествоОборотДт, т. к. ресурс Количество – небалансовый ресурс.

Результат выполнения запроса представлен на рис. 3.71.

Рис. 3.71. Обороты между счетами «Товары» и «Поставщики»

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

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

 

Таблица 3.6. Значения, которые может принимать параметр «Периодичность»

Период

Комментарий

Период или

Не разворачивать

пусто

 

 

 

Год

Разворачивать по годам

 

 

Полугодие

Разворачивать по полугодиям

 

 

Квартал

Разворачивать по кварталам

 

 

Месяц

Разворачивать по месяцам

 

 

Декада

Разворачивать по декадам

 

 

Неделя

Разворачивать по неделям

 

 

День

Разворачивать по дням

 

 

Час

Разворачивать по часам

 

 

Минута

Разворачивать по минутам

 

 

Секунда

Разворачивать по секундам

 

 

Регистратор

Разворачивать по регистраторам

 

 

Запись

Разворачивать по записям (движениям регистра)

 

 

Авто

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

используемых в запросе полей периодов

 

 

 

Значение по умолчанию, если параметр не заполнен – Период.

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

В случае, если периодичность задана и не равна Период, в таблице появляется поле

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

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

Листинг 3.69. Обороты между счетами с периодичностью «Месяц»

При периодичности запроса Месяц поле Период будет содержать дату начала каждого месяца. Как мы видим на рисунке внизу, часть проводок по корреспондирующим счетам Касса и Покупатели сделаны в мае 2013 года на сумму 450, а часть – в июне 2013 года, на сумму 40 (рис. 3.72).

Рис. 3.72. Обороты между счетами «Касса» и «Покупатели» с периодичностью «Месяц»

Предположим, мы хотим детализировать обороты между этими счетами с точностью до регистратора (листинг 3.70).

Листинг 3.70. Обороты между счетами с периодичностью «Регистратор»

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

Например, мы видим, какими документами были проведены операции между счетами

Касса и Покупатели за июнь 2013 года (рис. 3.73).

Рис. 3.73. Обороты между счетами «Касса» и «Покупатели» с периодичностью «Регистратор»

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

Запись (листинг 3.71).

Листинг 3.71. Обороты между счетами с периодичностью «Запись»

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

Рис. 3.74. Обороты между счетами «Касса» и «Покупатели» с периодичностью «Запись»

Все вышесказанное справедливо также для виртуальных таблиц оборотов, остатков и оборотов. Однако таблица остатков и оборотов имеет свои особенности, которые будут рассмотрены в разделе «Периодичность таблицы остатков и оборотов».

Получение остатков и оборотов

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

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

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

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

<Имя ресурса>НачальныйОстаток, <Имя ресурса>НачальныйОстатокДт, <Имя ресурса>НачальныйОстатокКт, <Имя ресурса>НачальныйРазвернутыйОстатокДт, <Имя ресурса>НачальныйРазвернутыйОстатокКт – эти поля имеют тип Число. Поля аналогичны полям таблицы остатков (подробнее можно прочитать в разделе «Получение остатков»). Если значение параметра виртуальной таблицы Периодичность не задано или задано как Период, то начальные остатки рассчитываются на дату начала интервала, указанного в параметре таблицы остатков и оборотов НачалоПериода, иначе – на начало периода, к которому относится данная запись;

<Имя ресурса>КонечныйОстаток, <Имя ресурса>КонечныйОстатокДт, <Имя ресурса>КонечныйОстатокКт, <Имя ресурса>КонечныйРазвернутыйОстатокДт, <Имя ресурса>КонечныйРазвернутыйОстатокКт – эти поля имеют тип Число. Поля аналогичны полям таблицы остатков (подробнее можно прочитать в разделе «Получение остатков»). Если значение параметра виртуальной таблицы Периодичность не задано или задано как Период, то начальные остатки рассчитываются на дату начала интервала, указанного в параметре таблицы остатков и оборотов КонецПериода, иначе – на конец периода, к которому относится данная запись;

<Имя ресурса>Оборот, <Имя ресурса>ОборотДт, <Имя ресурса>ОборотКт – эти поля имеют тип Число. Поля аналогичны полям таблицы оборотов, подробнее можно прочитать в разделе «Получение оборотов»; Счет – имеет тип ПланСчетовСсылка.<имя>. Содержит счет, в разрезе которого посчитаны остатки и обороты;

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

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

параметра виртуальной таблицы оборотов Периодичность: Год, Полугодие,

Квартал, Месяц, Декада, Неделя, День, Секунда, Минута, Час, Регистратор или

Запись. Данное поле содержит начальную дату и время периода, к которому относится оборот регистра; Регистратор – имеет тип ДокументСсылка.<имя>. Существует только в случаях,

если указано значение параметра виртуальной таблицы оборотов Периодичность: Регистратор или Запись. Данное поле содержит ссылку на документ-регистратор, к которому относится оборот регистра.

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

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

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

дополнительную группировку данных по стандартным периодам. Возможные значения: Период, Год, Полугодие, Квартал, Месяц, Декада, Неделя, День, Час,

Минута, Секунда, Регистратор, Запись. Если периодичность не задана или задана как Период, дополнительной группировки не выполняется; МетодДополнения – этот параметр содержит конструкцию языка запросов.

Возможны два значения: Движения или ДвиженияИГраницыПериода. Управляет включением в отчет периодов, не имеющих оборотов, но имеющих остатки; УсловиеСчета – содержит конструкцию языка запросов. Позволяет установить фильтр по счету или счетам. Как правило, содержит следующие условия: Счет = (В

ИЕРАРХИИ, В) &Счет; Субконто – имеет тип ПланВидовХарактеристикСсылка.<имя> или содержит

массив значений этого типа. Задает набор и порядок субконто, которыми можно оперировать в запросе. А также служит для отбора оборотов регистра по видам субконто. Если параметр задан, то будут выбираться данные только по тем счетам, у которых определены все указанные виды субконто. Если параметр не задан, то ограничений по видам субконто нет. Субконто определяются позиционно по соответствующему счету; Условие – содержит конструкцию языка запросов. Позволяет устанавливать отбор