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

Временные таблицы в динамическом списке. Можно ли использовать? — Форум.Инфостарт

Простой пример – отбор всех проводок, где есть заданный контрагент.

Сначала запрос 1 (работает на ура)

ВЫБРАТЬ
УправленческийСубконто.Регистратор КАК Регистратор,
УправленческийСубконто.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ тДвижения
ИЗ
РегистрБухгалтерии.Управленческий.Субконто КАК УправленческийСубконто
ГДЕ
УправленческийСубконто.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Контрагент)
И УправленческийСубконто.Значение = &Контрагент

ИНДЕКСИРОВАТЬ ПО
Регистратор,
НомерСтроки
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
РегистрБухгалтерииУправленческийДвиженияССубконто.Период,
РегистрБухгалтерииУправленческийДвиженияССубконто.Регистратор,
РегистрБухгалтерииУправленческийДвиженияССубконто.НомерСтроки,
РегистрБухгалтерииУправленческийДвиженияССубконто.Активность,
РегистрБухгалтерииУправленческийДвиженияССубконто.СчетДт,
РегистрБухгалтерииУправленческийДвиженияССубконто.СубконтоДт1,
РегистрБухгалтерииУправленческийДвиженияССубконто.ВидСубконтоДт1,
РегистрБухгалтерииУправленческийДвиженияССубконто.СубконтоДт2,
РегистрБухгалтерииУправленческийДвиженияССубконто.ВидСубконтоДт2,
РегистрБухгалтерииУправленческийДвиженияССубконто.СчетКт,
РегистрБухгалтерииУправленческийДвиженияССубконто.СубконтоКт1,
РегистрБухгалтерииУправленческийДвиженияССубконто.ВидСубконтоКт1,
РегистрБухгалтерииУправленческийДвиженияССубконто.СубконтоКт2,
РегистрБухгалтерииУправленческийДвиженияССубконто.ВидСубконтоКт2,
РегистрБухгалтерииУправленческийДвиженияССубконто.Сумма,
РегистрБухгалтерииУправленческийДвиженияССубконто.ЗачетАванса,
РегистрБухгалтерииУправленческийДвиженияССубконто.МоментВремени
ИЗ
РегистрБухгалтерии.Управленческий.ДвиженияССубконто(
,
,
(Регистратор, НомерСтроки) В
(ВЫБРАТЬ
тДвижения.Регистратор,
тДвижения.НомерСтроки
ИЗ
тДвижения),
,
) КАК РегистрБухгалтерииУправленческийДвиженияССубконто

Показать

Делаем управляемую форму, добавляем динамический список, ставим произвольный запрос, загоняем запрос 1. основная таблица – РегистрБухгалетрии, устанавливаем параметры все как положено. Не работает! Говорит поле «НомерСтроки» не найдено!

Меняем запрос, отказываемся от временной таблицы делаем через вложенные (Запрос 2)

ВЫБРАТЬ
РегистрБухгалтерииУправленческийДвиженияССубконто.Период,
РегистрБухгалтерииУправленческийДвиженияССубконто.Регистратор,
РегистрБухгалтерииУправленческийДвиженияССубконто.НомерСтроки,
РегистрБухгалтерииУправленческийДвиженияССубконто.Активность,
РегистрБухгалтерииУправленческийДвиженияССубконто.СчетДт,
РегистрБухгалтерииУправленческийДвиженияССубконто.СубконтоДт1,
РегистрБухгалтерииУправленческийДвиженияССубконто.ВидСубконтоДт1,
РегистрБухгалтерииУправленческийДвиженияССубконто.СубконтоДт2,
РегистрБухгалтерииУправленческийДвиженияССубконто.ВидСубконтоДт2,
РегистрБухгалтерииУправленческийДвиженияССубконто.СчетКт,
РегистрБухгалтерииУправленческийДвиженияССубконто.СубконтоКт1,
РегистрБухгалтерииУправленческийДвиженияССубконто.ВидСубконтоКт1,
РегистрБухгалтерииУправленческийДвиженияССубконто.СубконтоКт2,
РегистрБухгалтерииУправленческийДвиженияССубконто.ВидСубконтоКт2,
РегистрБухгалтерииУправленческийДвиженияССубконто.Сумма,
РегистрБухгалтерииУправленческийДвиженияССубконто.ЗачетАванса,
РегистрБухгалтерииУправленческийДвиженияССубконто.МоментВремени
ИЗ
РегистрБухгалтерии.Управленческий.ДвиженияССубконто(
,
,
(Регистратор, НомерСтроки) В
(ВЫБРАТЬ
УправленческийСубконто.Регистратор КАК Регистратор,
УправленческийСубконто.НомерСтроки КАК НомерСтроки
ИЗ
РегистрБухгалтерии.Управленческий.Субконто КАК УправленческийСубконто
ГДЕ
УправленческийСубконто.Вид = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Контрагент)
И УправленческийСубконто.Значение = &Контрагент),
,
) КАК РегистрБухгалтерииУправленческийДвиженияССубконто

