Как работать со связями в новом конструкторе запросов 1С 8.3 и почему они стали древовидными?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Переход разработчиков на платформу 1С:Предприятие 8.3 принес множество изменений в привычный инструментарий. Одним из наиболее обсуждаемых нововведений стало кардинальное изменение вкладки «Связи» в конструкторе запросов в режиме управляемого приложения. Многие специалисты, привыкшие к классическому «табличному» виду сопоставления полей в толстом клиенте, испытывают дискомфорт при первом знакомстве с новым древовидным интерфейсом тонкого клиента.

В этой статье мы подробно разберем, почему фирма «1С» приняла решение отказаться от старого плоского табличного представления связей в пользу иерархического дерева, проанализируем техническую подоплеку этих изменений, рассмотрим неочевидные лайфхаки для ускорения работы и изучим альтернативные инструменты, созданные сообществом.

Техническая подоплека: почему конструктор стал «другим»

Начиная с версии платформы 1С:Предприятие 8.3.5, разработчики представили полностью обновленный конструктор запросов, ориентированный на работу в управляемом режиме (в тонком, толстом управляемом и веб-клиентах). Главная причина изменения интерфейса кроется в архитектуре ядра платформы.

Новый конструктор функционирует на базе программного объекта встроенного языка СхемаЗапроса. Этот объект позволяет описывать, разбирать и модифицировать запрос как строго структурированное дерево объектов. Поскольку сам язык SQL и СУБД оперируют иерархическими деревьями при выполнении операций соединения (JOIN), разработчики платформы привели визуальный интерфейс связей к его естественному, математически правильному виду.

Старый конструктор запросов в обычном приложении выполнял сложную трансляцию плоской таблицы связей в древовидный синтаксис запроса «на лету». При сборке и разборке сложных текстов запросов этот механизм нередко давал сбои, путал порядок соединений или выдавал неинформативные ошибки компиляции.

Ключевые отличия нового интерфейса связей

При работе в управляемом интерфейсе конструктора запросов на вкладке «Связи» программист сталкивается со следующими изменениями:

  1. Использование Drag-and-Drop для создания соединений: Чтобы связать две таблицы, теперь необходимо физически перетащить одну таблицу на другую в списке источников. Это действие создает ветку дерева, определяющую порядок соединения.
  2. Отказ от флажков выбора типа связи: В классическом конструкторе левое, правое, полное или внутреннее соединение настраивалось с помощью галочек «Все» под первой или второй таблицей. В новом интерфейсе тип соединения явно выбирается из выпадающего списка.
  3. Отсутствие переключателя «Произвольное условие»: Раньше для простых связей использовалось сопоставление колонок, а для сложных условий разработчик ставил галочку «Произвольное условие» и писал код вручную. Теперь абсолютно все связи по умолчанию создаются как выражения, открываемые в полноценном редакторе выражений.

Плюсы и минусы древовидного представления связей

Рассмотрим детально обе стороны медали нового интерфейса, чтобы понять его реальную ценность в ежедневной практике.

Главный плюс дерева — корректная обработка сложных соединений.

В реальной разработке нередко возникают ситуации, когда необходимо связать три и более таблицы с нетривиальной логикой вложенности. Классический табличный конструктор запросов в таких случаях пасовал.

Проанализируем пример со вложенным левым соединением трех таблиц:


ИЗ
    Таб1 КАК Таб1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб2 КАК Таб2
            ЛЕВОЕ СОЕДИНЕНИЕ Таб3 КАК Таб3
            ПО (Таб2.Поле = Таб3.Поле)
        ПО (Таб1.Поле = Таб2.Поле)

И сравним его со вторым примером, где условия соединений накладываются последовательно:


ИЗ
    Таб1 КАК Таб1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб2 КАК Таб2
        ПО (Таб1.Поле = Таб2.Поле)
        ЛЕВОЕ СОЕДИНЕНИЕ Таб3 КАК Таб3
        ПО (Таб1.Поле = Таб3.Поле И Таб2.Поле = Таб3.Поле)

Плоскими табличными связями старого конструктора описать первый пример было физически невозможно. Он всегда пытался интерпретировать связи последовательно, как во втором примере. Новый древовидный конструктор позволяет четко перетаскиванием мыши определить, что Таб3 соединяется именно с Таб2 внутри общего контекста соединения с Таб1.

Главный минус дерева — снижение эргономики при простых связях.

По статистике, более 90% запросов в повседневной работе разработчика — это простые соединения двух таблиц по одному ключевому полю (например, связь документа со справочником по ссылке). В старом конструкторе настройка такой связи занимала секунды: достаточно было выбрать два поля из списков. В древовидном интерфейсе приходится совершать больше действий мышью, открывать модальные окна редактора выражений и вручную перетаскивать поля, что замедляет работу.

Как ускорить работу в новом конструкторе: практические лайфхаки

Для того чтобы минимизировать дискомфорт и вернуть былую скорость разработки, рекомендуем использовать следующие приемы при настройке связей в управляемом конструкторе:

Альтернативные решения и инструменты от сообщества

Если стандартный управляемый конструктор запросов платформы кажется вам слишком неудобным для оперативной отладки и анализа данных, вы можете воспользоваться альтернативными путями, которые выработало сообщество 1С.

1. Использование «Инструментов разработчика» (ИР) от Tormozit

Это один из самых мощных и популярных наборов инструментов для разработчиков 1С. Входящая в его состав «Консоль запросов» обладает собственным уникальным конструктором запросов. Хотя он также базируется на представлении связей в виде дерева (что гарантирует отсутствие синтаксических ошибок сборки запроса), его эргономика продумана гораздо лучше стандартного решения платформы:

2. Запуск в режиме обычного приложения

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

/RunModeOrdinaryApplication

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

Резюме

Древовидный конструктор запросов в 1С 8.3 — это неизбежный шаг развития платформы, продиктованный необходимостью корректной работы со сложными SQL-структурами и объектом СхемаЗапроса. Понимание логики построения дерева связей, использование горячих клавиш, двойного клика для редактирования условий и применение профессиональных альтернативных инструментов, таких как «Инструменты разработчика», позволят вам сохранить высокую скорость написания запросов и сделать вашу работу более эффективной.

← На главную