При разработке в среде 1С программисты часто сталкиваются с тем, что конструктор запросов по умолчанию генерирует текст на русском языке: ВЫБРАТЬ, ИЗ, ГДЕ. Для тех, кто привык к классическому SQL или планирует в дальнейшем работать с другими СУБД, использование английского синтаксиса (SELECT, FROM, WHERE) может быть более комфортным. В этой статье мы разберем, как заставить конструктор запросов 1С «думать» и писать на английском языке, а также проанализируем внутренние механизмы платформы, отвечающие за трансляцию кода.
Самый простой и эффективный способ изменить язык ключевых слов в конструкторе запросов — это запуск Конфигуратора или сеанса «1С:Предприятие» с определенными ключами локализации. Платформа 1С является мультиязычной, и язык конструкторов напрямую зависит от языка интерфейса текущего сеанса.
Рассмотрим пошагово, как это сделать:
/L en (для английского интерфейса) или /VL en (для установки конкретной локализации интерфейса).Теперь, когда мы откроем конструктор запросов, все управляющие слова будут отображаться на английском языке. Важно понимать, что 1С хранит текст запроса в метаданных не как жестко заданную строку, а в виде структуры, которая автоматически транслируется на язык текущего интерфейса. Если мы напишем запрос на русском, закроем его, а затем откроем в «английском» Конфигураторе, платформа сама заменит ВЫБРАТЬ на SELECT.
Если мы хотим, чтобы вся разработка в конкретной конфигурации тяготела к английскому синтаксису, проанализируем настройки самого объекта Конфигурация. В корне дерева метаданных есть важное свойство, влияющее на поведение конструкторов кода.
Разберем этот процесс:
Внимание: изменение этого параметра влияет на всю конфигурацию целиком. Если над проектом работает команда, это решение должно быть согласовано, так как оно изменит стандарт автоподстановки и генерации процедур/функций для всех разработчиков.
Часто программисту нужно видеть английский текст запроса только «здесь и сейчас» (например, для отладки или переноса в SQL Management Studio), не меняя настроек всей системы. В этом случае мы рекомендуем использовать специализированные инструменты.
Один из самых мощных инструментов — Инструменты разработчика. В расширенном конструкторе запросов этой подсистемы реализована возможность переключения языка «на лету»:
Также существуют современные консоли запросов для управляемых форм, которые содержат кнопку «Транслировать». Это позволяет быстро получить код в формате:
SELECT
Inventory.Ref AS Product,
Inventory.Code AS Code
FROM
Catalog.Inventory AS Inventory
WHERE
Inventory.DeletionMark = FALSE
Если нашей целью является не столько работа в визуальном конструкторе, сколько ручное написание кода на английском, мы можем настроить подсказки. Платформа 1С позволяет использовать оба языка одновременно в редакторе текста.
Выясним, как активировать подсказки на английском:
SEL..., система предложит SELECT в списке подсказок, несмотря на то, что интерфейс может быть русским.Для тех, кто стремится к современным стандартам разработки, стоит рассмотреть переход на 1C:EDT. Это среда разработки, основанная на Eclipse, которая изначально проектировалась с учетом международных стандартов.
Проанализируем преимущества EDT в контексте нашей задачи:
Для быстрого привыкания к английскому варианту, сопоставим основные операторы, которые мы наиболее часто используем в конструкторе:
ВЫБРАТЬ — SELECTИЗ — FROMГДЕ — WHEREСГРУППИРОВАТЬ ПО — GROUP BYИМЕЮЩИЕ — HAVINGУПОРЯДОЧИТЬ ПО — ORDER BYКАК — ASЛЕВОЕ СОЕДИНЕНИЕ — LEFT JOINВНУТРЕННЕЕ СОЕДИНЕНИЕ — INNER JOINЗНАЧЕНИЕ(...) — VALUE(...)Рассмотрим пример сложного условия в английской нотации:
SELECT
Sales.Period,
Sales.Amount
FROM
AccumulationRegister.Sales AS Sales
WHERE
Sales.Amount > 1000
AND Sales.Customer IN (SELECT Ref FROM Catalog.Customers WHERE Description LIKE "А%")
Разберем важный технический аспект: почему при открытии запроса в конструкторе он часто снова становится русским? Это происходит из-за механизма десериализации. Текст запроса в модуле — это всего лишь текстовое представление метаданных запроса. Когда вы запускаете конструктор, он парсит этот текст, создает в памяти объектную модель (дерево запроса), а при нажатии кнопки «ОК» заново генерирует текст, основываясь на настройках текущего сеанса Конфигуратора.
Следовательно, чтобы сохранить английский текст, необходимо постоянно работать в сеансе с ключом /L en. В противном случае, после любого редактирования через стандартный конструктор в русском интерфейсе, ключевые слова вернутся к кириллице.
Проанализировав ситуацию, мы рекомендуем следующий подход для тех, кто хочет привыкнуть к SQL-синтаксису:
SELECT.Таким образом, настройка английского синтаксиса в 1С — это не только вопрос привычки, но и способ сделать ваш код более универсальным и понятным в контексте мировых стандартов разработки баз данных.