Показать

Работает без проблем.

Вывод – в запросах динамических списках нельзя использовать временные таблицы. Это так или я чего-то не правильно делаю (чего-то забываю указать)?

Уж больно не охота отказываться от временных таблиц.

Источник

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

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

2. Необходимо выбрать один из трех режимов работы динамического списка:

  • Динамическое считывание данных включено (рекомендуется). Используются запросы, выбирающие записи в количестве приблизительно соответствующем количеству видимых строк в таблице;
  • Динамическое считывание данных выключено, задана не виртуальная основная таблица или одна из следующих таблиц: СрезПервых, СрезПоследних, ЗадачиПоИсполнителю, КритерииОтбора, ДвижениеСубконто. Используются запросы, выбирающие по 1000 записей в буфер на сервере, по мере необходимости данные передаются на клиент.  Менее эффективно, чем динамическое считывание;
  • Динамическое считывание данных выключено, основная таблица не задана. Запрос выполняется «как есть». В буфере накапливаются данные, начиная с 1000 записей. Чем ближе к концу списка, тем больше записей.  Можно использовать только для заведомо маленьких выборок.

3. При разработке динамического списка следует учитывать что запрос, который фактически будет сформирован к СУБД, зависит от предопределенных настроек отборов, порядка и группировки СКД. В частности это означает, что необходимо рассмотреть индексирование полей:

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

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

См. также: Несоответствие индексов и условий запроса, Ограничения при использовании динамических списков

4. Настоятельно не рекомендуется использовать конструкции, «утяжеляющие» запрос:

  • конструкции РАЗЛИЧНЫЕ и СГРУППИРОВАТЬ ПО;
  • конструкции ВЫБОР в предложении ГДЕ или в условиях соединения;
  • упорядочивание по полю, полученному при помощи конструкции ВЫБОР, в том числе и пользовательское.

См. также: Общие требования по разработке оптимальных запросов

5.1 Соединяться в запросе следует только с небольшим количеством реальных таблиц (в оптимальном варианте в динамическом списке – только одна таблица, и она назначена основной).

Не рекомендуется выполнять соединения:

  • с большим количеством реальных таблиц. Ориентироваться стоит на количество не более 4 таблиц;
  • с вложенными запросами;
  • с виртуальными таблицами. 

См. также: Запросы, выполняющие соединение с вложенными запросами или виртуальными таблицами

5.2. Соединение с виртуальными таблицами допустимо в отдельных случаях, если запрос и архитектура данных удовлетворяют ряду условий:

  • допустимо соединение с виртуальными таблицами СрезПоследних (СрезПервых), если регистр сведений содержит
    заведомо небольшое количество записей. Например, получение текущего курса валют по данным регистра сведений КурсыВалют;
  • при обращении к виртуальной таблице будут использованы хранимые итоги регистра сведений (см. Разрешение итогов для периодических регистров сведений);
  • запрос к виртуальной таблице Остатки будет преобразован платформой в простое чтение хранимой таблицы итогов без группировок (см. Эффективное обращение к виртуальной таблице «Остатки»).

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

5.3.1. Временные таблицы в динамических списках рекомендуется использовать только тогда, когда они содержат заведомо небольшое количество записей. Иначе их использование неэффективно, т.к. значения временных таблиц в динамическом списке НЕ кешируются, а формируется при каждом считывании данных для заполнения списка.

5.3.2. В частности, если не удается переделать запрос динамического списка, используя виртуальные таблицы с ограничениями (см. п. 5.2), или вообще отказавшись от их использования, то вместо соединения с ними следует использовать соединения с временными таблицами.

