Профессия — 1С

Рукопашный бой Карташ

Категории

Замена таблиц в конструкторе запросов

рубрики: Конструктор запросов | Дата: 16 Ноябрь, 2017

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




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

Давайте рассмотрим конкретный пример. Пусть у нас есть вот такой простейший запрос:


ВЫБРАТЬ
	Товары.Ссылка,
	Цена.Сумма
ИЗ
	Справочник.Товары КАК Товары
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цена КАК Цена
		ПО (Цена.Товар = Товары.Ссылка)

Как видим здесь соединяется справочник Товары с регистром сведений Цена.




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

А теперь заменим таблицу Цена на виртуальную таблицу Цена.СрезПоследних. Для этого щелкаем правой кнопкой мыши по нужной таблице и в контекстном меню выбираем Заменить таблицу:

В открывшемся окне выбираем нужную таблицу:

После этого простейшего действия текст нового запроса примет вот такой вид:


ВЫБРАТЬ
	Товары.Ссылка,
	ЦенаСрезПоследних.Сумма
ИЗ
	Справочник.Товары КАК Товары
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цена.СрезПоследних(, ) КАК ЦенаСрезПоследних
		ПО (ЦенаСрезПоследних.Товар = Товары.Ссылка)

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

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

Желаю всем быстрого и качественного конструирования запросов!

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

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

   

2017г. Профессия — 1С. Обмен опытом по программированию в 1С