Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 21:09

Правильное соединение 3 таблиц в запросе

Автор Zeed, 03 авг 2016, 11:06

0 Пользователей и 1 гость просматривают эту тему.

Zeed

Допустим, нужно соединить некоторую таблицу (от 5 до 20 записей) с регистром, а из регистра нужно соединение с регистратором.
Очевидно, что оптимальней сначала соединить таблицу с регистром, потом уже регистр с регистратором.
Как в таком случае нужно написать запрос, т.е. в каком порядке компоновщик таблиц соединяет таблицы?
Мой запрос:

...
ИЗ
ТабличнаяЧастьТовары КАК ТабличнаяЧастьТовары
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ГрафикОтгрузкиТоваров КАК ГрафикОтгрузкиТоваров
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаВнутреннееПотребление КАК Заказ
      ПО ГрафикОтгрузкиТоваров.Регистратор = ЗаказНаВнутреннееПотребление.Ссылка
   ПО ТабличнаяЧастьТовары.Номенклатура = ГрафикОтгрузкиТоваров.Номенклатура


Или правильней поменять местами, сначала то что внутри регистр - документ, а потом табличная часть - регистр?

SGIRG

...
ИЗ
ТабличнаяЧастьТовары КАК ТабличнаяЧастьТовары
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ГрафикОтгрузкиТоваров КАК ГрафикОтгрузкиТоваров
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаВнутреннееПотребление КАК Заказ
      ПО ГрафикОтгрузкиТоваров.Регистратор = ЗаказНаВнутреннееПотребление.Ссылка
   ПО ТабличнаяЧастьТовары.Номенклатура = ГрафикОтгрузкиТоваров.Номенклатура


А зачем Вам второе соединение??
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаВнутреннееПотребление КАК Заказ
      ПО ГрафикОтгрузкиТоваров.Регистратор = ЗаказНаВнутреннееПотребление.Ссылка

здесь вы по соединяете ссылку регистратора с ссылкой документа для какой цели? если вам необходимы конкретные реквизиты из документа, тогда в выборке пишите:
ГрафикОтгрузкиТоваров.Регистратор.ИмяВашегоРеквизита

таким образом запрос должен получиться следующим:
...
ИЗ
ТабличнаяЧастьТовары КАК ТабличнаяЧастьТовары
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ГрафикОтгрузкиТоваров КАК ГрафикОтгрузкиТоваров
   ПО ТабличнаяЧастьТовары.Номенклатура = ГрафикОтгрузкиТоваров.Номенклатура

Zeed

Цитата: SGIRG от 03 авг 2016, 11:20

ГрафикОтгрузкиТоваров.Регистратор.ИмяВашегоРеквизита


Учитель сказал, обращение через точку не есть хорошо

SGIRG

Цитата: Zeed от 03 авг 2016, 13:37
Учитель сказал, обращение через точку не есть хорошо
:) учитель зло. Если его не устраивает возможное отсутствие типизации, то можешь сделать следующим образом:
ВЫРАЗИТЬ(ГрафикОтгрузкиТоваров.Регистратор КАК Документ.ЗаказНаВнутреннееПотребление).ИмяВашегоРеквизита

vitasw

Цитата: SGIRG от 03 авг 2016, 17:15учитель зло

Не надо быть таким категоричным. В подавляющем большинстве случаев обращение через точку = зло, потому что неявно накладывается левое соединение и тянуться все реквизиты объекта. Причем это справедливо как для запроса так и для обычного кода.

Летящий в даль

Почему ваш учитель вам не сказал что к реальной таблице регистра обращаться зло :fdbsdfbsd:
1) берем оборотный регистр накопления в параметрах указываем периодичность запись
2) соединяем внутр связи по номеру строки и в том и другом  и по регистратору и ссылке соответсвенно, только вот зачем вам внутреннее ??? это уже к увам)))

vitasw

Цитата: Летящий в даль от 04 авг 2016, 10:23Почему ваш учитель вам не сказал что к реальной таблице регистра обращаться зло
Неа, не стоит прям так сразу категорично заявлять. Существует достаточно немалое число ситуаций, когда обращение к физической таблице дает прирост производительности. Надо только с умом это применять.

Zeed

Цитата: Летящий в даль от 04 авг 2016, 10:23
Почему ваш учитель вам не сказал что к реальной таблице регистра обращаться зло :fdbsdfbsd:
1) берем оборотный регистр накопления в параметрах указываем периодичность запись
2) соединяем внутр связи по номеру строки и в том и другом  и по регистратору и ссылке соответсвенно, только вот зачем вам внутреннее ??? это уже к увам)))

Потому что учитель - книга
Добавлено: 05 авг 2016, 09:21


Цитата: vitasw от 04 авг 2016, 10:39
Цитата: Летящий в даль от 04 авг 2016, 10:23Почему ваш учитель вам не сказал что к реальной таблице регистра обращаться зло
Неа, не стоит прям так сразу категорично заявлять. Существует достаточно немалое число ситуаций, когда обращение к физической таблице дает прирост производительности. Надо только с умом это применять.
Можете описать в каких конкретно случаях это так?

vitasw

Например выбрать все движения в середине месяца из остаточного регистра накопления.

Zeed

Цитата: Летящий в даль от 04 авг 2016, 10:23
Почему ваш учитель вам не сказал что к реальной таблице регистра обращаться зло :fdbsdfbsd:
1) берем оборотный регистр накопления в параметрах указываем периодичность запись

Можно поподробней как это сделать?

Теги: Запрос 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск