Разделы сайта
Выбор редакции:
- Как преобразовать JPG файлы в меньший размер без потери качества
- Что представляет собой распайка USB-разъема
- Восстановление MicroSD карты памяти
- Как посмотреть исходный код страницы в Google Chrome
- Способы установить приложения Android (установить APK)
- Карта базовых станций сотовых операторов или самостоятельный поиск их расположения и координат
- Радиосвязь Кодирование одним символом двух бит передаваемой информации
- Универсальная система автоматизированного проектирования, строительная конфигурация Работа с многолистовыми чертежами
- Программы для очистки компьютера от ненужных файлов Скачать программу для очистки компьютера виндовс 10
- Удержание предметов в Steam Как узнать на сколько дается бан трейда
Реклама
Как в запросе получить Вид (тип) Документа? Типзначения в запросе 1с |
Остальные рассмотрим сейчас. Функции работы со строками в запросах 1СФункций и операторов для работы со строковыми данными в запросах 1С немного. Во-первых, строки в запросах можно складывать. Для этого используется оператор «+»: Запрос.
Текст=
"ВЫБРАТЬ Во-вторых, можно выделить часть строки. Для этого используется функция ПОДСТРОКА. Функция аналогична встроенного языка 1С. У нее три параметра:
Запрос.
Текст=
"ВЫБРАТЬ Функция ЕСТЬNULLNULL — особый тип данных на платформе 1С:Предприятие. Он же является единственным возможным значением этого типа. NULL может возникать в запросах в нескольких случаях: при соединениях источников запроса, если не было найдено соответствующего значения в одной из таблиц; при обращении к реквизитам несуществующего объекта; если NULL был указан в списке полей запроса (например при объединении результатов выборки из нескольких таблиц) и т.д. Поскольку NULL не является ни нулем, ни пустой строкой, ни даже значением Неопределено, его часто бывает полезно заменять на какой-то более полезный тип данных. Для этого и предназначена функция ЕСТЬNULL. Она имеет два параметра:
Запрос.
Текст=
"ВЫБРАТЬ Функции ПРЕДСТАВЛЕНИЕ и ПРЕДСТАВЛЕНИЕССЫЛКИЭти функции предназначены для получения строковых представлений различных значений. То есть, они преобразуют ссылки, числа, булево и т.д. в обычный текст. Разница между ними в том, что функция ПРЕДСТАВЛЕНИЕ преобразует в текст (строку) любые типы данных, а функция ПРЕДСТАВЛЕНИЕССЫЛКИ — только ссылки, а остальные значения возвращает как есть, не преобразованными. Запрос.
Текст=
"ВЫБРАТЬ Запрос.
Текст=
"ВЫБРАТЬ Функции ТИП и ТИПЗНАЧЕНИЯФункция ТИП возвращает тип данных платформы 1С:Предприятие. Запрос.
Текст=
"ВЫБРАТЬ Функция ТИПЗНАЧЕНИЯ возвращает тип переданного в нее значения. Запрос.
Текст=
"ВЫБРАТЬ Эти функции удобно применять, например, когда нужно выяснить является ли полученное в запросе поле значением какого-то типа. Например, получим контактную информацию контрагентов из регистра сведений КонтактнаяИнформация (там хранятся контакты не только контрагентов, но и организаций, физических лиц и т.д.): Запрос.
Текст=
"ВЫБРАТЬ Функция ЗНАЧЕНИЕФункция Значение позволяет использовать в запросе объекты конфигурации 1С напрямую, без применения . Дополним предыдущий пример еще одним условием. Необходимо получить только телефоны контрагентов. Запрос.
Текст=
"ВЫБРАТЬ Следует отметить, что эту функцию можно использовать только с предопределенными значениями, т.е. со значениями, к которым можно обратиться напрямую из конфигуратора. То есть функция ЗНАЧЕНИЕ не можно использоваться с элементами справочников, созданными пользователями, но может работать с перечислениями, с предопределенными элементами справочников, со значениями ПустаяСсылка . Оператор ССЫЛКАОператор ССЫЛКА предназначен для проверки значений, получаемых запросом, на принадлежность к определенному ссылочному типу. Эту же задачу можно выполнить с помощью функций ТИП и ТИПЗНАЧЕНИЯ (которые имеют более широкую область применения и были рассмотрены выше). Например, задачу выбора контактной информации контрагентов можно было решить и так: Запрос.
Текст=
"ВЫБРАТЬ Оператор ВЫРАЗИТЬОператор ВЫРАЗИТЬ используется в запросах 1С в двух случаях:
К примитивным типам данных относятся: число, строка, дата, булево. Некоторые из этих типов данных имеют дополнительные характеристики. Тип Число имеет длину и точность, тип Строка — длину или неограниченность. Оператор ВЫРАЗИТЬ позволяет изменять не тип данных, а именно дополнительные характеристики. Например, он может из строки с неограниченной длиной сделать строку с длиной ограниченной. Это бывает полезно, если нужно сгруппировать результаты запроса по такому полю. Выполнять группировку по полям с неограниченной длиной нельзя, поэтому мы его преобразуем в строку с длиной 200 символов. Запрос.
Текст=
"ВЫБРАТЬ В ряде случаев, запросы к полям с составным типом данных могут обрабатываться платформой 1С неоптимально. Это приводит к увеличению времени выполнения запросов, поэтому бывает полезно заранее преобразовать составной тип в одиночный. Запрос.
Текст=
"ВЫБРАТЬ Операторы ВЫБОР и ЕСТЬ NULLОператор ВЫБОР аналогичен оператору ЕСЛИ во встроенном языке 1С, но имеет несколько урезанный функционал. Допустим мы хотим получить контактные данные из регистра сведений КонтактнаяИнформация и при этом в отдельном поле запроса указать, принадлежат ли они контрагенту или физическому лицу. Запрос.
Текст=
"ВЫБРАТЬ Как видно из примера, в конструкции ВЫБОР всегда присутствует условие после слова КОГДА; значение, применяемое, если условие выполняется, после слова ТОГДА и значение, применяемое, если условие не выполняется, после слова ИНАЧЕ. Все три элемента конструкции ВЫБОР являются обязательными. Опустить элемент ИНАЧЕ , так же, как это делается при использовании оператора ЕСЛИ во встроенном языке 1С, нельзя. Также у оператора ВЫБОР отсутствует аналог конструкции ИНАЧЕЕСЛИ , зато можно вложить один ВЫБОР в другой, как и было сделано в нашем примере. Оператор ЕСТЬ NULL используется в конструкции ВЫБОР для сравнения поля запроса с типом NULL. Запрос.
Текст=
"ВЫБРАТЬ Кроме того, оператор ЕСТЬ NULL можно использовать в условиях запроса, например в предложении ГДЕ.
43 1С позволяет значительно упростить ведение бухгалтерии или просто управление любой организацией, будь то маленький магазинчик или крупное предприятие. Программа представляет собой крупную систему по управлению базами данных . Чтобы не запутаться во всём этом, необходимо уметь выполнять различные простейшие действия и понимать суть. Далее вы поймёте, как в 1С проверить тип значения в запросе, а также какие они, вообще, бывают, а также как их различать. Типы значений1С: Предприятие включило в новые версии специальную функцию (платформа 8.2). С помощью неё можно к любым наименованиям, элементам системы данных добавлять какие-либо особые параметры. Сделано это для того, чтобы систему было легче редактировать и добавлять туда новые элементы. Функция эта как раз и называется «Тип значения». На самом деле это одно из базовых понятий, которое содержит большинство языков программирования. При помощи его можно проводить классификацию различных данных. Например: даты, числа, строки, ссылки. Это лишь базовые классификации. Их может быть гораздо больше. Скажем, если вы заносите в вашу систему информацию о городах, можно использовать: материк, страна, район и т. п. ПроверкаПроверить то или иное поле можно при помощи языка запросов. А точнее его функции: ТИПЗНАЧЕНИЯ. То есть, если мы хотим узнать, информацию какого вида содержит интересующая ячейка, мы должны воспользоваться командой.
На примере выше мы определили, воспользовавшись командой, простейший вид. Другой пример проверки запроса: ДокументыСамих видов довольно много, пользователи могут обходиться как начальными, так и вводить свои, чтобы совершенствовать информационную базу. Вот некоторые из них.
Кроме того, есть специальные термины, характеризующие любые данные:
Это лишь часть из них. Любой объект может являться только чем-то из этого списка. Булево - специальный параметр, который принимает два значения: правда или ложь. Также есть специальные теги, позволяющие корректировать запрос: когда, где, как, иначе и т. п. Они задают алгоритм поведения программы. 1С отличает то, что эти слова здесь, как и всё остальное, можно вписывать на русском языке. Важно понимать, что все это будет восприниматься новичками и непрофессионалами как китайская грамота. Чтобы понимать, о чём идёт речь и эффективно использовать 1С, необходимо знать основы программирования. В целом, проверить тип в запросе в программе 1С будет достаточно легко, в сравнении с другими действиями. Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными. Войдите на сайт как ученик Войдите как ученик, чтобы получить доступ к материалам школы Язык запросов 1С 8.3 для начинающих программистов: функции и операторы для работы с типами (ТИПЗНАЧЕНИЯ, ТИП, ССЫЛКА, ЕСТЬNULL, ВЫРАЗИТЬ)Давайте вспомним, что каждый реквизит (свойство, поле) справочника, документа или любого другого прикладного объекта имеет свой тип . И этот тип мы можем посмотреть в конфигураторе: В языке запросов существует целый класс функций и операторов для работы с типами реквизитов. Давайте рассмотрим их. Функция ТИПЗНАЧЕНИЯЭта функция принимает один параметр (значение) и возвращает его тип. Для описанного на картинке (выше) реквизита Вкус справочника Еда вернётся следующее: А теперь давайте рассмотрим реквизит ОтличительныйПризнак у справочника Города : Вы видите, что этот реквизит может иметь один из нескольких типов: Строка , Справочник.Вкусы , Справочник.Цвета . Такой тип реквизитов называется СОСТАВНЫМ . Если мы попытаемся заполнить значение такого реквизита в режиме 1С:Предприятие, то система спросит нас, какого типа будет вводимое значение: И только после нашего выбора позволит ввести значение выбранного типа. Таким образом, элементы справочника одного вида (Справочник.Города ) смогут хранить в одном и том же реквизите (ОтличительныйПризнак ) значения разных типов (Строка, Цвета или Вкусы). Вы можете убедиться в этом сами пощёлкав по элементам справочника Города в режиме 1С:Предприятие. Вы читаете ознакомительную версию урока, полноценные уроки находятся . Здесь значение отличительного признака является элементом справочника Вкусы : Здесь строкой: А здесь вообще элементом справочника Цвета : Вот какие возможности открывает перед нами составной тип данных! Интересно, как поведёт себя функция ТИПЗНАЧЕНИЯ на реквизите ОтличительныйЭлемент , имеющий составной тип данных: Это уже очень интересно. Давайте разбираться с каждой строкой в отдельности. Тип значения отличительного признака для элемента Россия равен NULL . Мы впервые сталкиваемся с этим типом. Значения данного типа используются исключительно для определения отсутствующего значения при работе с базой данных. Так и есть, ведь элемент Россия является группой, а не обычным элементом справочника Города , поэтому у него отсутствует поле ОтличительныйПризнак . А тип у отсутствующего значения, как мы прочитали выше, всегда равен NULL . Тип значения отличительного признака для Перми равен Вкусы . Так и есть, ведь значение отличительного признака забитое в базе для города Пермь является ссылкой на элемент справочника Вкусы . Для Красноярска тип признака равен Цвета , потому что значение выбранное в базе является ссылкой на элемент справочника Цвета . Для Воронежа тип признака равен Строка , потому что значение введенное в базе является обычной строкой. Индия снова группа, поэтому значение отсутствует. А тип у отсутствующего значения, как мы помним, равен NULL . А дело вот в чём. Если вы зайдёте в элемент справочника Города с наименованием Сан-Паулу , то увидите, что поле ОтличительныйПризнак совершенно никак не заполнено. Оно пустое. А все незаполненные поля составного типа имеют специальное значение НЕОПРЕДЕЛЕНО . С НЕОПРЕДЕЛЕНО мы также сталкиваемся впервые. Значение НЕОПРЕДЕЛЕНО применяется, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Это как раз наша ситуация. А тип значения НЕОПРЕДЕЛЕНО , как вы уже наверное догадались равен NULL . Функция ТИПОна принимает всего один параметр - имя примитивного типа (СТРОКА , ЧИСЛО , ДАТА , БУЛЕВО ), либо имя таблицы, тип ссылки которой нужно получить. Результатом данной конструкции будет значение типа Тип для указанного типа. Звучит туманно, не правда ли? Давайте рассмотрим применение данной конструкции и всё сразу станет на свои места. Пусть нам требуется отобрать все записи справочника Города , у которых составной реквизит ОтличительныйПризнак имеет значение типа СТРОКА : Теперь давайте отберём все записи, у которых значения реквизита ОтличительныйПризнак являются ссылками на элементы справочника Цвета (таблица Справочник.Цвета ): ОтступлениеКак вы помните, некоторые элементы справочника Города не имеют реквизита ОтличительныйПризнак . Функция ТИПЗНАЧЕНИЯ для таких элементов выдаёт NULL . Как можно сделать отбор таких элементов в запросе? Для этого предусмотрен специальный логический оператор ЕСТЬ NULL (не путать с функцией ЕСТЬNULL , которую мы рассмотрим ниже). Вы читаете ознакомительную версию урока, полноценные уроки находятся . Вот пример его использования: Отлично. Но вы заметили, что здесь нет элемента Сан-Паулу, тип значения реквизита ОтличительныйПризнак которого также выдавал NULL . Почему так произошло? А всё дело в том, что ситуация для групп (Россия, Индия, Бразилия), для которых заполнение реквизита ОтличительныйПризнак невозможно в принципе, так как его у них нет вовсе, отличается от ситуации для элемента Сан-Паулу, для которого заполнение реквизита возможно, но оно просто не заполнено и равно, как мы помним, специальному значению НЕОПРЕДЕЛЕНО . Чтобы отобрать все записи, у которых реквизит ОтличительныйПризнак присутствует, но не заполнен следует использовать другую конструкцию: Но сравнение с НЕОПРЕДЕЛЕНО для определения пустых (не заполненных) реквизитов будет работать только для составных типов. Кстати, у логического оператора ЕСТЬ NULL форма отрицания выглядит следующим образом: Логический оператор ССЫЛКАК примеру, давайте выберем из справочника Города только те записи, у которых значение составного реквизита ОтличительныйПризнак являются ссылкой на элемент справочника Вкусы : Как вы помните, эту же задачу мы могли бы решить используя ТИПЗНАЧЕНИЯ и ТИП : Функция ЕСТЬNULLФункция предназначена для замены значения NULL на другое значение. Мы помним, что значение NULL возвращается в том случае, если запрашиваемый реквизит (поле, свойство) не существует. Как например, реквизит ОтличительныйПризнак для групп справочника Города : Функция ЕСТЬNULL поможет нам вывести другое значение в том случае, если это значение равно NULL . Вы читаете ознакомительную версию урока, полноценные уроки находятся . Пусть в данном случае это будет строка "Такого реквизита нет!": Получается, что если первый параметр функции ЕСТЬNULL не равен NULL , то возвращается он. Если же он равен NULL, то возвращается второй параметр. Функция ВЫРАЗИТЬЭта функция предназначена только для полей , имеющих составной тип . Отличным примером такого поля является свойство ОтличительныйПризнак у элементов справочника Города . Как мы помним, составные поля могут быть одного из нескольких типов, указанных в конфигураторе. Для поля ОтличительныйПризнак такими допустимыми типами являются СТРОКА , Справочник.Цвета и Справочник.Вкусы . Иногда возникает необходимость привести значения составного поля к какому-либо определенному типу. Давайте приведём все значения поля ОтличительныйПризнак к типу Справочник.Цвета: В результате, все значения элементов, которые имели тип Справочник.Цвета, остались заполненными и оказались приведенными к указанному типу. Все значения других типов (СТРОКА , Справочник.Вкусы ) теперь стали равны NULL . В этом состоит особенность приведения типа при помощи функции ВЫРАЗИТЬ . Приводить тип можно или к примитивному типу (БУЛЕВО , ЧИСЛО , СТРОКА , ДАТА ) или к ссылочному типу. Вы читаете ознакомительную версию урока, полноценные уроки находятся . Но тип, к которому делается приведение, обязательно должен входить в список типов для данного составного поля, иначе система выдаст ошибку. Пройдите тестНачать тест 1. Выберите наиболее верное утверждение 2. Реквизиты, способные принимать значения одного из нескольких типов называются 3. Для определения типа значения реквизита подойдёт функция 4. Незаполненные реквизиты составного типа имеют значение Язык запросов 1С — одно из основных отличий между версиями 7.7 и 8. Одним из важнейших пунктов в изучении 1С-программирования является язык запросов. В 1С 8.3 запросы — самый мощный и эффективный инструмент получения данных. Язык запросов позволяет в удобном виде получать информацию из базы данных. Сам синтаксис очень сильно напоминает классический T-SQL, за исключением того, что в 1С с помощью языка запросов можно только получать данные, используя конструкцию Выбрать(select). Язык поддерживает и более сложные конструкции, например, (запрос в запросе). Запросы в 1С 8 можно составлять как на кириллице, так и на латинице. В статье я постараюсь рассказать про основные ключевые слова в языке запросов 1С:
А так же небольшие хитрости языка 1С, применяя которые вы сможете оптимально построить текст запроса. Для отладки запросов в системе 1С 8.2 предусмотрен специальный инструмент — консоль запросов. Увидеть описание и скачать его можно по ссылке — . Рассмотрим самые важные и интересные операторы языка запросов 1С. ВЫБРАТЬ (SELECT)В языке запросов 1С предприятия 8 любой запрос начинается с ключевого слова ВЫБРАТЬ . В языке 1С нет конструкций UPDATE, DELETE, CREATE TABLE, INSERT, эти манипуляции производятся в объектной технике. Предназначение его — только чтение данных. Например:
Запрос вернёт таблицу с наименованиями номенклатуры. Рядом с конструкцией ВЫБРАТЬ можно встретить ключевые слова ДЛЯ ИЗМЕНЕНИЯ , РАЗРЕШЕННЫЕ , РАЗЛИЧНЫЕ , ПЕРВЫЕ … РАЗРЕШЕННЫЕ — выбирает только записи из таблицы, на которые есть права у текущего пользователя. РАЗЛИЧНЫЕ — означает, что в результат не попадет дублирующих строк. ВЫБОР (CASE)Очень часто данная конструкция недооценивается программистами. Пример её использования:
Пример возвратит в поле «ВидНоменклатуры» текстовое значение — «Товар» или «Услуга». ГДЕ (WHERE)Конструкция языка запросов 1C, позволяющая наложить отбор на получаемые данные. Учтите, что от сервера система получает все данные, а только потом они отбираются по данному параметру.
В примере мы отбираем записи, у которых значение реквизита «Услуга» установлено в положение «Истина». В данном примере можно было бы обойтись и таким условием:
По сути, мы отбираем строки, у которых выражение после ключевого слова равно «Истина». В выражениях можно использовать прямые условия:
С помощью оператора «ЗНАЧЕНИЕ()» в условиях использовать обращение к предопределенным элементам и перечислениям в запросе 1С:
Значения времени могут указываться следующим образом:
Чаще всего условия указываются в виде параметров, передаваемых в запрос: Получите 267 видеоуроков по 1С бесплатно:
Условие можно наложить на тип реквизита, если он составного типа: Если необходимо ограничивать отбор из списка значений или массива, можно поступить следующим образом:
Условие может быть и сложное, состоящее из нескольких условий:
СГРУППИРОВАТЬ ПО (GROUP BY)Конструкция языка запросов 1С 8.2, используемая для группировки результата. Например:
Данный запрос просуммирует все поступления по сумме и количеству в разрезе номенклатуры. Помимо ключевого слова СУММА можно использовать другие агрегатные функции: КОЛИЧЕСТВО , КОЛИЧЕСТВО РАЗНЫХ , МАКСИМУМ , МИНИМУМ , СРЕДНЕЕ . ИМЕЮЩИЕ (HAVING)Конструкция, о которой часто забывают, но она очень важна и полезна. Она позволяет указать отбор в виде агрегатной функции, этого нельзя сделать в конструкции ГДЕ . Пример использования ИМЕЮЩИЕ в запросе 1С:
Так мы отберем количество товаров, которых поступило более 5 штук. ЗНАЧЕНИЕ()Например:
ТИП в запросеТип данных можно проверить следующим образом: с помощью функций ТИП() и ТИПЗНАЧЕНИЯ() или с помощью логического оператора ССЫЛКА. ВЫРАЗИТЬ()Оператор Выразить в запросах 1С служит для преобразования типов данных. Синтаксис: ВЫРАЗИТЬ(<Выражение> КАК <Тип значения>) С помощью него можно преобразовать строковые значения в дату или ссылочные в строковые данные и так далее. В практическом применении оператор Выразить() очень часто используется для преобразования полей неограниченной длины, потому что поля неограниченной длины нельзя отбирать, группировать и тд. Если такие поля не преобразовывать, Вы получите ошибку Нельзя сравнивать поля неограниченной длины и поля несовместимых типов .
ЕСТЬNULL (ISNULL)Достаточно полезная функция языка запросов 1С, которая проверяет значение в записи, и если оно равно NULL, то позволяет заменить на своё значение. Чаще всего используется при получении виртуальных таблиц остатков и оборотов, чтобы скрыть NULL и поставить понятный 0 (ноль).
Такая функция языка запросов 1С ЕСТЬNULL при отсутствии значения вернет ноль, что позволит избежать ошибки. СОЕДИНЕНИЕ (JOIN)Соединения бывают 4 типов: ЛЕВОЕ , ПРАВОЕ , ПОЛНОЕ, ВНУТРЕННЕЕ . ЛЕВОЕ и ПРАВОЕ СОЕДИНЕНИЕСоединения используются для связи двух таблиц по определенному условию. Особенность при ЛЕВОМ СОЕДИНЕНИИ в том, что мы берём первую указанную таблицу полностью и привязываем по условию вторую таблицу. Поля второй таблицы, которые не удалось привязать по условию, заполняются значением NULL . Пример левого соединения в запросе 1С: Вернет всю таблицу и заполнит поле «Банк» лишь в тех местах, где будет соблюдаться условие «Контрагенты.Наименование = Банки.Наименование». Если условие не соблюдается, в поле Банк будет установлено NULL . ПРАВОЕ СОЕДИНЕНИЕ в языке 1С 8.3 абсолютно аналогично ЛЕВОМУ соединению , за исключением одного отличия: в ПРАВОМ СОЕДИНЕНИИ «главная» таблица — вторая, а не первая. ПОЛНОЕ СОЕДИНЕНИЕПОЛНОЕ СОЕДИНЕНИЕ отличается от левого и правого тем, что выводит все записи из двух таблиц, соединяет лишь те, которые может соединить по условию. Например:
Язык запросов вернет обе таблицы полностью лишь по выполненному условию Соединить записи. В отличие от левого/правого соединения возможно появления NULL в двух полях. ВНУТРЕННЕЕ СОЕДИНЕНИЕВНУТРЕННЕЕ СОЕДИНЕНИЕ отличается от полного тем, что выводит только те записи, которые смогли соединить по заданному условию. Например:
Данный запрос вернет только строки, в которых у банка и контрагента будет одинаковое наименование. ЗаключениеЭто лишь небольшая часть синтаксиса из языка запросов 1С 8, в дальнейшем я попробую рассмотреть более подробно некоторые моменты, показать и многое другое! |
Популярное:
Оптимизация ОС: Программа для дефрагментации диска Установка piriform com defraggler download free |
Новое
- Что представляет собой распайка USB-разъема
- Восстановление MicroSD карты памяти
- Как посмотреть исходный код страницы в Google Chrome
- Способы установить приложения Android (установить APK)
- Карта базовых станций сотовых операторов или самостоятельный поиск их расположения и координат
- Радиосвязь Кодирование одним символом двух бит передаваемой информации
- Универсальная система автоматизированного проектирования, строительная конфигурация Работа с многолистовыми чертежами
- Программы для очистки компьютера от ненужных файлов Скачать программу для очистки компьютера виндовс 10
- Удержание предметов в Steam Как узнать на сколько дается бан трейда
- Прошивка планшетов: пошаговая инструкция