Есть мастера, пишущие запросы текстом, но такие лентяи, как я сам, предпочитают всё-таки конструктор.
Хочется отметить приёмы, которые будут полезны для ленивых, но не очень опытных программистов:
- Не трогай то, что работает. При внесении правки в запрос независимо от того, является ли он пакетным, есть всегда ленивый приём. Мы на вкладке Пакет запросов копируем текущий и/или читай последний запрос. Далее в оригинале, который мы копируем, вставляем помещение всего его вывода во временную таблицу, как-нибудь её вразумительно обозвав. Например, РаботающаяКопияПередПравкой20240422
- Ленивая ссылка на пустое значение. К сожалению, мне неизвестно, как при помощи этого приёма получить предопределённое значение кроме одного этого случая с пустым значением. Предположим, у нас есть конструкция, в которой в условии, где должно стоять пустое значение. Ну например мы мышкой скопировали на вкладке условие значение таблицы, которое мы хотим проверить на заполненность или в выражении мы хотим преобразовать значение типа NULL в пустое значение указанного типа. В запросе вида
ВЫБРАТЬ ВыработкаМатериалов.Организация КАК Организация, ВыработкаМатериалов.Номенклатура КАК Номенклатура ИЗ РегистрНакопления.ВыработкаМатериалов КАК ВыработкаМатериалов
Для иллюстрации данного примера вставим ISNULL перед ВыработкаМатериалов.Номенклатура (Так эргономичнее, чем писать ЕСТЬNULL), а далее для получения пустого значения выделяем пустой участок и вызываем конструктор из конструктора и делаем в нём выборку объекта нужного типа. Теперь после возвращения в код основного запроса код у нас приобретает следующий вид
ISNULL(ВыработкаМатериалов.Номенклатура,ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура)
И нам остается только откорректировать полученный текст, приведя весь запрос к виду
ВЫБРАТЬ ВыработкаМатериалов.Организация КАК Организация, ЕСТЬNULL(ВыработкаМатериалов.Номенклатура, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура ИЗ РегистрНакопления.ВыработкаМатериалов КАК ВыработкаМатериалов
то есть мы вызывали конструктор из конструктора для того, чтобы не набирать вручную Справочник.Номенклатура . Аналогичный приём работает для случаев, когда нам надо обратиться к заданному типу и использовать конструкции вида ССЫЛКА и ВЫРАЗИТЬ КАК
-
Практически точно такой же приём удобно использовать для конструкций вида РазностьДат и Между. Например, для запроса вида
ВЫБРАТЬ АвансовыйОтчетТовары.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента, АвансовыйОтчетТовары.ДатаСФ КАК ДатаСФ ИЗ Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары
при необходимости добавить поле с разностью дат вызываем конструктор, обращаясь к той же таблице и получая после вызова текст
РазностьДат ( ВЫБРАТЬ АвансовыйОтчетТовары.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента, АвансовыйОтчетТовары.ДатаСФ КАК ДатаСФ ИЗ Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары)
который мы потом корректируем
-
и последний приём, который также может быть не вполне очевиден. Если Вы получаете на входе постановку вида "
Используя табличную часть "Материалы" документа "ПриходнаяНакладная" напишите текст запроса,
возвращающий сгруппированные сведения о закупках материалов:Номенклатура — материал
Дата — дата покупки (без учета времени)
Сумма — сумма покупки
Количество — количество приобретения
Ассортимент — количество приобретенных позиций за дату (только для итогов, для детальных записей — 0), то первый же Ваш запрос должен выглядеть примерно такВЫБРАТЬ "Номенклатура - материал" КАК Поле1, "Дата - дата покупки (без учета времени)" КАК Поле2, "Сумма - сумма покупки" КАК Поле3, "Количество - количество приобретения" КАК Поле4, "Ассортимент - количество приобретненных позиций за дату (только для итогов, для детальных записей - 0)" КАК Поле5
и создаваться через редактирование уже, очевидно, не вызовом конструктора из конструктора, а вызовом из конструктора окошка для редактирования текущего запроса в виде текста.
По мне, так лишние телодвижения.
Нужно знать элементарные вещи, как их писать ручками.
Вот всем задачка из серии «что спрашивают» на собеседовании:
Напиши на бумаге ручкой (!) запрос — левое соединение двух таблиц: остатки и продажи.
Поля остатков: номенклатура, количество, склад
Поля продажи: номенклатура, количество, организация
Порой и опытный программист забывает элементарные вещи, не говоря о конструкции соединения.
На мой взгляд какой-то бред в статье сапсан, уж простите — полезность данных приёмов я считаю почти нулевой!