Read professional hostgator reviews wrote by customers. Also check out these great inmotion reviews web hosting.

Функции языка запросов 1С 8

Автор: Дмитрий Котельников

К полям запроса можно применять различные функции. В этом разделе я рассмотрю наиболее часто применяемые (лично мною) из них.

ДАТАВРЕМЯ - задает константное поле с типом Дата. Синтаксис:

    ДАТАВРЕМЯ(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ДАТАВРЕМЯ(2013, 1, 1) КАК ОМГ";//1 января 2013

РАЗНОСТЬДАТ - возвращает разность 2-х дат в указанном измерении (год, месяц, день, час, минута, секунда). Синтаксис:

    РАЗНОСТЬДАТ(<Дата1>, <Дата2>, <Тип>)
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2013, 2, 28), ДАТАВРЕМЯ(2013, 1, 1), ДЕНЬ)
| КАК ДнейДоКонцаЗимы";

ЗНАЧЕНИЕ - задает константное поле с предопределенной записью одной из таблиц БД, также можно передать пустую ссылку. Синтаксис:

    ЗНАЧЕНИЕ(<Имя>)
    Запрос.Текст =
        "ВЫБРАТЬ
        //предопределенный элемент справочника
        |    ЗНАЧЕНИЕ(Справочник.Валюты.Рубли) КАК Рубль,
        //пустая ссылка на документ
        |    ЗНАЧЕНИЕ(Документ.СчетНаОплатуПокупателю.ПустаяСсылка) КАК ПустойСчет,
        //значение перечисления
        |    ЗНАЧЕНИЕ(Перечисление.ПолФизическихЛиц.Мужской) КАК Мужчина,
        //предопределенный счет из плана счетов
        |    ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары) КАК Счет_41";

ВЫБОР - аналог конструкции ЕСЛИ для языка запросов 1С. Синтаксис:

    ВЫБОР 
        КОГДА <Выражение> ТОГДА <Выражение>
        ИНАЧЕ <Выражение>
    КОНЕЦ
    Запрос.Текст =
        "ВЫБРАТЬ
        //если цена меньше 100, то запрос все равно вернет 100
        //в противном случае запрос вернет реальную цену
        |    ВЫБОР
        |        КОГДА Товары.Цена > 100
        |            ТОГДА Товары.Цена
        |        ИНАЧЕ 100
        |    КОНЕЦ КАК Цена
        |ИЗ
        |    Справочник.Товары КАК Товары";

ВЫРАЗИТЬ - довольно неоднозначный оператор. Подробнее о нем читайте статью функция ВЫРАЗИТЬ в языке запросов 1С 8.

ССЫЛКА - логический оператор проверки ссылочного типа. Чаще всего используется для проверки поля составного типа на конкретный тип. Синтаксис:

    ССЫЛКА <Имя таблицы>
    Запрос.Текст =
        "ВЫБРАТЬ
        //если тип значения регистратора документ Приходная,
        //тогда запрос вернет "Поступление товаров", иначе "Реализация товаров"
        |    ВЫБОР
        |        КОГДА Остатки.Регистратор ССЫЛКА Документ.Приходная
        |            ТОГДА ""Поступление товаров""
        |        ИНАЧЕ ""Реализация товаров""
        |    КОНЕЦ КАК ВидДвижения
        |ИЗ
        |    РегистрНакопления.Остатки КАК Остатки";

МЕЖДУ - проверяет значение на вхождение в диапозон. Синтаксис:

    МЕЖДУ <Выражение> И <Выражение>
    Запрос.Текст =
        //получим все товары в диапазоне цен от 100 до 1000
        "ВЫБРАТЬ
        |    Товары.Товар
        |ИЗ
        |    Справочник.Товары КАК Товары
        |ГДЕ
        |    Товары.Цена МЕЖДУ 100 И 1000";

В и В ИЕРАРХИИ - проверяют наличие значения в передаваемом списке. В ИЕРАРХИИ также развернет иерархические элементы вниз и поищет значение среди подчиненных элементов. Синтаксис:

    В(<СписокЗначений>), В ИЕРАРХИИ(<СписокЗначений>)
    Запрос.Текст =
        //получим все субсчета 41-го и 10-го счета
        "ВЫБРАТЬ
        |    Хозрасчетный.Ссылка КАК Счет
        |ИЗ
        |    ПланСчетов.Хозрасчетный КАК Хозрасчетный
        |ГДЕ
        |    Хозрасчетный.Ссылка В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары),
        |    ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы))";

ПОДОБНО - позволяет сравнивать строку с шаблоном, используется когда строка поиска жестко не определена. Построение шаблона:

  • % (процент): последовательность, содержащая любое количество произвольных символов
  • _ (подчеркивание): один произвольный символ
  • [...] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок. В перечислении могут задаваться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона
  • [^...] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания

Синтаксис:

    ПОДОБНО "<ТекстШаблона>"
    Запрос.Текст =
        //найдем все стулья в справочнике номенклатура
        "ВЫБРАТЬ
        |    Товары.Товар
        |ИЗ
        |    Справочник.Товары КАК Товары
        |ГДЕ
        |    Товары.Наименование ПОДОБНО ""[Cc]тул%""";
        //этот запрос вернет Стул, стул, стульчик, стул офисный и т.д.,
        //но стол в этом списке не окажется

 ЕСТЬNULL - если поле не определено, то определяет его в указанное выражение. Синтаксис:

    ЕСТЬNULL(<Выражение>, <Выражение>)
    Запрос.Текст =
        //Если поле не определено (NULL)? то присвоим ему пустую ссылку
        "ВЫБРАТЬ
        |    ЕСТЬNULL(Товары.Ссылка, ЗНАЧЕНИЕ(Справочник.Товары.ПустаяСсылка)) КАК Товар
        |ИЗ
        |    Справочник.Товары КАК Товары";

Замечу, что NULL следует обязательно обрабатывать, т.к. это очень "капризный" тип (в системе "1С:Предприятие 8" определен специальный тип NULL с одним элементом). Если вы попытаетесь сравнить со значением данного типа или присвоить его, то обязательно нарветесь на ошибку, поэтому не забывайте о данной конструкции. Когда может выскочить NULL:

  • после соединения таблиц, кроме внутреннего (о соединениях следующая статья);
  • после выбора реквизитов определенных только для групп справочников и наоборот;
  • после выбора графы журнала документов, в то время как у текущего документа нет реквизитов, включенных в состав этой графы.

Это далеко не полный список функций языка запросов 1С 8, если заинтересует работа каких-либо еще - пишите в комментариях.

 

← Итоги в запросах 1С 8 | Соединения таблиц в запросах 1С 8 →

 

Добавить комментарий


Защитный код
Обновить

© 2012, Котельников Дмитрий. При любом копировании материалов ссылка на сайт-источник zapros-1c-8.ru обязательна.