5.3.3. Если последний запрос динамического списка выбирает данные только из ранее созданной временной таблицы, то это уже не динамический список и следует перепроектировать его запрос и, скорее всего, метаданные, используемые запросом.

Читайте также:  Можно ли использовать на газу керамическая кастрюля

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

5.5. При работе со списком под неполными правами, в которых настроены ограничения доступа к данным (RLS)  к таблицам, участвующим в запросе*, также автоматически присоединяются условия ограничения доступа к данным, которые замедляют работу списка. Именно в этом режиме работы следует проверять скорость работы динамических списков.

* примечание: к тем таблицам, к которым предусмотрен RLS в конфигурации.

6. Предусмотреть оптимизацию при работе с полями составного типа

  • При использовании в соединениях, отборах, упорядочивании и других конструкциях составного поля, необходимо чтобы состав типов данного поля определялся только ссылочными типами. Подробнее см.: Ограничения на использование реквизитов составного типа;
  • Если известно заранее, какого типа должно быть получено поле составного типа, то его необходимо выражать.

Например:

ВЫРАЗИТЬ(ДанныеДокумента.ДокументОснование КАК Документ.АктВыполненныхРабот)

См. также: Разыменование ссылочных полей составного типа в языке запросов

7. Запрос динамического списка рекомендуется менять «на лету» на более оптимальный, если это возможно.

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

См. также: Программное переопределение текстов запросов динамических списков

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

8.1. Отказаться от части возможностей динамического списка.

Например:

  • От вывода не столь значимой информации, получение которой приводит к усложнению запроса;
  • От реализованных сервисных возможностей по группировке списка.

8.2. Осуществлять вывод данных не в динамический список, а в таблицу или дерево значений.

При этом появятся возможности оптимизации недоступные для динамических списков, такие как использование привилегированного режима и т.п..

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

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

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

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

Кроме того, для корректной работы динамического списка требуется явно ограничить выполнение отбора, сортировки и группировки по вспомогательным колонкам с помощью методов динамического списка УстановитьОграниченияИспользованияВГруппировке, УстановитьОграниченияИспользованияВПорядке и УстановитьОграниченияИспользованияВОтборе.

Источник

1С временные таблицы в динамическом списке — Вэб-шпаргалка для интернет предпринимателей!

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

Сегодня мы выкладываем обзор новых возможностей текущего релиза 8.3.7 и будущей версии – 8.3.8.

Будет интересно всем:

  • Для эстетов – овальные кнопки и куча настроек элементов формы
  • Для разработчиков – более простая разработка форм, тестирование форм под разные устройства + оптимизация
  • Для пользователей – новое отображение форм, отказ от сколлинга в списках, комбинирование форм без конфигуратора
  • Для любителей old school – проведение (отмена проведения) и ввод на основании возможен из контекстного меню, как в 8.0 ????

Кстати, комбинирование форм без конфигуратора – это достаточно интересно и означает, что сейчас пользователь даже без программиста сможет “сделать мини-АРМ”.

С этого механизма пользователь может в одной форме объединить данных из разных источников – например, список новых заказов и список назначенных задач из CRM, чтобы держать ситуацию под контролем.

Обзор новых возможностей 8.3.7

В видео рассмотрим:

  • Конфигурацию рабочего места в пользовательском режиме
  • Перенос части логики работы формы с сервера на клиент
  • Подготовьтесь к внешнему изменению форм при переходе на 8.3.7
  • Механизмы тестирования работы форм под разное разрешение и положение экрана
  • И многое другое

Новые возможности 8.3.8

В видео рассмотрим:

  • Снова меняется внешний вид форм – чтобы пользователи не скучали ????
  • Разработчики возвращают хорошо забытое старое – использование контекстного меню
  • Отказ от вертикального сколлинга в списках
  • Поддержку клавиатурных гиков
  • И многое другое

P.S. “Несколько вопросов с Мисты…”

Смотрим несколько “свежих” веток с пятницы:

Курс «Профессиональная разработка интерфейсов и форм в 1С:Предприятии 8.3»

  1. Если Вы не хотите тратить несколько дней на пустое ожидание на форумах…
  2. Если Вы хотите не ковыряться в “намеках” и ненормативной лексике, а хотите видеть сразу пошаговое решение
  3. Если Вы хотите твердо знать, как быстро и с минимальными правками дорабатывать интерфейс типовых решений

Поддержка – 45 дней. Объем курса – 30 учебных часов.

