В теле цикла по вложенной группировке Склад объект НашЗапрос позиционируется во временном наборе данных на записи, содержащие строки по каждому конкретному товару на конкретном складе, поэтому в теле этого цикла мы можем использовать данные о количестве товара на складе.

1с запрос таблица значений как параметр
Многие начинающие программисты не знают, как поместить таблицу значений в запрос 1С 8. Очень часто это порождает распространенную ошибку — запрос в цикле. То есть разработчик не умеет включать таблицу значений в запрос и поэтому начинает обходить её в цикле и делать на каждую итерацию свой запрос. Рассмотрим на простом примере, как это сделать.
В качестве примера размещения таблицы значения в запросе 1С 8.3 возьмем простую ситуацию — есть таблица значений, в которой содержится список номенклатуры. Необходимо получить данные по остаткам на складах по каждой номенклатурной позиции.
Может быть две ситуации, как создана таблица значений, — программно и уже получена откуда-то (например, ТЧ документа). Если таблица создана программно, необходимо установить тип колонки, сделать это несложно
Т.е. при добавление колонки необходимо вторым параметром указать типы данных с помощью конструктора объекта «ОписаниеТипов».
Перейдем к построению запроса. Таблицу значений можно передать в запрос простым &Параметром.
Обязательный нюанс — созданную таблицу необходимо поместить результат во временную таблицу, в противном случае система выдаст сообщение: «Ошибка при вызове метода контекста (Выполнить): Содержимое объекта данных может быть выбрано только во временную таблицу».
Таким образом, мы помещаем первый запрос во временную таблицу, а потом соединяем её с регистром остатков номенклатуры.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Таблица значений 1С | Блог 1С программиста
Параметры в запросах в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Промокоды на Займер на скидки
Не очень часто, но приходится делать запросы к таблице значений в 1С. При этом нужно учитывать несколько нюансов.
Во-первых, в таблице значений, являющейся источником данных для запроса, колонки должны быть типизированы.
Подробнее вопрос типизации колонок рассмотрим в следующей статье, посвященной работе с таблицами значений.
Во-вторых, таблица значений передается в запрос как обычный параметр. Имена выбираемых полей соответствуют именам колонок таблицы. Но запрос придется писать вручную, конструктор запроса в данном случае не поможет.
В-третьих, результат выполнения запроса к таблице значений нельзя использовать сразу. Его нужно поместить во временную таблицу, сделать запрос к ней и только потом делать выборку из результата. Это можно реализовать двумя способами:
И в запросах, которые выполняются при проведении этого документа, используется достаточно большое количество временных таблиц.

Запрос и дерево значений
Результат выполнения запроса очень легко преобразовать в дерево значений, для этого нужно воспользоваться методом «Выгрузить» и указать параметр «ТипОбхода» отличным от того, что стоит по умолчанию, т.е. «ПоГруппировкам» или «ПоГруппировкамСИерархией».
Если на форме имеется реквизит «ДеревоЗначений» и связанный с ним визуальный элемент, то можно сделать примерно так:
Причем полного совпадения колонок и типов не требуется — лишние колонки будут просто отброшены, а колонки с различными типами будут заполнены пустыми значениями.
Работа с деревом значений в 1С
Дерево значений в таблицу значений и обратно
Преобразовать дерево значений в таблицу значений и наоборот достаточно просто, ведь дерево значений это та же таблица значений, но с дополнительной колонкой — «Родитель». У меня есть отдельная статья о том как преобразовать дерево значений в таблицу значений и обратно.
Стандартного отбора в дереве значений не предусмотрено. Так получилось потому, что непонятно как разрешать ситуацию, когда родительский элемент не удовлетворяет условию отбора, а подчиненные ему элементы удовлетворяют.
Таким образом, если Вам нужно реализовать отбор в дереве значений, то начать нужно с решения именно этой проблемы. А уже после этого можно придумать несколько способов реализовать задуманное.
Первый способ — накладывать отбор до вывода дерева значений (в запросе например). Это не классический отбор, но в тех случаях когда этот способ применим, то следует применять именно его, так как это почти всегда быстрее и правильнее чем что-либо другое.
Второй способ — перебор всех строк дерева значений. Описывать здесь особенно нечего, нужно просто взять обход дерева значений, проверять каждую строку на соответствие условию отбора и удалять лишние строки.
Еще один способ заключается в том, чтобы преобразовать дерево значений в таблицу значений, сделать отбор в таблице значений, проконтролировать результат (почистить «хвосты» — строки, родитель которых не удовлетворил условию отбора) и выполнить обратное преобразование в дерево значений.
На этом все, рассказал все, что знал, надеюсь мне удалось сэкономить Вам немного времени.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
По ссылке доступна для скачивания одна из версий консоли запросов, скачиваем файл, разархивируем его и открываем через меню 1С Предприятия Файл Открыть.

