1с как получить предопределенное значение справочника в запросе
Для работы с типами в запроса для сравнения и отборов существует две функции: ТИП() и ТИПЗНАЧЕНИЯ(), а также конструкция ССЫЛКА для ссылочных типов. В общем случае тип значения применяется для работы с составными полями, так как в других случаях тип значения известен заранее или не меняется.
Примеры проверки типа в запросах:
Получить тип в полях выборки:
ВЫБРАТЬ ТИП(Строка), ТИП(Справочник.Контрагенты)
Получить совпадение типа в выборке
Выбрать ТИПЗНАЧЕНИЯ(Ссылка) = ТИП(Справочник.Контрагенты)
Отбор по типу значения:
ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты ГДЕ ТИПЗНАЧЕНИЯ(ОсновнойМенеджер) = ТИП(Справочник.ФизическиеЛица)
Использование конструкции ССЫЛКА:
ВЫБРАТЬ ИНН ИЗ Справочник.Контрагенты ГДЕ ОсновнойМенеджер ССЫЛКА Справочник.ФизическиеЛица
Последние две конструкции идентичны по результату исполнения, но последняя применима только к ссылочным типам, что не всегда так, но более компактна.
Допустимо использование данных конструкций и в качестве условия для соединения таблиц.
На тип значения можно проверять не только поля из выборки запроса, но и параметры:
ВЫБРАТЬ * из Справочник.Контрагенты ГДЕ ТИПЗНАЧЕНИЯ(&Параметр) = ТИП(Справочник.Контрагенты)
Параметром функции ТИПЗНАЧЕНИЯ могут выступать:
СТРОКА, ЧИСЛО, ДАТА, а также все ссылочные типы.
Чтобы проверить на несколько значений применяется условие ИЛИ или множество В()
ВЫБРАТЬ Ссылка ИЗ Справочник.Пользователи ГДЕ ФизЛицо ССЫЛКА Справочник.ФизическиеЛица ИЛИ Физлицо ССЫЛКА Справочник.Пользователи
ВЫБРАТЬ Ссылка ИЗ Справочник.Пользователи ГДЕ ТИПЗНАЧЕНИЯ(Физлицо) В (ТИП(Справочник.ФизическиеЛица),ТИП(Справочник.Пользователи))
При сравнении ссылочных типов пустые ссылки, также дают совпадение, то есть для проверки на заполненность они применимы только как вспомогательные функции
Выбрать * ИЗ Справочник.Пользователи ГДЕ ТИПЗНАЧЕНИЯ(Физлицо) <> ТИП(Неопределено) И ТИПЗНАЧЕНИЯ(Физлицо) <> ТИП(NULL) И НЕ Физлицо = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)
Единственные настоящие поэты нашего времени служат в рекламных агентствах.
— Теннеси Уильямс
Текст запроса может содержать предопределенные данные конфигурации, такие как:
- значения перечислений;
- предопределенные данные:
- справочников;
- планов видов характеристик;
- планов счетов;
- планов видов расчетов;
- пустые ссылки;
- значения точек маршрута бизнес-процессов.
Также текст запроса может содержать значения системных перечислений, которые могут быть присвоены полям в таблицах базы данных: ВидДвиженияНакопления, ВидСчета и ВидДвиженияБухгалтерии.
Обращение в запросах к предопределенным данным конфигурации и значениям системных перечислений осуществляется с помощью литерала функционального типа:
ЗНАЧЕНИЕ()
Для системных перечислений имеет вид:
.
Допустимые имена системных перечислений приведены выше, с перечнем допустимых для каждого из них значений можно ознакомиться в его описании.
Для предопределенных данных конфигурации имеет вид:
..
может быть:
- Справочник (Catalog);
- ПланВидовХарактеристик (ChartOfCharacteristicTypes);
- ПланСчетов (ChartOfAccounts);
- ПланВидовРасчета (ChartOfCalculationTypes);
- Перечисление (Enum).
В качестве указывается имя объекта метаданных, как оно задано в конфигураторе.
Для определенных в конфигурации перечислений указывается как имя соответствующего объекта метаданных типа ЗначаниеПеречисления. Для всех остальных типов предопределенных значений указывается как имя предопределенного элемента данных, как оно указано в конфигураторе, или ПустаяСсылка (EmptyRef) для указания пустой ссылки.
Для точек маршрутов бизнес-процессов имеет вид:
БизнесПроцесс..Точка..
Ниже приведены несколько фрагментов запросов, поясняющих использование предопределенных данных в запросах:
Код 1C v 8.х
еще пример:
Код 1C v 8.х
Похожие FAQ
Еще в этой же категории
Значения NULL ( ЕСТЬ NULL и ЕСТЬNULL()) 48
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL значения появляются в 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Нарастающий итог в запросе 23
Необходимо использовать левое соединение таблицы с самой собой. ВЫБРАТЬ Обороты.Период, Обороты.Номенклатура, Обороты.Количество ПОМЕСТИТЬ ВТдвижения ИЗ РегистрНакопления.Обороты КАК Обороты ; //////////////////////////////////////////////// Полезные сведения о языке запросов 1С 8.х 22
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для ко Оператор ПОДОБНО 19
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если з Посмотреть все в категории Запросы
При работе в режиме управляемого приложения, иногда на клиентской стороне приходится получать результат "элементарного выражения", вычислить которое можно только на сервере. В "классической" реализации это может приводить к обилию сдвоенных процедур/функций (одна на клиенте - вызывает другую на сервере). В статье рассмотрены 4 варианта решения этой задачи.
Допустим на форме нужно в зависимости от интерактивного изменения флажка устанавливать значение какого-либо реквизита, это можно сделаеть так:
Строго говоря, оба эти варианта "неправильные", т.е. работать они конечно же будут, но неэффентивно, так же неэффективен следующий вариант (есть в УТ11):
Здесь производится вывов стандартной серверной функции, реализованной в общем модуле УТ11 РаботаСФомулами . ВычислитьФормулу . Её реализация:
Функция ВычислитьФормулу ( ТекстРасчета ) Экспорт
Возврат Вычислить ( ТекстРасчета );
КонецФункции
Функция платформы, которая позволяет сделать тоже самое, но с одной стороны без привязки к конфигурации, с другой кэшируя полученное значение:
Последний вариант с одной стороны позволяет не прибегать к увеличению кода, за счет вызова на клиенте, с другой кэширует полученное значение на уровне платформы. Есть у него и незначительный недостаток, который, впрочем, возникает при "некрасивом стиле" программирования, например таком:
Такое значение нельзя вычислить используя Вариант 4, но правильнее в этом случае использовать предопределенный элемент справочника, тогда Вариант 4 вполне применим, например так:
Исходя из данной таблицы, наиболее выигрышными являются варианты 1 и 4, причем Вариант 1 лучше использовать когда нужно установить несколько значений формы, возможно со сложными вычислениями (например, Запросами), Вариант 4 - в простейших случаях, к которым можно сводить конструкции типа НайтиПоКоду, НайтиПоНаименованию, через предопределенные значения.
Вариант 2 - вообще желательно не употеблять ввиду его недостатков и возможность замещения другими, более эффективными вариантами.
Вариант 3 - можно рекомендовать только как временное решение (если база не опубликована в веб), до добавления предопределенного значения.
ЗЫ: Особое спасибо Magisterу, Поручику и Evil Beaver, за то что наставили на "путь истины", критикой в комментариях (изначально статья имела совсем другое содержание и выводы).
Функция ЗНАЧЕНИЕ - Позволяет использовать прямо в текстах запроса предопределенные в конфигураторе данные. (т.е. позволяет избавиться от необходимости передавать их параметрами к запросу). Использование предопределенных данных конфигурации
Например:
можно было бы написать в запросе:
Код 1C v 8.х
а потом передать в запрос параметр:
Код 1C v 8.х
А при помощи ЗНАЧЕНИЕ будет так:
Код 1C v 8.х
Примеры использования:
Код 1C v 8.х
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 6
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯче 1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ; Посмотреть все результаты поиска похожих
Еще в этой же категории
Значения NULL ( ЕСТЬ NULL и ЕСТЬNULL()) 48
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL значения появляются в 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Нарастающий итог в запросе 23
Необходимо использовать левое соединение таблицы с самой собой. ВЫБРАТЬ Обороты.Период, Обороты.Номенклатура, Обороты.Количество ПОМЕСТИТЬ ВТдвижения ИЗ РегистрНакопления.Обороты КАК Обороты ; //////////////////////////////////////////////// Полезные сведения о языке запросов 1С 8.х 22
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для ко Оператор ПОДОБНО 19
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если з Посмотреть все в категории Запросы
Текст запроса может содержать предопределенные данные конфигурации, такие как:
- значения перечислений;
- предопределенные данные:
- справочников;
- планов видов характеристик;
- планов счетов;
- планов видов расчетов;
- пустые ссылки;
- значения точек маршрута бизнес-процессов.
Также текст запроса может содержать значения системных перечислений, которые могут быть присвоены полям в таблицах базы данных: ВидДвиженияНакопления, ВидСчета и ВидДвиженияБухгалтерии.
Обращение в запросах к предопределенным данным конфигурации и значениям системных перечислений осуществляется с помощью литерала функционального типа:
ЗНАЧЕНИЕ()
Для системных перечислений имеет вид:
.
Допустимые имена системных перечислений приведены выше, с перечнем допустимых для каждого из них значений можно ознакомиться в его описании.
Для предопределенных данных конфигурации имеет вид:
..
может быть:
- Справочник (Catalog);
- ПланВидовХарактеристик (ChartOfCharacteristicTypes);
- ПланСчетов (ChartOfAccounts);
- ПланВидовРасчета (ChartOfCalculationTypes);
- Перечисление (Enum).
В качестве указывается имя объекта метаданных, как оно задано в конфигураторе.
Для определенных в конфигурации перечислений указывается как имя соответствующего объекта метаданных типа ЗначаниеПеречисления. Для всех остальных типов предопределенных значений указывается как имя предопределенного элемента данных, как оно указано в конфигураторе, или ПустаяСсылка (EmptyRef) для указания пустой ссылки.
Для точек маршрутов бизнес-процессов имеет вид:
БизнесПроцесс..Точка..
Ниже приведены несколько фрагментов запросов, поясняющих использование предопределенных данных в запросах:
Код 1C v 8.х
еще пример:
Код 1C v 8.х
Похожие FAQ
Еще в этой же категории
Значения NULL ( ЕСТЬ NULL и ЕСТЬNULL()) 48
NULL – отсутствующие значения. Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено. NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа. NULL значения появляются в 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Нарастающий итог в запросе 23
Необходимо использовать левое соединение таблицы с самой собой. ВЫБРАТЬ Обороты.Период, Обороты.Номенклатура, Обороты.Количество ПОМЕСТИТЬ ВТдвижения ИЗ РегистрНакопления.Обороты КАК Обороты ; //////////////////////////////////////////////// Полезные сведения о языке запросов 1С 8.х 22
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на некоторых моментах, которые для ко Оператор ПОДОБНО 19
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если з Посмотреть все в категории Запросы
Читайте также: