Новости экономики и финансов. Курсы валют, ситуация на биржах, акции, котировки, аналитика: 💫 💫 💫 💫 читайте на сайте

1C Выгрузить Результат Запроса в Таблицу Значений Значение • От теории к практике

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

1С:Эксперт по технологическим вопросам
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
В теле цикла по внешней группировке Товар объект НашЗапрос позиционируется во временном наборе данных на записи, содержащие итоги по каждому конкретному товару, поэтому в теле этого цикла мы можем использовать итоги по товарам. Примеры программирования с таблицей значений в системе 1С: Предприятие 8 | — все для начинающих и опытных программистов 1С Обращайтесь в форму связи

1с запрос таблица значений как параметр

Многие начинающие программисты не знают, как поместить таблицу значений в запрос 1С 8. Очень часто это порождает распространенную ошибку — запрос в цикле. То есть разработчик не умеет включать таблицу значений в запрос и поэтому начинает обходить её в цикле и делать на каждую итерацию свой запрос. Рассмотрим на простом примере, как это сделать.

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

Может быть две ситуации, как создана таблица значений, — программно и уже получена откуда-то (например, ТЧ документа). Если таблица создана программно, необходимо установить тип колонки, сделать это несложно

Т.е. при добавление колонки необходимо вторым параметром указать типы данных с помощью конструктора объекта «ОписаниеТипов».

Перейдем к построению запроса. Таблицу значений можно передать в запрос простым &Параметром.

Обязательный нюанс — созданную таблицу необходимо поместить результат во временную таблицу, в противном случае система выдаст сообщение: «Ошибка при вызове метода контекста (Выполнить): Содержимое объекта данных может быть выбрано только во временную таблицу».

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

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Таблица значений 1С | Блог 1С программиста

Параметры в запросах в языке 1С 8.3, 8.2 (в примерах)

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Промокоды на Займер на скидки

Займы для физических лиц под низкий процент

  • 💲Сумма: от 2 000 до 30 000 рублей
  • 🕑Срок: от 7 до 30 дней
  • 👍Первый заём для новых клиентов — 0%, повторный — скидка 500 руб

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

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

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

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

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

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

1С:Эксперт по технологическим вопросам
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Ищем строку в таблице значений Т2, содержащую в колонке Сумма тоже самое число, которое которое извлекли на предыдущем шаге. 1С передать результат запроса на клиент Обращайтесь в форму связи

Запрос и дерево значений

Результат выполнения запроса очень легко преобразовать в дерево значений, для этого нужно воспользоваться методом «Выгрузить» и указать параметр «ТипОбхода» отличным от того, что стоит по умолчанию, т.е. «ПоГруппировкам» или «ПоГруппировкамСИерархией».

Если на форме имеется реквизит «ДеревоЗначений» и связанный с ним визуальный элемент, то можно сделать примерно так:

Причем полного совпадения колонок и типов не требуется — лишние колонки будут просто отброшены, а колонки с различными типами будут заполнены пустыми значениями.

Работа с деревом значений в 1С

Дерево значений в таблицу значений и обратно

Преобразовать дерево значений в таблицу значений и наоборот достаточно просто, ведь дерево значений это та же таблица значений, но с дополнительной колонкой — «Родитель». У меня есть отдельная статья о том как преобразовать дерево значений в таблицу значений и обратно.

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

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

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

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

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

На этом все, рассказал все, что знал, надеюсь мне удалось сэкономить Вам немного времени.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

По ссылке доступна для скачивания одна из версий консоли запросов, скачиваем файл, разархивируем его и открываем через меню 1С Предприятия Файл Открыть.

1С:Эксперт по технологическим вопросам
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
С помощью данных обработчиков модуля менеджера объекта можно переопределить представление объекта информационной базы, которое выводится в полях форм и в списках. 1С-Предприятие. Документация | Описание встроенного языка 7.7. Глава 33 Работа с Запросами Обращайтесь в форму связи

Бесплатные программы русские. Программирование 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
146531563
255516547
360969531
458688562
557937531
Итоговое время2796412781
Ускорение в раз:100,5541172
Время выполнения, миллисекунды
№ тестового запуска1 вариант, обычный2 вариант, оптимальный
время на создание индекса47
146531563
255516547
360969531
458688562
557937531
Итоговое время2796412781
Ускорение в раз:100,5541172

СКД и таблицы значений

В данном разделе мы рассмотрим структуру создаваемого запросом временного набора данных и работу методов запросов по выборке информации из этого временного набора.

1С:Эксперт по технологическим вопросам
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Если используется иерархический обход результата запроса или обход по группировкам, тогда удобнее выгрузить не в таблицу значений, а в дерево значений , как делается в следующем примере Код 1C v 8. 1С как загрузить запрос в таблицу Обращайтесь в форму связи

Поиск в таблице значений по двум и более полям

Рассмотрим первый способ — через объекты встроенного языка системы 1С:Предприятие:

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

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

В результате по второму способу, через запросы, получим:

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

PDF-версия статьи для участников группы ВКонтакте

💥Принимайте участие в опросе и получайте бесплатную консультацию

Related posts