No Image

1С запрос поместить во временную таблицу

СОДЕРЖАНИЕ
3 просмотров
10 марта 2020

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

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

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

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

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

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

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

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

3. Временные таблицы следует всегда индексировать, когда это даст прирост производительности.

3.1. Индекс следует строить если:

3.1.1. Большая временная таблица участвует в соединении (не важно, с какой стороны). В индекс следует добавлять поля, участвующие в условии ПО .

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

Читайте также:  Как наклонить текст в paint

3.2. Маленькие временные таблицы индексировать не нужно (менее 1000 записей).

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

Многие начинающие программисты не знают, как поместить таблицу значений в запрос 1С 8. Очень часто это порождает распространенную ошибку — запрос в цикле. То есть разработчик не умеет включать таблицу значений в запрос и поэтому начинает обходить её в цикле и делать на каждую итерацию свой запрос. Рассмотрим на простом примере, как это сделать.

Пример

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

Получите 267 видеоуроков по 1С бесплатно:

Может быть две ситуации, как создана таблица значений, — программно и уже получена откуда-то (например, ТЧ документа). Если таблица создана программно, необходимо установить тип колонки, сделать это несложно

Т.е. при добавление колонки необходимо вторым параметром указать типы данных с помощью конструктора объекта «ОписаниеТипов».

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

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

Таким образом, мы помещаем первый запрос во временную таблицу, а потом соединяем её с регистром остатков номенклатуры.

Вот и всё, проблема решена.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

Читайте также:  Мониторинг изменений на сайте

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

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

Очевидно, что в этих случаях нужно, чтобы различные запросы использовали один и тот же менеджер временных таблиц. Рассмотрим методы работы с менеджером временных таблиц в запросах 1С.

Как создать менеджер временных таблиц

Как назначить менеджер временных в запрос 1С

//создадим запрос
запрос = новый запрос ;

//Назначим созданный ранее менеджер временных таблиц
запрос . МенеджерВременныхТаблиц = МВТ ;

Как добавить временную таблицу в менеджер

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

Как удалить временную таблицу из менеджера

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

Как использовать таблицы из менеджера временных таблиц в запросах 1С

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

Читайте также:  Проверка java в браузере

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

Комментировать
3 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector