Как установить связи между таблицами в консоли запросов на управляемых формах

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

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

Основной способ создания связи: Метод Drag-and-Drop

В современном платформенном конструкторе запросов 1С основным способом сопоставления полей двух таблиц является простое перетаскивание. Проанализируем этот процесс по шагам:

  1. Откроем конструктор запроса в консоли.
  2. На вкладке Таблицы и поля выберем необходимые таблицы из списка доступных и перенесем их в рабочую область «Таблицы».
  3. Для того чтобы установить связь между двумя таблицами (например, между справочником Номенклатура и регистром сведений ЦеныНоменклатуры), выберем поле в первой таблице (например, Ссылка).
  4. Зажмем левую кнопку мыши на этом поле и перетащим его на соответствующее поле во второй таблице (например, на измерение Номенклатура).

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

Ручная настройка и уточнение условий соединения

Иногда автоматическое создание связи через перетаскивание не дает нужного результата, или нам требуется настроить сложное условие (например, связь по нескольким полям или использование произвольного выражения). Разберем, как работать с вкладкой Связи напрямую.

Рассмотрим ситуацию, когда нам нужно установить Левое соединение. По умолчанию конструктор часто создает Внутреннее соединение. Если во второй таблице не окажется соответствующих данных, то записи из первой таблицы просто пропадут из результата. Чтобы этого избежать, выполним следующие действия:

  1. Перейдем на вкладку Связи.
  2. Найдем созданную связь в списке.
  3. Обратим внимание на флажки в колонках Все напротив каждой таблицы. Если мы хотим, чтобы в результат попали все данные из левой таблицы, установим соответствующий флажок.
  4. В поле Условие связи мы можем изменить оператор (например, вместо «Равно» поставить «Больше» или «Не равно»), а также добавить дополнительные условия, используя логическое «И».

Использование произвольных выражений в связях

Бывают случаи, когда связи по конкретным физическим полям недостаточно. Например, нам нужно связать данные с учетом приведения типов или вычислений. Выясним, как это сделать в конструкторе:

В нижней части окна настройки связи есть область для редактирования текста условия. Мы можем написать туда произвольный код на языке запросов 1С. Рассмотрим пример, где поле одной таблицы нужно связать с результатом функции НАЧАЛОПЕРИОДА от поля другой таблицы:


Таблица1.Дата Соединение Таблица2 ПО НАЧАЛОПЕРИОДА(Таблица1.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(Таблица2.Дата, ДЕНЬ)

Важно: При использовании произвольных выражений визуальный конструктор (перетаскивание) может перестать отображать связь графически, но она останется рабочей в тексте запроса.

Типовая консоль с ИТС vs Расширенные инструменты разработчика

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

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

Особенности работы с временными таблицами в консоли запросов

Одной из главных сложностей при работе со связями является отладка пакетных запросов. Посмотрим, как это выглядит в коде 1С, который генерирует консоль:


ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ_Товары
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ЭтоГруппа = ЛОЖЬ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Товары.Ссылка,
    Цены.Цена
ИЗ
    ВТ_Товары КАК ВТ_Товары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК Цены
        ПО ВТ_Товары.Ссылка = Цены.Номенклатура

В стандартной консоли ИТС для управляемых форм просмотр содержимого ВТ_Товары между шагами запроса может быть затруднен. Если вам нужно проверить промежуточный результат, рекомендуется использовать специализированные консоли с функцией «Менеджер временных таблиц».

Почему связь может не работать?

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

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

← На главную