Страницы: 1
RSS
Вложенные таблицы
 

Добрый день, коллеги! Который день бьюсь с вложенными таблицами в запросе и никак не могу в этом разобраться. Про вложенные запросы знаю, но с таблицами дело совсем не идет. И возможно ли сделать Вложенную таблицу в табличной части обработк? Хэлп, SOS, в общем – очень нужна ваша помощь.

 
Цитата
Карина написал:
Добрый день, коллеги! Который день бьюсь с вложенными таблицами в запросе и никак не могу в этом разобраться. Про вложенные запросы знаю, но с таблицами дело совсем не идет. И возможно ли сделать Вложенную таблицу в табличной части обработк? Хэлп, SOS, в общем – очень нужна ваша помощь.  

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

 

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

В общем – открываете конструктор запросов, выбираете таблицу «Оказание услуг», раскрываете таблицу, где вы увидите (должны увидеть) в списке предпоследнюю строку – таблицу часть «Услуги». Вот ее и выбирайте. Там откроется с правой стороны еще одно поле со списком и далее работаете уже с ним.

 
Цитата
Карина написал:
Добрый день, коллеги! Который день бьюсь с вложенными таблицами в запросе и никак не могу в этом разобраться. Про вложенные запросы знаю, но с таблицами дело совсем не идет. И возможно ли сделать Вложенную таблицу в табличной части обработк? Хэлп, SOS, в общем – очень нужна ваша помощь.  

Карина, добрый вечер! Постаралась объяснить примерный ход мыслей. Вы разобрались как действовать?

Возможно вам еще пригодится, как именно использовать вложенную таблицу в запросе: табличная часть, по сути, идет как отдельное поле, которое называется «Услуги» и тип которого будет «РезультатЗапроса». Оставьте три поля вложенной таблицы и добавьте некоторые поля из шапки документа. Затем нажмите ОК и вы увидите как будет выглядеть ваш запрос. В нем после поля «Услуги» идет точка, а за ней в скобках перечислены выбранные поля. Выполните  запрос.

Уже вот после этого могут возникнуть такие моменты. Либо все выбранные поля табличной части дока будут перечислены через запятую в поле «Услуги», либо нет. Не во всех консолях запросов бывает такое отображение, иногда может просто идти надпись «ТаблицаЗначений».

 
Цитата
Андрей написал:
Цитата
Карина написал:
Добрый день, коллеги! Который день бьюсь с вложенными таблицами в запросе и никак не могу в этом разобраться. Про вложенные запросы знаю, но с таблицами дело совсем не идет. И возможно ли сделать Вложенную таблицу в табличной части обработк? Хэлп, SOS, в общем – очень нужна ваша помощь.  
  Вложенный запрос – это запрос, который вложен в другой запрос и я бы не советовал их использовать без особой надобности. Лучше заменяйте их как раз временными таблицами или соединениями таблиц. Отличается вложенный запрос от временной таблицы тем, что эту таблицу можно использовать многократно в пакетном запросе. Вы также можете ее передавать через менеджер временных таблиц в другие запросы, а вложенный запрос нужно вызывать каждый раз, когда он потребуется и в каждом случае явно указывать текст запроса, что затрудняет читаемость синтаксических конструкций.

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

Вообще в действительности не так сложно обратится при обработке запроса к вложенной таблице. Вы просто обращаетесь к выборке по названию вашей таблицы, и получаете переменную с типом «РезультатЗапроса». А потом обрабатываете ее как обычный результат запроса: хотите, получайте выборку, хотите, делайте выгрузку.

 

Если поля какой-либо таблицы имеют ссылочный тип (хранят ссылки на объекты другой таблицы), разработчик может в тексте запроса ссылаться на них через «.», при этом количество уровней вложенности таких ссылок система не ограничивает. Имейте в виду, что система поддерживает обращения к вложенным табличным частям и как к отдельным таблицам, и как к целым полям одной таблицы.

Например, при обращении к документу Реализация товаров (содержащему табличную часть Товары с составом отгружаемых товаров), мы можем считать табличную часть как отдельную таблицу. Но также мы можем считать заголовочную запись документа, в которой значением поля Товары будут все записи вложенной таблицы, подчиненные этому объекту (документу).

 
Цитата
Larisa написал:
Если поля какой-либо таблицы имеют ссылочный тип (хранят ссылки на объекты другой таблицы), разработчик может в тексте запроса ссылаться на них через «.», при этом количество уровней вложенности таких ссылок система не ограничивает. Имейте в виду, что система поддерживает обращения к вложенным табличным частям и как к отдельным таблицам, и как к целым полям одной таблицы.   Например, при обращении к документу Реализация товаров (содержащему табличную часть Товары с составом отгружаемых товаров), мы можем считать табличную часть как отдельную таблицу. Но также мы можем считать заголовочную запись документа, в которой значением поля Товары будут все записи вложенной таблицы, подчиненные этому объекту (документу).  

может тоже еще будет интересно. При объединении таблиц, содержащих вложенные таблицы (например, Документ с табличной частью) бывает полезно ключевое слово ПУСТАЯТАБЛИЦА, когда, например, в одном из документов нет табличной части.

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

Страницы: 1