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

<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры

Функции в запросах в языке 1С 8.3, 8.2 (в примерах)

См. пример урока на функции и операторы для работы с типами
Уроки на другие функции здесь.

/// Как в запросе задать константу типа дата в 1с 8.3, 8.2
 
Процедура КонстантаТипаДатаВЗапросе()
    Запрос = Новый Запрос(
        "
        | ВЫБРАТЬ
        |   ДАТАВРЕМЯ(2013, 12, 31) КАК НовыйГод
        |"
    );
 
    Результат = Запрос.Выполнить();
    ОткрытьЗначение(Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой));
КонецПроцедуры
 
/// Функции работы с датами в запросах 1С 8.3, 8.2
 
Процедура РаботаСДатамиВЗапросах1С8()
 
    // Как получить начало или конец периода в запросах 1С 8.3, 8.2    
    // НАЧАЛОПЕРИОДА(Дата, Период)
    // КОНЕЦПЕРИОДА(Дата, Период)
 
    // Как добавить сдвиг к дате в запросах 1С 8.3, 8.2    
    // ДОБАВИТЬКДАТЕ(Дата, Период, Количество)
 
    // Как вычислить  разность между датами в запросах 1С 8.3, 8.2
    // РАЗНОСТЬДАТ(Дата1, Дата2, Период)
 
    // Как вычислить квартал, месяц или день даты в запросах 1С 8.3, 8.2
    // КВАРТАЛ(Дата), Месяц(Дата), День(Дата)
 
    // Период принимает одно из значений
    //   Секунда
    //   Минута
    //   Час
    //   День
    //   Неделя
    //   Декада
    //   Месяц
    //   Квартал
    //   Полугодие
    //   Год    
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ДОБАВИТЬКДАТЕ(РеализацияТоваровУслуг.Дата, Квартал, 1),
        |   РАЗНОСТЬДАТ(РеализацияТоваровУслуг.Дата, &ВыбДата, Месяц),
        |   КВАРТАЛ(РеализацияТоваровУслуг.Дата),
        |   МЕСЯЦ(РеализацияТоваровУслуг.Дата),
        |   ДЕНЬ(РеализацияТоваровУслуг.Дата),        
        |   РеализацияТоваровУслуг.Ссылка
        |ИЗ
        |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |ГДЕ
        |   РеализацияТоваровУслуг.Дата МЕЖДУ 
        |       НАЧАЛОПЕРИОДА(&ВыбДата, Год) И 
        |       КОНЕЦПЕРИОДА(&ВыбДата, Год)";
 
    Запрос.УстановитьПараметр("ВыбДата", ТекущаяДата());
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(ВыборкаДетальныеЗаписи.Ссылка);
    КонецЦикла;
 
КонецПроцедуры
 
/// Как в запросе указать значение поля предопределенной записи 
/// одной из таблиц в 1с 8.3, 8.2
 
Процедура ЗначениеПредопределеннойЗаписиОднойИзТаблиц()
    Запрос = Новый Запрос(
        "
        | ВЫБРАТЬ
        |   Регистратор, СчетДт, СчетКт, Сумма
        | ИЗ
        |   РегистрБухгалтерии.Хозрасчетный
        | ГДЕ
        |   СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КассаОрганизации) И
        |   Активность = ИСТИНА
        |"
    );
 
    Результат = Запрос.Выполнить();
    ОткрытьЗначение(Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой));
КонецПроцедуры
 
/// Как использовать условный оператор внутри запроса в 1с 8.3, 8.2
 
Процедура ИспользованиеУсловногоОператораВнутриЗапроса()
    Запрос = Новый Запрос(
        "
        | ВЫБРАТЬ
        |   Валюта,
        |   Курс,
        |   ВЫБОР
        |       КОГДА КУРС > 20 ТОГДА
        |           ""> 20""
        |       КОГДА КУРС > 15 ТОГДА
        |           "">15 И <= 20""
        |       ИНАЧЕ
        |           ""<=15""
        |
        |   КОНЕЦ КАК ВеличинаКурса
        | ИЗ
        |   РегистрСведений.КурсыВалют
        |"
    );
 
    Результат = Запрос.Выполнить();
    ОткрытьЗначение(Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой));
КонецПроцедуры
 
/// Как в запросе проверить поле на соответствие ссылочному типу 
/// в 1с 8.3, 8.2
 
Процедура ПроверкаПоляНаСсылочныйТип()
    Запрос = Новый Запрос(
        "
        | ВЫБРАТЬ
        |   Регистратор, СчетДт, СчетКт, Сумма
        | ИЗ
        |   РегистрБухгалтерии.Хозрасчетный
        | ГДЕ
        |   Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер
        |"
    );
 
    Результат = Запрос.Выполнить();
    ОткрытьЗначение(Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой));
КонецПроцедуры
 
/// Как в запросе проверить значение на вхождение в 
/// диапазон (включительно) в 1с 8.3, 8.2
 
Процедура ПроверкаЗначенияНаВхождениеВДиапазон()
    Запрос = Новый Запрос(
        "
        | ВЫБРАТЬ
        |   Валюта,
        |   Курс
        | ИЗ
        |   РегистрСведений.КурсыВалют
        | ГДЕ
        |   Курс МЕЖДУ 29 И 30
        |"
    );
 
    Результат = Запрос.Выполнить();
    ОткрытьЗначение(Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой));
КонецПроцедуры
 
/// Как в запросе проверить значение на вхождение в список 
/// в 1с 8.3, 8.2
 
Процедура ПроверкаЗначенияНаВхождениеВСписок()
    Запрос = Новый Запрос(
        "
        | ВЫБРАТЬ
        |   Ссылка
        | ИЗ
        |   ПланСчетов.Хозрасчетный
        | ГДЕ
        |   Ссылка В ИЕРАРХИИ (
        |       ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Касса)
        |   ) ИЛИ
        |   Ссылка В (
        |       ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.КассаОрганизации),
        |       ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами)
        |   )
        |"
    );
 
    Результат = Запрос.Выполнить();
    ОткрытьЗначение(Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой));
КонецПроцедуры
 
/// Как в запросе сравнить строку с шаблоном в 1с 8.3, 8.2
 
Процедура СравнениеСтрокиСШаблоном()
    Запрос = Новый Запрос(
        "
        | ВЫБРАТЬ
        |   Наименование
        | ИЗ
        |   Справочник.Номенклатура
        | ГДЕ
        |   Наименование ПОДОБНО ""%[Тт][Оо][Вв][Аа][Рр]%""
        |"
    );
 
    // %   - любое количество произвольных символов
    // _   - один произвольный символ
    // []  - любой одиночный символ, перечисленный внутри скобок
    // [^] - любой одиночный символ, кроме тех, что внутри скобок после ^
 
    Результат = Запрос.Выполнить();
    ОткрытьЗначение(Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой));
КонецПроцедуры
 
/// Как в запросе сделать проверку значения на NULL в 1с 8.3, 8.2
/// Как получить пустую ссылку в запросе в 1с 8.3, 8.2
 
Процедура ПроверкаЗначенияНаNULL_ПустаяСсылкаВЗапросе()
    Запрос = Новый Запрос(
        "
        | ВЫБРАТЬ
        |   ЕСТЬNULL(Ссылка, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))
        | ИЗ
        |   Справочник.Номенклатура
        |"
    );
 
    Результат = Запрос.Выполнить();
    ОткрытьЗначение(Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой));
КонецПроцедуры

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

<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры

Функции в запросах в языке 1С 8.3, 8.2 (в примерах)

С уважением, (школа 1С программистов).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.