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

Обращения к виртуальным таблицам

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. При использовании виртуальных таблиц в запросах, следует передавать в параметры таблиц все условия, относящиеся к данной виртуальной таблице. Не рекомендуется обращаться к виртуальным таблицам при помощи условий в секции ГДЕ и т.п.

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

Например, следующий запрос использует секцию ГДЕ запроса для выборки из виртуальной таблицы:

Запрос.Текст = «ВЫБРАТЬ
| Номенклатура
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки()
|ГДЕ
| Склад = &Склад»;

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

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

Запрос.Текст = «ВЫБРАТЬ
| Номенклатура
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад)»;

2.1. При обращении к виртуальной таблице следует передавать в условия наиболее простые конструкции, например, «Измерение = Значение». Не рекомендуется использовать подзапросы и соединения(*) в параметрах виртуальной таблицы, так как это приводит к медленной работе запроса.

* Примечание: как явные соединения в подзапросах, так и неявные – при обращении к полям «через точку» от ссылки и соединения, добавляемые из ограничений доступа к данным (RLS), предусмотренных в ролях конфигурации.

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

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

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

Номенклатура В (. ) И Характеристика В (. ) И Серия В(. )

(Номенклатура, Характеристика, Серия) В (ВЫБРАТЬ Номенклатура, Характеристика, Серия ИЗ ВременнаяТаблицаТоваров)

Источник

Использование параметра Условие при обращении к виртуальной таблице


Проблема

Использование сложных конструкций в параметре Условие при обращении к виртуальной таблице приводит к медленной работе запроса.

Пояснение

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

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

Рекомендация

При обращении к виртуальной таблице следует передавать в условия наиболее простые конструкции, например, » Измерение = Значение «. Не рекомендуется использовать подзапросы и соединения(*) в параметрах виртуальной таблицы, так как это приводит к медленной работе запроса.

(*) Примечание. Как явные соединения в подзапросах, так и неявные – при обращении к полям «через точку» от ссылки и соединения, добавляемые из ограничений доступа к данным (RLS), предусмотренных в ролях конфигурации.

Если все же без подзапросов не обойтись, то рекомендуется соблюдать следующие условия:

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

Источник

Конструктор запросов 1С — обучение на примерах

Урок 6. Виртуальные таблицы и их использование в конструкторе запросов

Задача 1: Получить остатки номенклатуры на указанном складе на конец месяца.

Задача 2: Получить актуальную цену на конец месяца по указанной номенклатуре и типу цен.

Новые механизмы: заполнение параметров виртуальных таблиц.

Теоретическая часть урока №6

У некоторых объектов метаданных помимо основной таблицы в базе данных присутствуют виртуальные таблицы. Они облегчают доступ к некоторой информации содержащейся в основной таблице. Использовать данные виртуальных таблиц можно при помощи запросов, либо при помощи специальных методов встроенного языка 1с 8.

Рассмотрим основные виды виртуальных таблиц 1с для различных объектов метаданных:

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

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

СрезПоследних и СрезПервых

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Остатки в регистре накопления

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Остатки в регистре бухгалтерии

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

Обороты в регистре накопления

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Обороты в регистре бухгалтерии

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Остатки и обороты в регистре накопления

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Остатки и обороты в регистре бухгалтерии

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

Обороты Дебет Кредит

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Движения с субконто

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Практическая часть урока №6

В данном разделе нам предстоит решить две задачи по пройденной теме.

Задача 1

Получить остатки номенклатуры на указанном складе на конец месяца.

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

В итоге у нас получится запрос со следующим текстом:

Задача 2

Получить актуальную цену на конец месяца по указанной номенклатуре и типу цен.

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

В итоге у нас получится запрос со следующим текстом:

Источник

Параметры виртуальных таблиц

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

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

Язык запросов позволяет наложить условие на выборку из виртуальных таблиц двумя способами: в предложении ГДЕ и с помощью параметров виртуальных таблиц. Оба способа приведут к одному результату (за исключением некоторых специфических случаев), но, тем не менее, они далеко не эквиваленты.

Мы уже знаем, что виртуальные таблицы потому и называются виртуальными, что в базе их на самом деле нет. Формируются они только в тот момент, когда к ним обращается запрос. Несмотря на это, нам (то есть, тем, кто составляет запрос) удобно рассматривать виртуальные таблицы именно как реально существующие. Что же произойдёт в системе 1С Предприятие 8, когда составленный нами запрос всё-таки обратится к виртуальной таблице?

На первом шаге, система построит виртуальную таблицу. На втором шаге из полученной таблицы будут выбраны записи, удовлетворяющие условию, заданному в предложении ГДЕ:
условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы
Хорошо видно, что в итоговую выборку попадут не все записи из виртуальной таблицы (а, следовательно, и из базы данных), а только те, которые удовлетворяют заданному условию. А остальные записи просто будут исключены из результата.

