17 апреля 2017 г.

1СЗапрос Реквизит параметра составного типа

Задача:
Выполнить выборку доков продаж/покупок по артикулу. На входе элемент справочника Номенклатура. Для получения необходимой инфы целесообразней использовать Хозрасчетный регистр по Субконто, нежели перебирать ТЧ всех документом.
Собственно по элементу справочника я получаю данные, но как их получить по Артикулу элемента переданного в запрос в качестве параметра с составным типом?



ВЫБОР
 КОГДА &артикул
 ТОГДА ХозрасчетныйСубконто.Значение В
  (ВЫБРАТЬ
   Номенклатура.Ссылка
  ИЗ
   Справочник.Номенклатура КАК Номенклатура
  ГДЕ
   Номенклатура.Артикул = (ВЫРАЗИТЬ(ВЫРАЗИТЬ(&Номенклатура КАК Справочник.Номенклатура).Артикул КАК СТРОКА(25))))
 ИНАЧЕ ХозрасчетныйСубконто.Значение = &Номенклатура
КОНЕЦ



Для решения задачи мы сначала приводим параметр к Справочник.Номенклатура, а полученное приводим к строке указывая поле Артикул. Обязательно указываем длину строки, иначе получим ошибку.

Кому интересно, полный код запроса:

ВЫБРАТЬ
 ВЫРАЗИТЬ(ХозрасчетныйСубконто.Регистратор КАК Документ.РеализацияТоваровУслуг) КАК ДокРТиУ,
 ВЫРАЗИТЬ(ХозрасчетныйСубконто.Регистратор КАК Документ.ПоступлениеТоваровУслуг) КАК ДокПТиУ,
 ХозрасчетныйСубконто.Значение КАК Номенклатура,
 КОЛИЧЕСТВО(ХозрасчетныйСубконто.Значение) КАК Количество
ПОМЕСТИТЬ СписокДокументов
ИЗ
 РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
ГДЕ
 ВЫБОР
 КОГДА &артикул
 ТОГДА ХозрасчетныйСубконто.Значение В
  (ВЫБРАТЬ
   Номенклатура.Ссылка
  ИЗ
   Справочник.Номенклатура КАК Номенклатура
  ГДЕ
   Номенклатура.Артикул = (ВЫРАЗИТЬ(ВЫРАЗИТЬ(&Номенклатура КАК Справочник.Номенклатура).Артикул КАК СТРОКА(25))))
 ИНАЧЕ ХозрасчетныйСубконто.Значение = &Номенклатура
КОНЕЦ
 И ХозрасчетныйСубконто.Регистратор.Дата МЕЖДУ &ДатаНачала И &ДатаКонца

СГРУППИРОВАТЬ ПО
 ХозрасчетныйСубконто.Значение,
 ВЫРАЗИТЬ(ХозрасчетныйСубконто.Регистратор КАК Документ.РеализацияТоваровУслуг),
 ВЫРАЗИТЬ(ХозрасчетныйСубконто.Регистратор КАК Документ.ПоступлениеТоваровУслуг)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
 РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
 РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
 РеализацияТоваровУслугТовары.Цена КАК Цена,
 РеализацияТоваровУслугТовары.Количество КАК Количество
ИЗ
 Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары,
 СписокДокументов КАК СписокДокументов
ГДЕ
 РеализацияТоваровУслугТовары.Номенклатура = СписокДокументов.Номенклатура
 И РеализацияТоваровУслугТовары.Ссылка В
   (ВЫБРАТЬ
    СписокДокументов.ДокРТиУ
   ИЗ
    СписокДокументов КАК СписокДокументов)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
 ПоступлениеТоваровУслугТовары.Ссылка.Дата,
 ПоступлениеТоваровУслугТовары.Ссылка,
 ПоступлениеТоваровУслугТовары.Номенклатура,
 ПоступлениеТоваровУслугТовары.Цена,
 ПоступлениеТоваровУслугТовары.Количество
ИЗ
 Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары,
 СписокДокументов КАК СписокДокументов
ГДЕ
 ПоступлениеТоваровУслугТовары.Номенклатура = СписокДокументов.Номенклатура
 И ПоступлениеТоваровУслугТовары.Ссылка В
   (ВЫБРАТЬ
    СписокДокументов.ДокПТиУ
   ИЗ
    СписокДокументов КАК СписокДокументов)

УПОРЯДОЧИТЬ ПО
 Дата


Комментариев нет:

Отправить комментарий