Войти
Android, Windows, Apple, Ликбез. Социальные сети. Драйверы
  • Японские телефоны Новый японский смартфон
  • Lenovo G500S: характеристики, основные особенности
  • Определяем серию продукта видеокарт Nvidia Характеристики карты nvidia 9800 gt
  • А конкуренты у смартфона есть
  • Что такое расширение файла TRZ?
  • Не работает динамик в "айфоне"
  • Как в запросе получить Вид (тип) Документа? Получить тип в запросе 1с.

     Как в запросе получить Вид (тип) Документа? Получить тип в запросе 1с.

    В этой статье разберем возможности приведения типов в языке запросов 1С, которые предоставляет функция «Выразить».
    Рассмотрим несколько вариантов применения этой функции.
    И первый вариант – округление чисел.

    Для этого необходимо использовать функцию Выразить в следующем формате:

    Выразить(<Число> как Число(<ДлинаЧисла>,<Точность>))

    Где:
    Число — поле, параметр которое нужно округлить
    ДлинаЧисла — максимальная длина числа
    Точность — точность округления числа

    Параметры и длинна и точность должны быть целыми положительными числами.
    Посмотрите, как работает эта функция на рисунке ниже.

    Второй вариант применения – приведение строк. Очень часто в конфигурациях используются строки неограниченной длинны, что накладывает некоторые ограничения. Например, мы не можем сравнивать строки неограниченной длины.
    В запросе, который приведен ниже, поле ПолноеНаименование имеет тип строка неограниченной длины, и этот запрос не будет работать.

    Для того что бы он работал, необходим поле неограниченной длины привести в строку с определенной длинной, делается это при помощи функции Выразить в следующем формате:

    Выразить(<Строка> как Строка(<ДлинаСтроки>)

    Где
    ДлинаСтроки – максимальная длина, к которой будет приведена строка.
    Переделаем запрос: будем в условии приводить неограниченную строку к строке с определенной длинной. Тогда ни каких ошибок не будет.

    Рассмотрим последний и, я бы сказал, самый главный вариант её применения: при работе с полями составного типа.
    Ниже приведены два запроса, в которых используются поля составного типа. Первый неправильный, а второй правильный.

    Т.е. когда вам нужно получить поле какого-нибудь составного типа, то всегда получайте значение этого поля только после приведения типа при помощи функции Выразить. В этом случае для документов и справочников будет следующий формат:

    Выразить(<Документ> как Документ.<ИмяТаблицы>)
    Выразить(<Справочник> как Справочник.< ИмяТаблицы >)
    .

    Где
    ИмяТаблицы — название объекта в .

    Всегда используйте функцию выразить, когда работаете с составными типами, это существенно оптимизирует запрос.

    Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Запросы в 1С от новичка до профи» . Где эти и многие другие вопросы рассматриваются более подробно.

    В чем особенность этого курса:
    Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
    Учебный материал грамотно скомпонован и прост в освоении;
    Несколько десятков уроков;
    Полезные практические примеры;
    Все уроки изложены понятным и простым языком

    Для моих читателей, купон на скидку 25%: hrW0rl9Nnx

    Я стараюсь как можно чаще выпускать различные интересные бесплатные статьи и видеоуроки. Поэтому буду очень рад, если Вы поддержите мой проект перечислив любую сумму:

    Можете перечислить любую сумму напрямую:
    Яндекс.Деньги — 410012882996301
    Web Money — R955262494655

    Вступайте в мои группы.

    Остальные рассмотрим сейчас.

    Функции работы со строками в запросах 1С

    Функций и операторов для работы со строковыми данными в запросах 1С немного.

    Во-первых, строки в запросах можно складывать. Для этого используется оператор «+»:

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

    Во-вторых, можно выделить часть строки. Для этого используется функция ПОДСТРОКА. Функция аналогична встроенного языка 1С. У нее три параметра:

    1. Строка-источник.
    2. Номер символа, с которого должна начинаться выделяемая строка.
    3. Количество символов.

    Запрос. Текст= "ВЫБРАТЬ
    ПОДСТРОКА("
    "Строка: " ", 4, 3) КАК Результат" ; // Результат: ока

    Функция ЕСТЬNULL

    NULL — особый тип данных на платформе 1С:Предприятие. Он же является единственным возможным значением этого типа. NULL может возникать в запросах в нескольких случаях: при соединениях источников запроса, если не было найдено соответствующего значения в одной из таблиц; при обращении к реквизитам несуществующего объекта; если NULL был указан в списке полей запроса (например при объединении результатов выборки из нескольких таблиц) и т.д.

    Поскольку NULL не является ни нулем, ни пустой строкой, ни даже значением Неопределено, его часто бывает полезно заменять на какой-то более полезный тип данных. Для этого и предназначена функция ЕСТЬNULL.

    Она имеет два параметра:

    1. Проверяемое значение.
    2. Значение, на которое нужно заменить первый параметр, если он оказался равен NULL.

    Запрос. Текст= "ВЫБРАТЬ
    ЕСТЬNULL(Источник.Остаток, 0) КАК Остаток"
    ; // Если в результате запроса поле остаток=NULL,
    // то оно заменится на 0, и с ним можно будет выполнять математические действия

    Функции ПРЕДСТАВЛЕНИЕ и ПРЕДСТАВЛЕНИЕССЫЛКИ

    Эти функции предназначены для получения строковых представлений различных значений. То есть, они преобразуют ссылки, числа, булево и т.д. в обычный текст. Разница между ними в том, что функция ПРЕДСТАВЛЕНИЕ преобразует в текст (строку) любые типы данных, а функция ПРЕДСТАВЛЕНИЕССЫЛКИ — только ссылки, а остальные значения возвращает как есть, не преобразованными.

    Запрос. Текст= "ВЫБРАТЬ
    ПРЕДСТАВЛЕНИЕ (ИСТИНА) КАК Булево,
    ПРЕДСТАВЛЕНИЕ (4) КАК Число,
    ПРЕДСТАВЛЕНИЕ (Источник.Ссылка) КАК Ссылка,
    ПРЕДСТАВЛЕНИЕ(ДАТАВРЕМЯ(2016,10,07)) КАК Дата"
    ;
    // Булево = "Да", Число = "4", Ссылка = "Документ Расходный кассовый ордер №... от..."
    // Дата="07.10.2016 0:00:00"

    Запрос. Текст= "ВЫБРАТЬ
    ПРЕДСТАВЛЕНИЕССЫЛКИ (ИСТИНА) КАК Булево,
    ПРЕДСТАВЛЕНИЕССЫЛКИ (4) КАК Число,
    ПРЕДСТАВЛЕНИЕССЫЛКИ (Источник.Ссылка) КАК Ссылка,
    ПРЕДСТАВЛЕНИЕССЫЛКИ (ДАТАВРЕМЯ(2016,10,07)) КАК Дата"
    ;
    // Булево = ИСТИНА, Число = 4, Ссылка = "Документ Расходный кассовый ордер №... от..."
    // Дата=07.10.2016 0:00:00

    Функции ТИП и ТИПЗНАЧЕНИЯ

    Функция ТИП возвращает тип данных платформы 1С:Предприятие.

    Запрос. Текст= "ВЫБРАТЬ
    ТИП (Число) ,
    ТИП (Строка),
    ТИП (Документ.РасходныйКассовыйОрдер)"
    ;

    Функция ТИПЗНАЧЕНИЯ возвращает тип переданного в нее значения.

    Запрос. Текст= "ВЫБРАТЬ
    ТИПЗНАЧЕНИЯ (5) КАК Число,
    ТИП ("
    "Строчка" ") КАК Строка,
    ТИП (Источник.Ссылка) КАК Справочник
    Из Справочник.Источник КАК Источник"
    ;
    //Число=Число, Строка=Строка, Справочник = СправочникСсылка.Источник

    Эти функции удобно применять, например, когда нужно выяснить является ли полученное в запросе поле значением какого-то типа. Например, получим контактную информацию контрагентов из регистра сведений КонтактнаяИнформация (там хранятся контакты не только контрагентов, но и организаций, физических лиц и т.д.):

    Запрос. Текст= "ВЫБРАТЬ

    ИЗ

    ГДЕ
    ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)"
    ;

    Функция ЗНАЧЕНИЕ

    Функция Значение позволяет использовать в запросе объекты конфигурации 1С напрямую, без применения .

    Дополним предыдущий пример еще одним условием. Необходимо получить только телефоны контрагентов.

    Запрос. Текст= "ВЫБРАТЬ
    КонтактнаяИнформация.Представление
    ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    ГДЕ
    ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)
    И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)"
    ;

    Следует отметить, что эту функцию можно использовать только с предопределенными значениями, т.е. со значениями, к которым можно обратиться напрямую из конфигуратора. То есть функция ЗНАЧЕНИЕ не можно использоваться с элементами справочников, созданными пользователями, но может работать с перечислениями, с предопределенными элементами справочников, со значениями ПустаяСсылка .

    Оператор ССЫЛКА

    Оператор ССЫЛКА предназначен для проверки значений, получаемых запросом, на принадлежность к определенному ссылочному типу. Эту же задачу можно выполнить с помощью функций ТИП и ТИПЗНАЧЕНИЯ (которые имеют более широкую область применения и были рассмотрены выше).

    Например, задачу выбора контактной информации контрагентов можно было решить и так:

    Запрос. Текст= "ВЫБРАТЬ
    КонтактнаяИнформация.Представление
    ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    ГДЕ
    КонтактнаяИнформация.Объект ССЫЛКА Справочник.Контрагенты"
    ;

    Оператор ВЫРАЗИТЬ

    Оператор ВЫРАЗИТЬ используется в запросах 1С в двух случаях:

    • когда нужно изменить характеристики примитивного типа;
    • когда нужно из поля с составным типом данных сделать поле с одиночным типом.

    К примитивным типам данных относятся: число, строка, дата, булево. Некоторые из этих типов данных имеют дополнительные характеристики. Тип Число имеет длину и точность, тип Строка — длину или неограниченность.

    Оператор ВЫРАЗИТЬ позволяет изменять не тип данных, а именно дополнительные характеристики. Например, он может из строки с неограниченной длиной сделать строку с длиной ограниченной. Это бывает полезно, если нужно сгруппировать результаты запроса по такому полю. Выполнять группировку по полям с неограниченной длиной нельзя, поэтому мы его преобразуем в строку с длиной 200 символов.

    Запрос. Текст= "ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПоступлениеТоваровУслуг.Ссылка) КАК Ссылка
    ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Комментарий КАК СТРОКА(200))"
    ;

    В ряде случаев, запросы к полям с составным типом данных могут обрабатываться платформой 1С неоптимально. Это приводит к увеличению времени выполнения запросов, поэтому бывает полезно заранее преобразовать составной тип в одиночный.

    Запрос. Текст= "ВЫБРАТЬ
    ВЫРАЗИТЬ(ДвижениеТоваровОбороты.Распоряжение КАК Документ.ЗаказКлиента).Дата КАК ДатаЗаказа,
    ДвижениеТоваровОбороты.Номенклатура
    ИЗ
    РегистрНакопления.ДвижениеТоваров.Обороты КАК ДвижениеТоваровОбороты
    ГДЕ
    ДвижениеТоваровОбороты.Распоряжение ССЫЛКА Документ.ЗаказКлиента"
    ;

    Операторы ВЫБОР и ЕСТЬ NULL

    Оператор ВЫБОР аналогичен оператору ЕСЛИ во встроенном языке 1С, но имеет несколько урезанный функционал.

    Допустим мы хотим получить контактные данные из регистра сведений КонтактнаяИнформация и при этом в отдельном поле запроса указать, принадлежат ли они контрагенту или физическому лицу.

    Запрос. Текст= "ВЫБРАТЬ
    КонтактнаяИнформация.Представление,
    ВЫБОР
    КОГДА ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)
    ТОГДА "
    Контрагент"
    ИНАЧЕ ВЫБОР
    КОГДА ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.ФизическиеЛица)
    ТОГДА "
    ФизЛицо"
    ИНАЧЕ " Кто- то другой"
    КОНЕЦ
    КОНЕЦ КАК Владелец
    ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация"
    ;

    Как видно из примера, в конструкции ВЫБОР всегда присутствует условие после слова КОГДА; значение, применяемое, если условие выполняется, после слова ТОГДА и значение, применяемое, если условие не выполняется, после слова ИНАЧЕ. Все три элемента конструкции ВЫБОР являются обязательными. Опустить элемент ИНАЧЕ , так же, как это делается при использовании оператора ЕСЛИ во встроенном языке 1С, нельзя. Также у оператора ВЫБОР отсутствует аналог конструкции ИНАЧЕЕСЛИ , зато можно вложить один ВЫБОР в другой, как и было сделано в нашем примере.

    Оператор ЕСТЬ NULL используется в конструкции ВЫБОР для сравнения поля запроса с типом NULL.

    Запрос. Текст= "ВЫБРАТЬ
    ВЫБОР
    КОГДА Значение ЕСТЬ NULL ТОГДА 0
    ИНАЧЕ Значение
    КОНЕЦ"
    ;

    Кроме того, оператор ЕСТЬ NULL можно использовать в условиях запроса, например в предложении ГДЕ.

    Запрос.Текст = "ВЫБРАТЬ | усЕдиницыХранения.Ссылка |ИЗ | Справочник.усЕдиницыХранения КАК усЕдиницыХранения // Пример 1. сравнение с не заполненным булевым значением: |ГДЕ | усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь // Пример 2. но если это булево определено, то лучше так: // условие на отрицательное булево: |ГДЕ | НЕ усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны // Пример 3. выборка по условию не заполненного поля, имеющего тип "справочник конкретного типа" |ГДЕ | усЕдиницыХранения.АктивнаяОбластьОтбора = ЗНАЧЕНИЕ(Справочник.усОбластиОтбора.ПустаяСсылка) // Пример 3а. выборка по условию не заполненного поля, имеющего тип "документ конкретного типа" |ГДЕ | НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент.ПустаяСсылка) // Пример 3б. выборка по условию не заполненного поля, имеющего тип "документы разных типов" (составное поле) |ГДЕ | (НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент1.ПустаяСсылка) | ИЛИ НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент2.ПустаяСсылка) | ИЛИ...(и т.д. - последовательно перечисляем условия для всех возможных типов этого составного поля)) // Пример 4. или наоборот, если нужно выбрать заполненное значение типа "строка", то поможет условие: |ГДЕ | усЕдиницыХранения.Наименование > """" // Пример 5. если нужно выбрать документы конкретного типа, при составном типе данных, например в регистре "ВыполняемыеЗадания" ресурс "Задание" имеет составной тип, среди значений которого возможен документ "Отбор" |ГДЕ | ВЫРАЗИТЬ(РегистрСведенийВыполняемыеЗадания.Задание КАК Документ.Отбор) ССЫЛКА Документ.Отбор // Пример 5а. Еще аналогичный пример, когда нужно выбрать документы конкретного типа | ВЫБОР | КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.ПоступлениеТоваровУслуг) ССЫЛКА Документ.ПоступлениеТоваровУслуг | ТОГДА ""ПоступлениеТоваровУслуг"" | КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.РеализацияТоваровУслуг) ССЫЛКА Документ.РеализацияТоваровУслуг | ТОГДА ""РеализацияТоваровУслуг"" | ИНАЧЕ """" | КОНЕЦ КАК ВидДокумента // Пример 6. выбор по условию не определенного значения: |ГДЕ | СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО // Пример 7. выбор по виду движения "Приход" регистра накопления, "Расход" - аналогично): |ГДЕ | РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) // Пример 8. Как в запросе указать, что выполнять запрос не нужно (например, нужно программно в зависимости от какого-то условия вернуть пустой результат запроса - Запрос.Текст = СтрЗаменить(Запрос.Текст, "ГДЕ Док.Ссылка = &ДокументСсылка", "ГДЕ ЛОЖЬ");). Для этого достаточно добавить условие "Где Ложь". Кстати, независимо от объема запрашиваемых в выборке данных, такой запрос будет выполнен мгновенно. |ГДЕ ЛОЖЬ // Пример 9. Проверка на то, что результат выполнения запроса содержит данные: Если НЕ Запрос.Выполнить().Пустой() Тогда // Пример 10. выбор по условию не заполненной даты: |ГДЕ | тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)

    Язык запросов 1С — одно из основных отличий между версиями 7.7 и 8. Одним из важнейших пунктов в изучении 1С-программирования является язык запросов. В 1С 8.3 запросы — самый мощный и эффективный инструмент получения данных. Язык запросов позволяет в удобном виде получать информацию из базы данных.

    Сам синтаксис очень сильно напоминает классический T-SQL, за исключением того, что в 1С с помощью языка запросов можно только получать данные, используя конструкцию Выбрать(select). Язык поддерживает и более сложные конструкции, например, (запрос в запросе). Запросы в 1С 8 можно составлять как на кириллице, так и на латинице.

    В статье я постараюсь рассказать про основные ключевые слова в языке запросов 1С:

    • выбрать
    • разрешенные
    • различные
    • выразить
    • первые
    • для изменения
    • значение
    • тип значения (и оператор ССЫЛКА)
    • выбор
    • сгруппировать по
    • имеющие
    • ЕСТЬNULL
    • Есть NULL
    • соединения — правые, левые, внутренние, полные .

    А так же небольшие хитрости языка 1С, применяя которые вы сможете оптимально построить текст запроса.

    Для отладки запросов в системе 1С 8.2 предусмотрен специальный инструмент — консоль запросов. Увидеть описание и скачать его можно по ссылке — .

    Рассмотрим самые важные и интересные операторы языка запросов 1С.

    ВЫБРАТЬ (SELECT)

    В языке запросов 1С предприятия 8 любой запрос начинается с ключевого слова ВЫБРАТЬ . В языке 1С нет конструкций UPDATE, DELETE, CREATE TABLE, INSERT, эти манипуляции производятся в объектной технике. Предназначение его — только чтение данных.

    Например:

    ВЫБРАТЬ
    ТекущийСправочник.Наименование
    ИЗ
    Справочник.Номенклатура КАК ТекущийСправочник

    Запрос вернёт таблицу с наименованиями номенклатуры.

    Рядом с конструкцией ВЫБРАТЬ можно встретить ключевые слова ДЛЯ ИЗМЕНЕНИЯ , РАЗРЕШЕННЫЕ , РАЗЛИЧНЫЕ , ПЕРВЫЕ

    РАЗРЕШЕННЫЕ — выбирает только записи из таблицы, на которые есть права у текущего пользователя.

    РАЗЛИЧНЫЕ — означает, что в результат не попадет дублирующих строк.

    ВЫБОР (CASE)

    Очень часто данная конструкция недооценивается программистами. Пример её использования:

    ТекущийСправочник.Наименование,

    КОГДА ТекущийСправочник.Услуга ТОГДА

    «Услуга»

    КОНЕЦ КАК ВидНоменклатуры

    Справочник.Номенклатура КАК ТекущийСправочник

    Пример возвратит в поле «ВидНоменклатуры» текстовое значение — «Товар» или «Услуга».

    ГДЕ (WHERE)

    Конструкция языка запросов 1C, позволяющая наложить отбор на получаемые данные. Учтите, что от сервера система получает все данные, а только потом они отбираются по данному параметру.

    ВЫБРАТЬ
    Справочник.Наименование
    ИЗ
    ТекущийСправочник.Номенклатура КАК ТекущийСправочник
    ГДЕ ТекущийСправочник.Услуга = ИСТИНА

    В примере мы отбираем записи, у которых значение реквизита «Услуга» установлено в положение «Истина». В данном примере можно было бы обойтись и таким условием:

    «ГДЕ Услуга»

    По сути, мы отбираем строки, у которых выражение после ключевого слова равно «Истина».

    В выражениях можно использовать прямые условия:

    ГДЕ Код = «005215»

    С помощью оператора «ЗНАЧЕНИЕ()» в условиях использовать обращение к предопределенным элементам и перечислениям в запросе 1С:

    ГДЕ ТипНоменклатуры= Значение(Перечисление.ТипыНоменклатуры.Товар)

    Значения времени могут указываться следующим образом:

    ГДЕ ДатаПоступления > ДАТАВРЕМЯ(2012,01,01):

    Чаще всего условия указываются в виде параметров, передаваемых в запрос:

    Получите 267 видеоуроков по 1С бесплатно:

    ГДЕ НоменклатурнаяГруппа= &НоменклатурнаяГруппа

    Условие можно наложить на тип реквизита, если он составного типа:

    Если необходимо ограничивать отбор из списка значений или массива, можно поступить следующим образом:

    ГДЕ РегистрНакопления.Регистратор В (&СписокДокументовДляОтбора)

    Условие может быть и сложное, состоящее из нескольких условий:

    ГДЕ ДатаПоступления > ДАТАВРЕМЯ(2012,01,01) И НоменклатурнаяГруппа= &НоменклатурнаяГруппа И НЕ Услуга

    СГРУППИРОВАТЬ ПО (GROUP BY)

    Конструкция языка запросов 1С 8.2, используемая для группировки результата.

    Например:

    ВЫБРАТЬ
    ПоступлениеТоваровУслугTовары.Товар,
    СУММА(ПоступлениеТоваровУслугTовары.Количество) КАК Количество,
    СУММА(ПоступлениеТоваровУслугTовары.Сумма) КАК Сумма
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугTовары

    СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугTовары.Товар

    Данный запрос просуммирует все поступления по сумме и количеству в разрезе номенклатуры.

    Помимо ключевого слова СУММА можно использовать другие агрегатные функции: КОЛИЧЕСТВО , КОЛИЧЕСТВО РАЗНЫХ , МАКСИМУМ , МИНИМУМ , СРЕДНЕЕ .

    ИМЕЮЩИЕ (HAVING)

    Конструкция, о которой часто забывают, но она очень важна и полезна. Она позволяет указать отбор в виде агрегатной функции, этого нельзя сделать в конструкции ГДЕ .

    Пример использования ИМЕЮЩИЕ в запросе 1С:

    ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Товар,
    СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество,
    СУММА(ПоступлениеТоваровУслугТовары.Сумма) КАК Сумма
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары

    СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугТовары.товар

    СУММА(ПоступлениеТоваровУслугТовары.Количество) > 5

    Так мы отберем количество товаров, которых поступило более 5 штук.

    ЗНАЧЕНИЕ()

    Например:

    ГДЕ Банк = Значение(Справочник.Банки.ПустаяСсылка)

    ГДЕ ВидНоменклатуры = Значение(Справочник.ВидыНоменклатуры.Товар)

    ГДЕ ТипНоменклатуры= Значение(Перечисление.ТипыНоменклатуры.Услуга)

    ТИП в запросе

    Тип данных можно проверить следующим образом: с помощью функций ТИП() и ТИПЗНАЧЕНИЯ() или с помощью логического оператора ССЫЛКА.

    ВЫРАЗИТЬ()

    Оператор Выразить в запросах 1С служит для преобразования типов данных.

    Синтаксис: ВЫРАЗИТЬ(<Выражение> КАК <Тип значения>)

    С помощью него можно преобразовать строковые значения в дату или ссылочные в строковые данные и так далее.

    В практическом применении оператор Выразить() очень часто используется для преобразования полей неограниченной длины, потому что поля неограниченной длины нельзя отбирать, группировать и тд. Если такие поля не преобразовывать, Вы получите ошибку Нельзя сравнивать поля неограниченной длины и поля несовместимых типов .

    ВЫБРАТЬ
    КонтактнаяИнформация.Объект,
    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)) КАК Представление
    ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация

    СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)),
    КонтактнаяИнформация.Объект

    ЕСТЬNULL (ISNULL)

    Достаточно полезная функция языка запросов 1С, которая проверяет значение в записи, и если оно равно NULL, то позволяет заменить на своё значение. Чаще всего используется при получении виртуальных таблиц остатков и оборотов, чтобы скрыть NULL и поставить понятный 0 (ноль).

    ЕСТЬNULL(НалогиПредМесяца.ПримененнаяЛьготаФСС, 0)

    Такая функция языка запросов 1С ЕСТЬNULL при отсутствии значения вернет ноль, что позволит избежать ошибки.

    СОЕДИНЕНИЕ (JOIN)

    Соединения бывают 4 типов: ЛЕВОЕ , ПРАВОЕ , ПОЛНОЕ, ВНУТРЕННЕЕ .

    ЛЕВОЕ и ПРАВОЕ СОЕДИНЕНИЕ

    Соединения используются для связи двух таблиц по определенному условию. Особенность при ЛЕВОМ СОЕДИНЕНИИ в том, что мы берём первую указанную таблицу полностью и привязываем по условию вторую таблицу. Поля второй таблицы, которые не удалось привязать по условию, заполняются значением NULL .

    Пример левого соединения в запросе 1С:

    Вернет всю таблицу и заполнит поле «Банк» лишь в тех местах, где будет соблюдаться условие «Контрагенты.Наименование = Банки.Наименование». Если условие не соблюдается, в поле Банк будет установлено NULL .

    ПРАВОЕ СОЕДИНЕНИЕ в языке 1С 8.3 абсолютно аналогично ЛЕВОМУ соединению , за исключением одного отличия: в ПРАВОМ СОЕДИНЕНИИ «главная» таблица — вторая, а не первая.

    ПОЛНОЕ СОЕДИНЕНИЕ

    ПОЛНОЕ СОЕДИНЕНИЕ отличается от левого и правого тем, что выводит все записи из двух таблиц, соединяет лишь те, которые может соединить по условию.

    Например:

    ПОЛНОЕ СОЕДИНЕНИЕ
    Справочник.Банки КАК Банки

    ПО

    Язык запросов вернет обе таблицы полностью лишь по выполненному условию Соединить записи. В отличие от левого/правого соединения возможно появления NULL в двух полях.

    ВНУТРЕННЕЕ СОЕДИНЕНИЕ

    ВНУТРЕННЕЕ СОЕДИНЕНИЕ отличается от полного тем, что выводит только те записи, которые смогли соединить по заданному условию.

    Например:

    ИЗ
    Справочник.Контрагенты КАК Клиенты

    ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    Справочник.Банки КАК Банки

    ПО
    Клиенты.Наименование = Банки.Наименование

    Данный запрос вернет только строки, в которых у банка и контрагента будет одинаковое наименование.

    Заключение

    Это лишь небольшая часть синтаксиса из языка запросов 1С 8, в дальнейшем я попробую рассмотреть более подробно некоторые моменты, показать и многое другое!

    1С позволяет значительно упростить ведение бухгалтерии или просто управление любой организацией, будь то маленький магазинчик или крупное предприятие. Программа представляет собой крупную систему по управлению базами данных . Чтобы не запутаться во всём этом, необходимо уметь выполнять различные простейшие действия и понимать суть. Далее вы поймёте, как в 1С проверить тип значения в запросе, а также какие они, вообще, бывают, а также как их различать.

    Типы значений

    1С: Предприятие включило в новые версии специальную функцию (платформа 8.2). С помощью неё можно к любым наименованиям, элементам системы данных добавлять какие-либо особые параметры. Сделано это для того, чтобы систему было легче редактировать и добавлять туда новые элементы. Функция эта как раз и называется «Тип значения».

    На самом деле это одно из базовых понятий, которое содержит большинство языков программирования. При помощи его можно проводить классификацию различных данных. Например: даты, числа, строки, ссылки. Это лишь базовые классификации. Их может быть гораздо больше. Скажем, если вы заносите в вашу систему информацию о городах, можно использовать: материк, страна, район и т. п.

    Проверка

    Проверить то или иное поле можно при помощи языка запросов. А точнее его функции: ТИПЗНАЧЕНИЯ. То есть, если мы хотим узнать, информацию какого вида содержит интересующая ячейка, мы должны воспользоваться командой.

    ТИПЗНАЧЕНИЯ(Значение) = ТИП(Строка)

    На примере выше мы определили, воспользовавшись командой, простейший вид. Другой пример проверки запроса:

    Документы

    Самих видов довольно много, пользователи могут обходиться как начальными, так и вводить свои, чтобы совершенствовать информационную базу. Вот некоторые из них.

    • ДокументСсылка. Применяется для удобного хранения ссылок на различные объекты внутри других частей системы.
    • ДокументОбъект - редактирование документов.
    • ДокументВыборка - переборка объектов из базы данных.

    Кроме того, есть специальные термины, характеризующие любые данные:

    • форма;
    • строка;
    • булево;
    • число;
    • дата;
    • массив;
    • флажок;
    • картинка.

    Это лишь часть из них. Любой объект может являться только чем-то из этого списка. Булево - специальный параметр, который принимает два значения: правда или ложь. Также есть специальные теги, позволяющие корректировать запрос: когда, где, как, иначе и т. п. Они задают алгоритм поведения программы. 1С отличает то, что эти слова здесь, как и всё остальное, можно вписывать на русском языке.

    Важно понимать, что все это будет восприниматься новичками и непрофессионалами как китайская грамота. Чтобы понимать, о чём идёт речь и эффективно использовать 1С, необходимо знать основы программирования. В целом, проверить тип в запросе в программе 1С будет достаточно легко, в сравнении с другими действиями.