Таким образом, система проделает не просто бесполезную, а двойную бесполезную работу! Сначала будут затрачены ресурсы на построение виртуальной таблицы на основе лишних данных (на рисунке они помечены как «области данных А и Б»), а потом ещё будет проделана работа по фильтрации этих данных из окончательного результата.

Нельзя ли сразу, на этапе построения виртуальной таблицы, отказаться от использования ненужных данных? Оказывается, можно. Именно для этого и предназначены параметры виртуальных таблиц:
условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы
Параметризируя виртуальную таблицу, мы сразу ограничиваем объём данных, который будет обрабатываться запросом.

В чем заключается различие значений параметра виртуальной таблицы «МетодДополнения»?
Когда МетодДополнения установлен в «движения», то будут выданы только те периоды в которых были движения. Когда установлен «ДвиженияИГраницыПериода», тогда к вышеуказанным движениям добавятся 2 записи: движения на начало и конец заданного в параметрах ВТ периода. Поле «Регистратор» при этом для этих 2-х записей будет пустым.

Источник

Использование виртуальных таблиц 1С в запросах

1. Получение данных — создание запросов к базе данных.

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

2. Структура регистров.

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

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

Расчет таблицы итогов будет зависеть от вида регистра 1С, структура имеет следующий вид:

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

3. Доступ к виртуальным таблицам 1С.

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

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

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

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

При написании запроса следует ориентироваться на использование виртуальных таблиц 1Срассчитываемых на основе итогов. В этом случае запрос будет наиболее оптимальным.

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

4. Параметры виртуальной таблицы 1С остатков.

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Период – Дата, либо момент времени на который необходимо получить остатки.

В качестве примера рассмотрим следующую таблицу движений и параметры виртуальной таблицы 1С:

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Остатки рассчитываются на начало секунды!

Если к примеру мы укажем дату остатков 20.01.2019 12:00:00 то движения за период 20.01.2019 12:00:00 учтены не будут, и остаток будет равен 8.

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

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

Он представляет собой поле Дата+Ссылка

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

Допустим, что 20.01.2019 12:00:00 был проведен еще один документ, таблица движений примет следующий вид:

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

На временной оси два последних документа будут расположены следующим образом

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

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

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Условие – параметр позволяющий произвести отбор данных по измерениям регистра.

В нашем примере у регистра остатков только одно измерение «Номенклатура».

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Условия можно описывать как простой конструкцией, например

Так и при помощи подзапроса

Номенклатура В (ВЫБРАТЬ

ВтНоменклатура КАК ВтНоменклатура)

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

Если все же подзапрос необходим, то необходимо соблюдать следующие условия:

· в подзапросе только одна таблица, нет соединений с другими таблицами.

· если в подзапросе таблица табличной части (например, Документ.Накладная.СписокТоваров), то не должно быть обращения к реквизитам таблицы-шапки (Накладная.Проведен).

· если в подзапросе таблица, у которой могут быть табличные части (например, Документ.Накладная), то не должно быть обращений к табличным частям (например, ГДЕ Документ.Накладная.СписокТоваров.Номенклатура = «1»).

· если в подзапросе временная таблица, то не должно быть условий (раздела ГДЕ).

· если в подзапросе постоянная таблица, то условие (раздел ГДЕ) может быть допустимо, только если условие выполняется для 80% (или более) случаев, отсутствие условия означает выполнение для 100% случаев

· если в подзапросе постоянная таблица, то в ограничениях доступа к данным (RLS) не должно содержатся подзапросов и соединений (допускаются только простые условия вида «ГДЕ Реквизит = Значение», «ГДЕ Истина»).

5. Основные параметры таблицы Оборотов.

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Как видим в качестве периода здесь два параметра, это НачалоПериода и КонецПериода.

Обороты в отличие от остатков можно получить только за определенный период. К примеру, если нам требуется узнать остаток товаров, то мы говорим : «Сколько товаров осталось на сегодня на 12:00? а вчера на 18:00». В случае оборотов вопрос строится так: «Сколько товаров было продано за сегодня? А за этот месяц?».

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

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

Если оба основных параметра таблицы указать одинаковыми, то период будет равен 1 секунде.

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

Следующим параметром таблицы оборотов является Периодичность таблицы.

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Рассмотрим использование данного параметра на примере следующей таблицы движений:

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Выберем данные из таблицы оборотов, в качестве периодичности выберем месяц.

Т.к. все движения формировались в одном месяце, то получим всего одну запись:

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

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

условие в параметрах виртуальной таблицы. Смотреть фото условие в параметрах виртуальной таблицы. Смотреть картинку условие в параметрах виртуальной таблицы. Картинка про условие в параметрах виртуальной таблицы. Фото условие в параметрах виртуальной таблицы

Параметр условие аналогичен условию в виртуальной таблице остатков.

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

Для регистра с видом остатки это таблица остатки, для оборотного обороты.

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

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

Специалист компании ООО «Кодерлайн»
Александр Гармышев

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *