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