табличная часть как параметр в запросе 1с

Как передать табличную часть документа в параметр

Добрый день,очень нужна помощь.
Нужно изменить запрос так чтобы данные брались не из таблицы документа а из параметров, т.е мне нужно передать табличную часть в параметры,как это сделать? Вот пример кода:
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗаказПокупателяТовары.Номенклатура КАК Номенклатура,
| ЗаказПокупателяТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
|ПОМЕСТИТЬ ТоварыИзДокумента
|ИЗ
| Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
|ГДЕ
| ЗаказПокупателяТовары.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| ХарактеристикаНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| &МоментВремени,
| Номенклатура В
| (ВЫБРАТЬ
| ТоварыИзДокумента.Номенклатура
| ИЗ
| ТоварыИзДокумента)
| И ТипЦен = ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.Инвойс)
| И (ХарактеристикаНоменклатуры В
| (ВЫБРАТЬ
| ТоварыИзДокумента.ХарактеристикаНоменклатуры
| ИЗ
| ТоварыИзДокумента)
| ИЛИ ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))) КАК ЦеныНоменклатурыСрезПоследних»;

Запрос.УстановитьПараметр(«МоментВремени», МоментВремени());
Запрос.УстановитьПараметр(«Ссылка», Ссылка)

Источник

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

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

табличная часть как параметр в запросе 1с. Смотреть фото табличная часть как параметр в запросе 1с. Смотреть картинку табличная часть как параметр в запросе 1с. Картинка про табличная часть как параметр в запросе 1с. Фото табличная часть как параметр в запросе 1с

Пример

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

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

табличная часть как параметр в запросе 1с. Смотреть фото табличная часть как параметр в запросе 1с. Смотреть картинку табличная часть как параметр в запросе 1с. Картинка про табличная часть как параметр в запросе 1с. Фото табличная часть как параметр в запросе 1с

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

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

табличная часть как параметр в запросе 1с. Смотреть фото табличная часть как параметр в запросе 1с. Смотреть картинку табличная часть как параметр в запросе 1с. Картинка про табличная часть как параметр в запросе 1с. Фото табличная часть как параметр в запросе 1с

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

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

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

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

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

Источник

табличная часть как параметр в запросе 1с. Смотреть фото табличная часть как параметр в запросе 1с. Смотреть картинку табличная часть как параметр в запросе 1с. Картинка про табличная часть как параметр в запросе 1с. Фото табличная часть как параметр в запросе 1с

1С 8.3 Параметры в запросе

&НаСервере
Процедура ПередачаПараметровПростыхТиповВЗапросе ()

// Создание отбора по поступлению материала за 2020 год
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов
|ГДЕ
| Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР» );

&НаСервере
Процедура ПередачаПараметровСсылочныхТиповВЗапросе ()

// Создание отбора по материалам с единицей измерения «Куб.см.»
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения = &ЕдинИзмер» );

&НаСервере
Процедура ПередачаПараметровСписочногоТипаВЗапросе ()

// Создание отбора по материалам, единицы измерения входят в переданный список
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения В (&СписокЕдиницИзмерения)» );

&НаСервере
Процедура ПередачаПараметраВВидеТаблицыЗначенийВЗапросе ()

Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| СрокИспользования,
| Производитель
|ИЗ
| Справочник.Материалы
|ГДЕ
| (СрокИспользования, Производитель) В (&СписокСочетаний)» );

&НаСервере
Процедура ИспользованиеТаблицыЗначенийПереданнойВЗапросКакПараметр ()

// Сперва выбираем данные во временную таблицу, а потом работаем как с обычной таблицей
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Название,
| РынЦена
|ПОМЕСТИТЬ
| ВременнаяТаблица
|ИЗ
| &ТаблицаДрагМеталлов КАК ДрагМеталлы
|;
|ВЫБРАТЬ
| Название,
| РынЦена
|ИЗ
| ВременнаяТаблица
|УПОРЯДОЧИТЬ ПО
| РынЦена УБЫВ» );

Источник

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

Чтобы в 1C 8 поместить таблицу значений в запрос и использовать ее в качестве источника данных нужно:

1. Передать ее в параметр запроса

Пусть у нас есть таблица значений с именем ТЗ и полями: Договор, Количество, Сумма.

2. В конструкторе запроса задать структуру таблицы

Для этого вызываем конструктор запросов 1С 8, создаем новый запрос и жмем кнопку Создать описание временной таблицы.

табличная часть как параметр в запросе 1с. Смотреть фото табличная часть как параметр в запросе 1с. Смотреть картинку табличная часть как параметр в запросе 1с. Картинка про табличная часть как параметр в запросе 1с. Фото табличная часть как параметр в запросе 1с

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

табличная часть как параметр в запросе 1с. Смотреть фото табличная часть как параметр в запросе 1с. Смотреть картинку табличная часть как параметр в запросе 1с. Картинка про табличная часть как параметр в запросе 1с. Фото табличная часть как параметр в запросе 1с

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

табличная часть как параметр в запросе 1с. Смотреть фото табличная часть как параметр в запросе 1с. Смотреть картинку табличная часть как параметр в запросе 1с. Картинка про табличная часть как параметр в запросе 1с. Фото табличная часть как параметр в запросе 1с

3. Использование созданной временной таблицы в запросе

Получите понятные самоучители по 1С бесплатно:

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

Вот пример простенького запроса с группировкой и условием:

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

Источник

v8: Хитрый прием работы с табличными частями в запросе

табличная часть как параметр в запросе 1с. Смотреть фото табличная часть как параметр в запросе 1с. Смотреть картинку табличная часть как параметр в запросе 1с. Картинка про табличная часть как параметр в запросе 1с. Фото табличная часть как параметр в запросе 1с

Как в запросе отобрать только табличные части с указанным условием и не заполненные.Автор статьи: Гений 1С | Редакторы:
Последняя редакция №3 от 23.08.06 |

Ключевые слова: табличная часть,запрос

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

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

Исходный запрос был таким:

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

В результате я изменил условие на противоположное и добился нужного:

Для пустой табличной части условие в скобках давало ложь, НЕ превращало его в истину. Все нужные данные попадали.

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

Идем дальше

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

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

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *