При работе с запросами в системе 1С:Предприятие 8 важную роль играет читаемость кода и структура результирующей выборки. Псевдонимы полей (алиасы) позволяют задать колонкам результата понятные имена, что особенно критично при обращении к полям через точку или использовании агрегатных функций. В этой статье мы подробно разберем, как автоматизировать процесс назначения псевдонимов в конфигураторе, выясним, почему конструктор может вести себя по-разному, и изучим тонкости синтаксиса языка запросов.
Одной из скрытых причин, по которой Конструктор запросов может не предлагать псевдонимы автоматически или работать «по-старинке», является режим совместимости конфигурации. Разберем эту ситуацию подробнее.
Если ваша конфигурация запущена на современной платформе (например, 8.3.24), но в свойствах самого объекта «Конфигурация» установлен режим совместимости с версией 8.2.16 или ниже, механизмы конструктора будут ограничены логикой старых версий. В современных версиях 1С (начиная с 8.3) платформа старается автоматически подставлять псевдонимы, чтобы избежать конфликтов имен, особенно при разыменовании ссылок (например, при выборе поля Номенклатура.Артикул). Если вы столкнулись с тем, что конструктор «молчит», в первую очередь проверьте этот параметр, хотя менять его только ради конструктора не стоит — это может повлиять на работу всей базы.
Часто возникает ситуация, когда запрос уже написан вручную или скопирован из другой обработки, и в нем отсутствуют псевдонимы. Чтобы не прописывать ключевое слово КАК для каждого поля вручную, мы можем воспользоваться встроенным механизмом переформирования текста:
После этого действия платформа автоматически перепишет текст запроса в соответствии с актуальными правилами форматирования, добавив псевдонимы ко всем полям, где это необходимо. Например, конструкция СправочникНоменклатура.Артикул превратится в СправочникНоменклатура.Артикул КАК Артикул.
Если мы создаем запрос «с нуля», управление именами полей удобнее всего осуществлять на специализированной закладке конструктора. Рассмотрим порядок действий:
НоменклатураАртикул).Важный нюанс: имена полей и их псевдонимы в 1С не могут содержать символов, отличных от букв и цифр (за исключением подчеркивания). Поэтому при автоматической генерации платформа объединяет имена связанных таблиц и полей, убирая разделители.
Многие разработчики привыкли, что объявление псевдонима требует обязательного использования ключевого слова КАК. Однако, проанализируем синтаксис глубже. В языке запросов 1С, как и в стандарте SQL, ключевое слово КАК (или AS в английской версии) является необязательным для псевдонимов полей выборки.
Посмотрим на пример допустимой конструкции:
ВЫБРАТЬ
Остатки.РезервироватьПоМереПоступления > 0 ЕстьРезервироватьПоМереПоступления,
Номенклатура.Наименование ИмяТовара
ИЗ
РегистрНакопления.Запасы КАК Остатки
В данном примере псевдонимы ЕстьРезервироватьПоМереПоступления и ИмяТовара будут успешно приняты платформой, несмотря на отсутствие слова КАК. Однако, проанализируем ситуацию с точки зрения культуры кода: использование пробела вместо явного указания оператора делает текст запроса менее читаемым, так как псевдоним может «слиться» с выражением. Мы рекомендуем всегда использовать ключевое слово КАК.
При работе с псевдонимами важно учитывать ряд технических ограничений платформы:
Объект.Владелец.Родитель.Наименование) автоматический псевдоним может быть обрезан, что иногда приводит к ошибке «Дублирование имен полей».ПОМЕСТИТЬ псевдонимы становятся именами колонок реальной таблицы в СУБД. Здесь явное назначение псевдонимов обязательно, иначе вам будет сложно обращаться к полям этой таблицы в последующих пакетах запроса.СУММА(Количество) или операторов ВЫБОР назначение псевдонима является строго рекомендуемым. Без него платформа присвоит полю техническое имя (например, Поле1), что сделает невозможным удобное обращение к результату через Выборка.ИмяПоля.Разберем, как псевдонимы влияют на отчеты. Если ваш запрос является источником данных для СКД, то псевдоним из текста запроса становится именем поля набора данных. Это технический идентификатор, который используется в настройках связей, вычисляемых полей и группировок. При этом «Заголовок» (то, что видит пользователь) можно настроить отдельно в конструкторе СКД, но база для этого поля всегда берется из вашего алиаса в запросе.
Таким образом, правильное использование псевдонимов — это не просто косметическое улучшение кода, а необходимый элемент стабильной разработки, обеспечивающий уникальность имен в выборке и корректную работу всех механизмов платформы 1С.