Не откладывайте свое обучение!

56 комментариев для “ Новые возможности 8.3.7 и 8.3.8. Всё важное – в двух новых видео ”

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

Читайте также:  Можно ли использовать чужой ip адрес

Аннотации — возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций — упрощение создания тестовых модулей для Java-кода.

Добрый день! Про новый инструмент “Аннтотации” мне ничего не известно. Так же хочу обратить внимание, что видео содержит обзор изменений платформы только в части интерфейсов и форм. Таким образом видео содержит не все изменения, которые появились в платформе.

Сергей, большое спасибо за обзор!

Очень познавательно. Спасибо!

Большое спасибо! Очень наглядно.

Про 8.3.7 уже знал, а про 8.3.8 – узнал только здесь. На счёт “Проблема в использовании пакетного запроса в динамическом списке” можно процитировать еще одного классика: “Шура, Вы просто готовить их не умеете”. Хотя правда Ваша – у меня тоже не получается…Облом. Спасибо за видео.

У меня и в более ранних версиях (8.3.6, 8.3.7) получалось выводить в динамических списках поля ссылочных типов кажется без ограничений каких-либо. Вы показываете что это новая возможность 8.3.8? Или я что-то не так понял?

Да, для ссылочных типов было можно, но для полей составного типа данные, таких как Регистратор, подчиненные поля вывести не получалось. Теперь можно, хотя это бывает нужно крайне редко.

Первое видео посмотрел. Второе не вводится (((

Михаил, попробуйте просмотреть видео из другого браузера.

Спасибо за обзор.
Все круто!

Спасибо за видео, отличный обзор, документацию бывает читать невозможно)

Спасибо! Коротко и ясно.

Обзор отличный. Огромное спасибо .

Ну а 1С как всегда “все новое это хорошо забыто старое”
контекстное меню, скоро привязки простые и сложные от обычного интерфейса вернут -:))))

Ждем курс по СКД, данный у нас с коллегами уже в коллекции есть.

Обзор возможностей 8.3.7 на Яндекс.браузере не загружается.

Попробуйте открыть страницу в другом браузере.

Буду краток: [censored]

Света, давно ли Вы сменили пол?

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

Нелицеприятные высказывания в адрес ряда сайтов удалил.

К автору у меня просьба – выражаться корректнее.

Спасибо за обзор!

Спасибо за отличный обзор! Подобные видеоматериалы гораздо удобнее чем ворох текста с “Записок из зазеркалья”.

Изменения все очень нужные и давно ожидаемые. Управляемые формы становятся всё более управляемыми и гибкими, это очень радует. Наконец до разработчиков дошло что обновлять полнотекстовый поиск – это неудобно, а бегунок в динамическом списке – недостоверно. Еще бы добавили возможность выбора цветовой схемы в качестве замены желтой и вернули возможность менять ширину панели навигации, как было в обычном управляемом интерфейсе…. но не так принципиально, должна же быть у 1С своя “визитная карточка” для пользователей ))

Хм… форум мисты в конце хорошо охарактеризован. Была бы там качественная модерация можно было бы им пользоваться, а так лучше даже не заходить.

Ожидаю когда Курсы-По-1С объединит вокруг себя больше народа и появится площадка для общения и обмена опытом. Инфостарта мало, да и направленность другая, хотя тоже сейчас в обучение расширяться стали.

>Наконец до разработчиков дошло что обновлять полнотекстовый поиск — это неудобно

Это значит что обновление поиска в фоновом режиме система не будет делать?

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

Спасибо за обзор!

Видос не смотрел, но авансом одобряю ????

Увы, посмотреть обзор не удалось. Долго-долго мигает loading… и всё ????

Просмотр в другом браузере должен помочь.

Пробовал в 3-х разных. Результат похожий (зависает, только немного по разному). Может, просто было слишком много одновременных обращений?

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

Ссылки на видео в flv.
Да простят меня авторы.

Видео не просто так выложено на сайте.

Мы проводим анализ – количество просмотров, на каком моменте видео слушатели “срываются”, сравниваем эту статистику с другими видео.

Поэтому просмотр должен идти именно через сайт.

Добрый день. Это апдейт к видео материалам курса по формам и интерфейсам правильно?
Если да нужно ли загрузить заново видео материалы курса, если они были скачаны ранее или это отдельные блоки видео?
Скачивал примерно 10-15 дней назад.

