При разработке запросов в 1С часто возникает необходимость скомбинировать несколько полей в одну строку. Например, вам нужно вывести «Регистрационный номер» вместе с «Дополнительным номером контрагента», разделив их символом «/», но только в том случае, если второй номер заполнен. Рассмотрим, как правильно реализовать такую логику, используя консоль запросов и избегая типичных ошибок.
Сложение строк в запросе 1С выполняется с помощью оператора +. Однако важно помнить: этот оператор работает только со строковыми типами данных. Если вы пытаетесь сложить строку с числом или ссылкой, платформа выдаст ошибку несовместимости типов. Чтобы этого избежать, необходимо приводить данные к строковому типу.
Для выполнения логических условий в запросе используйте оператор ВЫБОР. Это позволяет динамически формировать результат в зависимости от того, заполнено поле или нет.
Рассмотрим пример правильного написания кода для объединения значений:
ВЫБРАТЬ
ВЫБОР
КОГДА СокрЛП(Справочник.ДопНомер) = ""
ТОГДА Справочник.ОсновнойНомер
ИНАЧЕ Справочник.ОсновнойНомер + "/" + Справочник.ДопНомер
КОНЕЦ КАК ИтоговоеПредставление
ИЗ
Справочник.Контрагенты КАК Справочник
Одной из самых частых ошибок является попытка проверки поля через выражение Поле = NULL. В языке запросов 1С NULL не является значением, которое можно сравнивать оператором равенства. Для работы с отсутствующими данными используйте конструкцию ЕСТЬ NULL.
Если же поле является строковым, то его «пустое» состояние — это пустая строка "". Для очистки от лишних пробелов перед проверкой используйте функцию СокрЛП().
Если поле, которое вы хотите добавить в строку, имеет тип «Число» или другой сложный тип, платформа не позволит просто использовать +. В таких случаях необходимо преобразовать значение в строку. Хотя в современных версиях платформы можно использовать Строка(), часто надежнее применить ВЫРАЗИТЬ(Поле КАК СТРОКА(Длина)).
Посмотрим на пример с приведением типов:
ВЫБРАТЬ
ВЫБОР
КОГДА Валюты.Реквизит = 0
ТОГДА Валюты.Наименование
ИНАЧЕ Валюты.Наименование + ВЫРАЗИТЬ(Валюты.Реквизит КАК СТРОКА(10))
КОНЕЦ КАК Результат
ИЗ
Справочник.Валюты КАК Валюты
NULL, его нужно проверять на 0. Если строковый — на пустую строку "".СокрЛП(), чтобы избавиться от незначащих пробелов, которые могут помешать корректной проверке.КОГДА укажите условие проверки заполненности.ИНАЧЕ соедините нужные поля через оператор +. Если данные имеют разный тип, обязательно используйте ВЫРАЗИТЬ или встроенную функцию Строка().ЕСТЬ NULL с помощью функции ЕСТЬNULL(), чтобы избежать ошибок при расчетах.Используя эти методы, вы сможете гибко настраивать отображение данных в отчетах и выборках, делая их более читаемыми для пользователей и корректными для дальнейшей программной обработки.