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

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

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

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

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

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

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

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

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

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

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

следующих вариантов: Период, Запись, Регистратор, Секунда, Минута, Час, День, Неделя, Декада, Месяц, Квартал, Полугодие, Год, Авто. Используется для указания дополнительного разворота оборотов по периодичности. При указании значения Период обороты представляются за весь период (с НачалоПериода по КонецПериода) без дополнительных разворотов. В остальных случаях – с разворотом по записям, регистраторам, неделям, месяцам, кварталам и т. п. соответственно. Значение по умолчанию – Период;

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

Пример 1

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

Листинг 3.29. Вывод оборотов товаров на складах за заданный период

В данном запросе в виртуальную таблицу оборотов мы передаем границы интервала, за который нужно получить обороты. Чтобы получить конец дня, мы используем функцию языка запросов КОНЕЦПЕРИОДА(). При построении виртуальной таблицы оборотов данные регистра накопления остатков ТоварыНаСкладах группируются по измерениям Номенклатура и Склад. В итоге мы получаем суммарное количество оборотов, приходов и расходов по ресурсу Количество для каждого товара в разрезе складов.

Если мы зададим значение параметров НачалоПериода и КонецПериода как 12.02.13, мы получим обороты товаров на складах в течение дня (рис. 3.37).

Рис. 3.37. Вывод оборотов товаров на складах за заданный период

В результате запроса отражены движения типа Приход по документу Поступление товаров №14 от 12.02.13 и движения типа Расход по документу Реализация товаров №1 от 12.02.13.

На этом же примере поясним ряд особенностей использования периодов и моментов времени при получении оборотов.

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

(см. рис. 3.37) параметры НачалоПериода и КонецПериода имеют тип Дата.

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

КОНЕЦПЕРИОДА().

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

Теперь зададим значение параметра НачалоПериода как Момент времени документа Поступление товаров №14 от 12.02.2013 и посмотрим, как изменится результат (рис. 3.38).

Рис. 3.38. Вывод оборотов товаров на складах за заданный период

Мы видим, что результат запроса не изменился, то есть он включает движения документа

Поступление товаров №14.

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

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

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

Зададим значение параметра НачалоПериода как Граница на момент времени документа

Поступление товаров №14 от 12.02.2013 с видом границы Исключая и посмотрим, как изменится результат (рис. 3.39).

Рис. 3.39. Вывод оборотов товаров на складах за заданный период

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

Пример 2

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

Листинг 3.30. Вывод оборотов заданного товара по контрагентам за заданный период

Вданном запросе в виртуальную таблицу оборотов мы передаем границы интервала, за который нужно получить обороты, и товар, по которому отбираются исходные записи оборотного регистра накопления. Чтобы получить конец дня, мы используем функцию языка запросов КОНЕЦПЕРИОДА(). При построении виртуальной таблицы оборотов данные оборотного регистра накопления Продажи группируются по измерениям Номенклатура и Контрагент. В итоге мы получаем суммарное количество значений ресурсов Количество и Сумма для заданного товара в разрезе контрагентов.

Врезультате для товара Клавиатура Apple Pro Keyboards за период 01.02.2013 28.02.2013 мы получим следующий результат (рис. 3.40).

Рис. 3.40. Вывод оборотов заданного товара по контрагентам за заданный период

Вывод оборотов с заданной периодичностью

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

В следующем запросе (листинг 3.31) получаются обороты заданного товара за заданный период с периодичностью НЕДЕЛЯ.

Листинг 3.31. Вывод оборотов заданного товара за заданный период с периодичностью «Неделя»

В результате для товара Клавиатура Apple Pro Keyboards за период 01.02.2013 28.02.2013 мы получаем данные о продажах с разворотом по неделям (рис. 3.41).

Рис. 3.41. Вывод оборотов заданного товара за заданный период с периодичностью «Неделя»

Мы видим, что данные о продажах за первую и вторую неделю февраля (01.02.2013, 04.02.2013) отсутствуют, т. к. реализация товаров началась с 12.02.2013.

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

Данные для такого отчета будут получаться при выполнении следующего запроса

(листинг 3.32).

Листинг 3.32. Запрос для получения данных

В запросе получаются обороты продаж по товарам за период с периодичностью НЕДЕЛЯ и рассчитываются общие итоги, а также итоги по полям Товар и Период. Причем если за какой-то период (неделю) не было продаж, колонка с этим периодом также попадет в результат запроса, благодаря использованию конструкции ПЕРИОДАМИ() при описании итогов по полю Период.

подробнее

Этот вопрос подробно рассматривался в разделе «Вывод итогов по периодам с заданной

периодичностью».

Этот запрос может служить источником набора данных для получения отчета с помощью

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

Можно вывести кросс-отчет также средствами встроенного языка.

подробнее

Этот вопрос подробно рассматривался в разделе «Создание кросс-отчета».

Этот пример можно посмотреть в демонстрационной конфигурации «Учет движения средств», прилагающейся к книге, в обработке Продажи номенклатуры. Поясним только, что при выводе кросс-отчета в табличный документ нужно учитывать следующие моменты.

Во-первых, при обходе выборки результата запроса для группировки Период нужно использовать третий параметр метода Выбрать() со значением "ВСЕ". Если при получении выборки третий параметр опустить, то в нее не попадут дополненные периоды, то есть те периоды, за которые не было продаж (листинг 3.33).

Листинг 3.33. Заполнение данными табличного документа

Во-вторых, при обходе выборки группировки Товар для вложенной в нее группировки Период нужно также использовать третий параметр метода Выбрать() со значением "ВСЕ". Иначе те периоды, за которые не было продаж конкретного товара, не попадут в выборку, и таблица «поплывет» (листинг 3.34).

Листинг 3.34. Заполнение данными табличного документа

В результате мы получим данные о продажах товаров за указанный период с периодичностью НЕДЕЛЯ в виде кросс-отчета с дополнением периодов продаж (рис. 3.42).

Рис. 3.42. Кросс-отчет по продажам товаров

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

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

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

(КоличествоОборот), и о том, как этот оборот был получен (КоличествоПриход,

КоличествоРасход), и о том, какое конечное значение ресурса после этого получилось

(КоличествоКонечныйОстаток).

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

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

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

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

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

заданным в конфигурации. Количество таких полей равно количеству ресурсов, определенных для регистра как объекта конфигурации. Имена полей соответствуют именам ресурсов, как они заданы в конфигураторе, с добавлением слова Оборот. Оборот подсчитывается как сумма всех движений Приход со знаком «+» (плюс) и Расход со знаком «-» (минус); <Имя ресурса>Приход – поле, содержащее сумму всех движений типа Приход по

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

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

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

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

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

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

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