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

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

Пример

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

Получите 267 видеоуроков по 1С бесплатно:

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

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

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

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

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

Вот и всё, проблема решена.

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

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

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

Читайте также  Почтовый ящик номер 1

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

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

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

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

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

На помощь придут 3 простых способа:

Способ 1: использование ЗначениеВСтрокуВнутр()

Самый простой и быстрый способ — использовать функцию ЗначениеВСтрокуВнутр(), встроенную в платформу. На одной стороне (стороне отправки) мы упаковываем данные во внутренний формат:

На другой (приемной) стороне, мы распаковываем полученные данные:

и продолжаем с ними работу, как будто никуда не передавали.

Способ 2: использование сериализации XML

На платформе 1С:Предприятие 8 большинство типов значений сериализуются (м.б. представлены в строковом виде). Таблица значений — не исключение. На стороне отправки мы упаковываем данные в формат XML:

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

Способ 3: использование временного хранилища

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

Читайте также  Почему из мясорубки течет черная жидкость

На приемной стороне достаточно будет получить эти данные из временного хранилища по адресу:

Ссылка на основную публикацию
Adblock
detector