Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.03.2019
Просмотров: 51816
Скачиваний: 8725
Листинг 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.