Эти видео есть в курсе, Вам ничего дополнительно скачивать не требуется.

Ожидал больше изменений от разработчиков 1С. Спасибо за обзор.

Спасибо за обзор. Познавательно) По элементам форм интересно)

Странная не любовь к пакетным запросам ????

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

А скачать его можно?

Скачать можно, но авторы “немного” против.

Наконец-то, дождался – круглые кнопки! Теперь заживем! Подумаешь, 113 ошибок в платформе – форма важнее содержания!

Вспомнил Чебуратора, который похоже до сих пор убежден, что “снеговик изучать рано” ????

Фарит, если мне память не изменяет, там по классике звучало так: “восьмёрка пока сыровата…” (с)

Вполне может быть, давно было ????

Спасибо за обзор, весьма познавательно!

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

Добрый день! Думаю, что нет. Кроме того, на текущий момент не получилось заставить заработать даже простейший пакетный запрос.

Читайте также:  Можно ли использовать кирпичи после пожара

ВЫБРАТЬ
Номенклатура.Код как Код,
Номенклатура.Наименование как Наименование,
Номенклатура.Ссылка как Ссылка
Поместить ВТ
ИЗ
Справочник.Номенклатура КАК Номенклатура
;
ВЫБРАТЬ
ВТ.Код,
ВТ.Наименование,
ВТ.Ссылка
ИЗ
ВТ как ВТ

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

В справочнике “Номенклатура” длинна кода = 0

С длиной кода все в порядке. Проблема в использовании пакетного запроса в динамическом списке.

Пакетные запросы с созданием временных требуют создания таблиц в базе данных temp и очищении их при отсутствии в них необходимости. В случае активной работы с динамическом списком хотя бы нескольких пользователей, которые часто пролистывают в них информацию, это было бы неоправданной нагрузкой на SQL-сервер.

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

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

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

Лучше уж пускай программист использует вложенные запросы с пониманием того что он делает и какая нагрузка на систему возникает.

Добрый день, Владимир! Как я понял, это Ваше виденье вопроса «Почему не следует использовать пакетные запросы в динамических списках?» и я согласен с вашими доводами. Но факт остается фактом – такая возможность присутствует в платформе. Без сомнения, для хранения временных таблиц будет использоваться TempDB, что повысит нагрузку на систему. Остается только догадываться о механике работы пакетных запросов в динамических списках и о том, как вообще заставить этот механизм хоть как-то работать :).

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

Существует справочник Товары и документ Накладная, который регистрирует поступление товаров. В каждой накладной указывается, от какого поставщика получены товары.

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

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

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

Оба упомянутых поля уже есть в запросе, поэтому динамический список добавляет только раздел УПОРЯДОЧИТЬ ПО . В результате запрос получается таким:

Теперь посмотрим на запрос. В запросе указано левое соединение основной таблицы справочника Товары с табличной частью документа Накладная . Это значит, что для каждой строки из основной таблицы будет выведено ее объединение с каждой строкой из табличной части, удовлетворяющее условию ПО .

В системе существует два товара и проведено две накладных, которыми оформлено поступление этих товаров.

Таким образом, в процессе выполнения этого запроса, для товара Молоко будет найдена одна подходящая запись:

А для товара Хлеб будет найдена тоже одна подходящая запись:

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

Проконсультироваться
со специалистом 1С

Не помню уже с какого релиза в запросах стало можно использовать временные таблицы. Для этого используется объект «Менеджер временных таблиц». Фактически менеджер временных таблиц описывает пространство имен временных таблиц и отвечает за их создание и уничтожение в базе данных.

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

Перепишем запрос для использования временных таблиц. Во временные таблицы поместим сгруппированную табличную часть документа и список товаров для фильтра виртуальных таблиц:
Код 1C v 8.х

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

Также допускается использование инструкции Уничтожить в этом случае временная таблица уничтожается, в противном случае временные таблицы уничтожаются вместе с объектом менеджер временных таблиц.

В основном нашем запросе я использовал названия временных таблиц как указание на источник получения данных (им обязательно надо назначать синоним, что мы и видим в тексте). Использовать временные таблицы как источник можно не единожды, что при умелом их применении позволит и сократить текст запроса (улучшиться читабельность сложных запросов) и увеличить скорость (при использовании данных временной таблицы в нескольких местах запроса).
Автор: Павел Чистов

Источник