Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Запрос к таблице значений в 1С 8.2 и 8.3

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

внешняя таблица с типизацией

Пример

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

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

заполнение типа колонок таблицы значений

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

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

помещаем таблицу в запрос

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

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

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

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

Читайте также и другие статьи про язык запросов 1С.

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

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

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 13 на “Запрос к таблице значений в 1С 8.2 и 8.3
  1. Помещаем во временную таблицу ВнешняяТаблицаНоменклатуры, а запрос делаем из таблицы ТаблицаНоменклатуры ! Поправьте, пожалуйста.

    Ответить

    • Все правильно написано

      Ответить

      • Что правильного в этом? Источник совсем другой и компилятор выдаст ошибку.

        Ответить

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

    Ответить

    • В конструкторе тип значения не имеет смысла, для описания таблицы ему нужны только имена колонок. Типы тут никогда не сохранялись, только вот зачем здесь типы вообще нужны — загадка.

      Ответить

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

        Ответить

        • И что бы автоматически построилось соединение двух таблиц.

          Ответить

  3. В Запросе ошибку так и не исправили.
    ПОМЕСТИТЬ ТаблицаНоменклатуры

    Ответить

  4. ОШИБКА, Спасибо, помогли включить мозги в понедельник! )

    Ответить

  5. Не будет работать

    Ответить

  6. А как поместить запрос таблицу значений с составным типом?
    конструкция типа:
    СписокТипов = Новый Массив;
    СписокТипов.Добавить(«ДокументСсылка.ЗаказКлиента»);
    СписокТипов.Добавить(«ДокументСсылка.ЗаказНаПеремещение»);

    ТЗ.Колонки.Добавить(«Распоряжение», Новый ОписаниеТипов(СписокТипов,));
    не работает и выдает ошибку

    Ответить

  7. хреново, что нельзя копировать текст кода

    Ответить

Добавить комментарий:

Ваш адрес email не будет опубликован.