Кроме преобразования строк и числа функция применяется для выделения одного типа в составных реквизитах.
Зачем использовать ВЫРАЗИТЬ для полей составного типа?
Поля составного типа – реквизиты, в которых допустимо указание значения различных типов.
В случае, когда такое поле не заполнено в нём хранится НЕОПРЕДЕЛЕНО, с которым не совсем удобно работать на выходе:
- необходимо постоянно проверять на заполнено
- если используется обращение к реквизитам через точку, при обращении возможно появление ошибки.
Пример №1:
Есть реквизит составного типа: Число+Перечисление
Если выполнить ВЫРАЗИТЬ(Реквизит как ЧИСЛО(15,0)) тогда на выходе получится NULL, что ничем не лучше.
Если вызвать ВЫРАЗИТЬ(Реквизит КАК Перечисление.ВидыЗаявок), в результате получится значение Перечисления.ВидыЗаявок.Пустая(), что вполне удобно.
Вышестоящий пример я привел для ситуации, когда удобство не так заметно.
Пример №2:
Реквизит составного типа: Справочник.ФизическиеЛица+Справочник.Сотрудники
Если вы сделаете отбор в запросе:
ГДЕ
Сотрудник ССЫЛКА Справочник.Сотрудник
У вас на выходе получатся только записи, где реквизит Сотрудник типа сотрудники, но если это поле пустое, там будет Неопределено.
В случае использования конструкции
ВЫРАЗИТЬ (Сотрудник как Справочник.Сотрудники) как ПолеСотрудник
В данном поле всегда будет значение ссылки и допустимо обращение к нему: в момент обработки результата запроса “ПолеСотрудник.Наименование”, ПолеСотрудник.Пустая(), не вызывая ошибки.
Дополнительное преимущество такого использования:
В случае если составное поле имеет тип Справочник.Ссылка или Документ.Ссылка (любой справочник и любой документ, совместно) при выполнении запроса 1С присоединит все связанные таблицы:
- В лучшем случае это замедлит выполнение запроса.
- В больших конфигурациях типа УПП или ERP, такие запросы могут вызвать ошибку превышения количества таблиц в запросе – он попросту не выполнится.
Если же вы знаете, что там будет и ограничите значения функцией ВЫРАЗИТЬ, такого не происходит – и вы помогаете оптимизатору запросов, а для файловой версии это может оказаться критичным.
В типовых конфигурациях реквизит “ДокументОснование”,”ДокументОприходования”, “Партия” или “Сделка”, торговых документов чаще всего нуждается в таком преобразовании, т.к. составные поля используются редко: чаще разносят по различным реквизитам, которые видимы в зависимости от вида операции/ситуации.
Другие статьи про работу с ВЫРАЗИТЬ:
Реклама — самая интересная и самая трудная форма современной литературы.