#std437¶
Оформление текстов запросов¶
1.¶
Все ключевые слова языка запросов пишутся заглавными буквами.
2.¶
Указывайте необязательные части запроса. Явно задавайте псевдонимы полям. Так запрос проще читать, а код, который использует результат, меньше зависит от названий реквизитов.
Неправильно
При изменении имени реквизита придется менять и код, который обращается к свойству Валюта в выборке.
Правильно
Изменение имени реквизита приведет только к изменению текста запроса.
#bslls:AssignAliasFieldsInQuery
2а.¶
Для полей – реквизитов других полей, например Касса.Валюта.Наименование автоматически присваиваемые псевдонимы собираются как ВалютаНаименование, а не Наименование.
#bslls:AssignAliasFieldsInQuery
2б.¶
Пишите ключевое слово КАК перед псевдонимом поля источника.
#bslls:AssignAliasFieldsInQuery
3.¶
Текст запроса должен быть структурирован. Не пишите запрос в одну строку, даже короткий. Наглядная структура упрощает чтение и поддержку другими разработчиками.
4.¶
В сложных запросах используйте комментарии. Это особенно полезно при вложенных запросах, объединениях и соединениях. Комментарии помогают понять, зачем нужна таблица или блок запроса.
Помните: при использовании конструктора запросов все комментарии удаляются автоматически без предупреждения.
5.¶
При создании объекта Запрос указывайте комментарий о цели запроса: какие данные нужны или для чего они используются.
6.1.¶
При программной "сборке" текста запроса комментируйте все этапы.
6.2.¶
Старайтесь, чтобы каждая часть формируемого запроса открывалась в конструкторе запросов:
- можно быстро проверить синтаксис
- проще разрабатывать и сопровождать конфигурацию, в том числе сторонним разработчикам
7.¶
Типичные случаи программной модификации текста запроса.
7.1.¶
Изменение имени поля выборки.
Неправильно
Правильно
Изменение имени таблицы.
Правильно
Изменение имени таблицы. Вариант 2.
Правильно
ТекстЗапроса =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК НаименованиеТовара,
| ЕСТЬNULL(ТаблицаОстатков.ВНаличииОстаток, 0) КАК ОстатокТовара
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ #ТаблицаОстатков КАК ТаблицаОстатков
| ПО Номенклатура.Ссылка= ТаблицаОстатков.Номенклатура";
Если ИспользуетсяАдресноеХранение Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаОстатков", "РегистрНакопления.ТоварыВЯчейках.Остатки");
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ТаблицаОстатков", "РегистрНакопления.ТоварыНаСкладах.Остатки");
КонецЕсли;
7.2.¶
Использование комментария для помещения во временную таблицу результата запроса.
Неправильно
Правильно
7.3.¶
Конкатенация нескольких текстов запросов в пакет.
Неправильно
ТекстЗапроса = " ";
Если ИспользоватьУпаковки Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Упаковки.Ссылка КАК Ссылка
|ИЗ
| Справочник.Упаковки КАК Упаковки;
|/////////////////////////////////////////////////////////////
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса +
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник. Номенклатура КАК Номенклатура";
Правильно
ТекстЗапроса = " ";
Если ИспользоватьУпаковки Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Упаковки.Ссылка КАК Ссылка
|ИЗ
| Справочник.Упаковки КАК Упаковки";
ТекстЗапроса = ТекстЗапроса +
"
|;
|/////////////////////////////////////////////////////////////
|";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса +
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Или
Правильно
Разделитель =
"
|;
|/////////////////////////////////////////////////////////////
|";
ТекстыЗапросовПакета = Новый Массив;
ТекстЗапроса =
"ВЫБРАТЬ
| Упаковки.Ссылка КАК Ссылка
|ИЗ
| Справочник.Упаковки КАК Упаковки";
ТекстыЗапросовПакета.Добавить(ТекстЗапроса);
ТекстЗапроса =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
ТекстыЗапросовПакета.Добавить(ТекстЗапроса);
ТекстЗапроса = СтрСоединить(ТекстыЗапросовПакета, Разделитель);