Бесплатные программы русские. Программирование 1С
Поговорим о некоторых особенностях таблицы значений 1С. Как сделать работу с ней быстрее в 100 раз.
Итак, для тестирования я создал небольшой код, который работает примерно так.
- Извлекается 20 тысяч строк из табличной части документа «Реализация» в таблицу значений. Называется она Т1.
- Сделал копию этой же таблицы значений, вторую таблицу, назвал ее Т2. Итак, получилось 2 таблицы значений, Т1 и Т2, в каждой по 20 тысяч строк.
- Далее в цикле от 1 до 5 мы делаем пять проходов. Проход заключается в следующем:
- В цикле (который вложен в цикл от 1 до 5) перебираются все строки таблицы значений Т1, все 20 тысяч строк.
- Для каждой текущей строки Т1 извлекаем из таблицы значений Т1 значение в колонке «Сумма» — это число.
- Ищем строку в таблице значений Т2, содержащую в колонке «Сумма» тоже самое число, которое которое извлекли на предыдущем шаге.
- Измеряем время каждого прохода в миллисекундах и выводим на экран.
Другими словами, перебирая все строки одной таблицы значений 1С и запоминая значение столбца «Сумма» , мы ищем в другой таблице значений строку с той же самой суммой. Используется метод таблицы значений «Найти». В одном проходе операция поиска выполняется 20 тысяч раз. Проходов всего пять. Они необходимы для усреднения результатов эксперимента.
Итак, в первом варианте имеем — 279 секунд, во втором варианте — 2,78 секунд. Разница в 100 раз ! Причем, такое ускорение достигается добавлением всего ОДНОЙ СТРОЧКИ КОДА!
Время выполнения, миллисекунды | ||
№ тестового запуска | 1 вариант, обычный | 2 вариант, оптимальный |
время на создание индекса | — | 47 |
1 | 46531 | 563 |
2 | 55516 | 547 |
3 | 60969 | 531 |
4 | 58688 | 562 |
5 | 57937 | 531 |
Итоговое время | 279641 | 2781 |
Ускорение в раз: | 100,5541172 |
Время выполнения, миллисекунды | ||
№ тестового запуска | 1 вариант, обычный | 2 вариант, оптимальный |
время на создание индекса | — | 47 |
1 | 46531 | 563 |
2 | 55516 | 547 |
3 | 60969 | 531 |
4 | 58688 | 562 |
5 | 57937 | 531 |
Итоговое время | 279641 | 2781 |
Ускорение в раз: | 100,5541172 |
СКД и таблицы значений
В данном разделе мы рассмотрим структуру создаваемого запросом временного набора данных и работу методов запросов по выборке информации из этого временного набора.

Поиск в таблице значений по двум и более полям
Рассмотрим первый способ — через объекты встроенного языка системы 1С:Предприятие:
В результате по первому способу, через объекты встроенного языка, получим:
Рассмотрим второй способ — через пакетные запросы системы 1С:Предприятие. Здесь воспользуемся таблицой значений, которую мы создали ранее, в первом способе:
В результате по второму способу, через запросы, получим:
Оба способа помогут нам найти строки в таблице значений по двум полям. Но как вы уже догадались можно добавить поиск по трём, четырём и более полям.
PDF-версия статьи для участников группы ВКонтакте
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы