Перейти к содержанию
#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.

Конкатенация нескольких текстов запросов в пакет.

Неправильно

ТекстЗапроса = " ";
Если ИспользоватьУпаковки Тогда
    ТекстЗапроса =
        "ВЫБРАТЬ
        |   Упаковки.Ссылка КАК Ссылка
        |ИЗ
        |   Справочник.Упаковки КАК Упаковки;
        |/////////////////////////////////////////////////////////////
        |";
КонецЕсли;

ТекстЗапроса = ТекстЗапроса +
    "ВЫБРАТЬ
    |   Номенклатура.Ссылка КАК Ссылка
    |ИЗ
    |   Справочник. Номенклатура КАК Номенклатура";

Правильно

ТекстЗапроса = " ";
Если ИспользоватьУпаковки Тогда
    ТекстЗапроса =
        "ВЫБРАТЬ
        |  Упаковки.Ссылка КАК Ссылка
        |ИЗ
        |   Справочник.Упаковки КАК Упаковки";

    ТекстЗапроса = ТекстЗапроса +
        "
        |;
        |/////////////////////////////////////////////////////////////
        |";
КонецЕсли;

ТекстЗапроса = ТекстЗапроса +
  "ВЫБРАТЬ
  |   Номенклатура.Ссылка КАК Ссылка
  |ИЗ
  |   Справочник.Номенклатура КАК Номенклатура";

Или

Правильно

Разделитель =
    "
    |;
    |/////////////////////////////////////////////////////////////
    |";

ТекстыЗапросовПакета = Новый Массив;

ТекстЗапроса =
    "ВЫБРАТЬ
    |   Упаковки.Ссылка КАК Ссылка
    |ИЗ
    |   Справочник.Упаковки КАК Упаковки";

ТекстыЗапросовПакета.Добавить(ТекстЗапроса);

ТекстЗапроса =
    "ВЫБРАТЬ
    |   Номенклатура.Ссылка КАК Ссылка
    |ИЗ
    |   Справочник.Номенклатура КАК Номенклатура";

ТекстыЗапросовПакета.Добавить(ТекстЗапроса);
ТекстЗапроса = СтрСоединить(ТекстыЗапросовПакета, Разделитель);
См. также
Источник

https://its.1c.ru/db/v8std#content:437