ЗНАЧЕНИЕ() в запросе

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

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

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


Ссылка = Справочники.ВидыНоменклатуры.Услуга;

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


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

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

При этом имя вида объекта указывается в запросе в единственном числе.

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

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


ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.Услуга)


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


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


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


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


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


ВЫБРАТЬ ЗНАЧЕНИЕ(ПланВидовХарактеристик.НастройкиПользователей.ПустаяСсылка)


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


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


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


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


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

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

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


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

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


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

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

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

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

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


ЗНАЧЕНИЕ(&Параметр)


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

Рисунок 1

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

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

Рисунок 2