Предопределенное значение справочника в запросе

рубрики: Запросы | Дата: 28 Январь, 2016

Достаточно часто встречаются ситуации когда в запросе надо получить предопределенное значение какого-либо объекта (справочника, плана видов расчета и т.д.), либо значение перечисления, либо пустую ссылку. Такая возможность в языке запросов 1С8 реализована при помощи функции ЗНАЧЕНИЕ.

Сразу перейдем к примеру. У нас есть периодический регистр сведений ОценкиСайтов. Измерение Сайт имеет тип Справочник.Сайты, а ресурс Оценка представлен перечислением ОценкиСайта.

В свою очередь справочник Сайты содержит предопределенный элемент – Профессия1С.

Выберем из регистра все записи где в поле Сайт содержится наш предопределенный элемент.
Это можно сделать вот таким запросом:

Другой пример. Перечисление ОценкиСайта содержит следующие значения: Низкая, Средняя, Высокая.

Выберем все записи, где оценка Высокая:

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

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

В статье рассмотрен один из способов передачи значений предопределенных элементов в запрос.

Для передачи в запрос значений перечислений и значений предопределенных элементов ссылочного типа можно воспользоваться:

  1. параметрами запроса;
  2. функцией ЗНАЧЕНИЕ( ) .

Рассмотрим второй вариант, на мой взгляд, он более красивый.

При помощи функции ЗНАЧЕНИЕ можно обратиться к:

  • значениям перечислений;
  • значениям пустых ссылок;
  • предопределенным элементам:
  • справочников;
  • планов видов характеристик;
  • планов счетов;
  • планов видов расчетов;
  • значениям точек маршрута бизнес-процессов;
  • значениям системных перечислений ( ВидДвиженияНакопления , ВидСчета , ВидДвиженияБухгалтерии ).
  • Читайте также  Сеты разработчика в террарии

    В параметр ИмяЗначения передается строка, которая может иметь один из следующих видов:

    Перечисление. .ЗначениеПеречисления
    Перечисление. .ПустаяСсылка

    Справочник. .
    Справочник. .ПустаяСсылка

    ПланВидовХарактеристик. .
    ПланВидовХарактеристик. .ПустаяСсылка

    ПланСчетов. .
    ПланСчетов. .ПустаяСсылка

    ПланВидовРасчета. .
    ПланВидовРасчета. .ПустаяСсылка

    БизнесПроцесс. .ТочкаМаршрута.
    БизнесПроцесс. .ТочкаМаршрута.ПустаяСсылка

    Вот несколько примеров с фрагментами запросов, иллюстрирующие использование функции Значение:

    ГДЕ ТаблицаКИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)

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

    ГДЕ РеализацияТоваровУслугТовары.ЗаказКлиента <> ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка)

    ВЫБРАТЬ ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.НДФЛ) КАК СчетУчета

    ГДЕ Задание.ЗадачаИсточник = ЗНАЧЕНИЕ(Задача.ЗадачаИсполнителя.ПустаяСсылка)

    ВЫБОР КОГДА РасчетыСКлиентами.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
    РасчетыСКлиентами.Сумма
    ИНАЧЕ
    0
    КОНЕЦ

    Остались вопросы?
    Спросите в комментариях к статье.

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

    Как же работать с предопределенными значениями?

    В коде модулей обращение к таким элементам производится через менеджер объекта, например:

    Ссылка = ПланыСчетов . Хозрасчетный . Продукция ;

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

    [qu_note note_color=»#fdc8b2″]При этом имя вида объекта указывается в запросе в единственном числе.[/qu_note]

    Примеры использования ЗНАЧЕНИЕ():

    Ссылка справочника:

    Для проверки на пустое значение справочника:

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

    Для получения перечислений:

    Ссылка.Владелец КАК Контрагент

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

    ИЛИ Договор.ВидДоговора = ЗНАЧЕНИЕ (Перечисление.ВидыДоговоровКонтрагентов.ПустаяСсылка)

    План видов характеристик:

    Счет в плане счетов:

    ВЫБРАТЬ ЗНАЧЕНИЕ (ПланСчетов.Хозрасчетный.Товары) КАК СчетТоваров

    Системные перечисления:

    ВЫБРАТЬ
    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК Расход,
    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК Приход,
    ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Дебет) КАК Дебет,
    ЗНАЧЕНИЕ(ВидДвиженияБухгалтерии.Кредит) КАК Кредит,
    ЗНАЧЕНИЕ(ВидСчета.Активный) КАК Активный,
    ЗНАЧЕНИЕ(ВидСчета.Пассивный) КАК Пассивный,
    ЗНАЧЕНИЕ(ВидСчета.АктивноПассивный) КАК АктивноПассивный

    Аналог функции ЗначениеЗаполнено() в запросе

    • В явном виде функции на заполнение нет, но возможна проверка на несовпадение, например:
    Читайте также  Реклама приложений за голоса

    ГДЕ НЕ ОсновнойДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагента.ПустаяСсылка)

    • проверка на невхождение в список:

    ГДЕ НЕ ОсновнойДоговорКонтрагента В (ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагента.ПустаяСсылка), НЕОПРЕДЕЛЕНО, NULL,"")

    То есть, если значение не пустое или не входит в список пустых, его можно считать заполненным.

    Ошибки при использовании ЗНАЧЕНИЕ()

    При неверном синтаксисе параметра функции возникает ошибка «Неверные параметры».

    • указание во множественном числе (например «Справочники» вместо «Справочник»)
    • не верное имя предопределенного или его отсутствие

    Недопустима передача в ЗНАЧЕНИЕ параметра вот так:

    Выйдет ошибка «Ожидается параметр»:

    Функция как раз предназначена для ухода от параметров для предопределенных в метаданных ссылках.

    Не требуется указание параметра функции в кавычках: это вызовет ошибку «Ожидается имя»

    Реклама — двигатель всеобщей дебилизации населения.

    Ссылка на основную публикацию
    Adblock
    detector