Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 13:02

Как прописать условие по документу регистратору при запросе из регистра.

Автор Александр_Ярославль, 09 сен 2016, 08:33

0 Пользователей и 1 гость просматривают эту тему.

Александр_Ярославль

Здравствуйте, Люди добрые. Помогите советом. С помощью конструктора запроса делаю выборку по расходу товара из регистра ТоварыНаСкладахОбороты. Но нужно что бы в выборку попадали только товары, которые проданы, а не перемещены на другой склад. Т.е. хочу сделать отбор по регистратору. Регистраторы РеализацияТоваровУслуг и ОтчетОРозничныхПродажах. Как можно прописать это условие? И Где (в конструкторе)?

cast

Отчёт->СКД->Конструктор запроса-> Условия. Наложи условия на нужное поле.

Александр_Ярославль

Цитата: cast от 09 сен 2016, 08:44
Отчёт->СКД->Конструктор запроса-> Условия. Наложи условия на нужное поле.

А Как само условие должно выглядеть?

alex0402

Спасибо за Сказать спасибо

Luzer1C

ГДЕ
ТоварыНаСкладахОбороты.Регистратор Ссылка Документ.РеализацияТоваровУслуг Или
ТоварыНаСкладахОбороты.Регистратор Ссылка Документ.ОтчетОРозничныхПродажах

Только в свойствах виртуальной таблицы нужно поставить свойство периодичности "Регистратор".
Халамбалам.

Александр_Ярославль

Цитата: Luzer1C от 09 сен 2016, 10:13
ГДЕ
ТоварыНаСкладахОбороты.Регистратор Ссылка Документ.РеализацияТоваровУслуг Или
ТоварыНаСкладахОбороты.Регистратор Ссылка Документ.ОтчетОРозничныхПродажах

Только в свойствах виртуальной таблицы нужно поставить свойство периодичности "Регистратор".

А это на конкретное поле выборки нужно поставить условие или на весь запрос? Просто на весь запрос я пробовал ставить там мало данных выборки оставалось. У меня там ведь ещё много таблиц присоединяется..
Добавлено: 09 сен 2016, 11:10


Попробовал прописать это условие на весь запрос из данных осталась одна строчка. Буду пробовать в поле выборки ставить. Правда там почему-то слово ГДЕ на принимается..

alex0402

Спасибо за Сказать спасибо

Александр_Ярославль

Кажется уже вплотную приблизился к разгадке. В самом поле выборки прописал подсказанное условие

ВЫБОР
   КОГДА РасходОсновной.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
         ИЛИ РасходОсновной.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
      ТОГДА РасходОсновной.КоличествоРасход
   ИНАЧЕ 0
КОНЕЦ

Но почему то теперь нужная мне позиция номенклатуры раздваивается на ту которая прошла по документам реализации а следующая строчка с нулём. Как бы этого избежать?
Добавлено: 09 сен 2016, 11:36


Цитата: alex0402 от 09 сен 2016, 11:21
опубликуйте запрос.

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

СГРУППИРОВАТЬ ПО
   ОстаткиОпт.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ОстатокСох.Номенклатура
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОтчета, Склад = &СкладСох) КАК ОстатокСох

СГРУППИРОВАТЬ ПО
   ОстатокСох.Номенклатура

ИНДЕКСИРОВАТЬ ПО
   Номенклатура
;

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

Luzer1C

В самом конце:
ГДЕ
   (РасходОсновной.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
         ИЛИ РасходОсновной.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
Халамбалам.

Александр_Ярославль

Цитата: Luzer1C от 09 сен 2016, 12:03
В самом конце:
ГДЕ
   (РасходОсновной.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
         ИЛИ РасходОсновной.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)

Я уже попробовал поставить это условие в конце. Тогда в отчет выводится одна строка с одной позицией номенклатуры. Дело в том что запрос сначала должен из двух складов взять номенклатуру и потом к ней присоединять остатки, движения по разным складам и цены. Но когда такое условие ставится в конце  то выводится только позиция по которой случилось движение по этому документу в данный промежуток времени, а нужно что бы выводились товары которые есть в наличии на основном складе и по этой номенклатуре уже показывать наличия, движения и цены.
Добавлено: 09 сен 2016, 13:52


Вроде получилось

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

СГРУППИРОВАТЬ ПО
   ОстаткиОпт.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ОстатокСох.Номенклатура
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОтчета, Склад = &СкладСох) КАК ОстатокСох

СГРУППИРОВАТЬ ПО
   ОстатокСох.Номенклатура

ИНДЕКСИРОВАТЬ ПО
   Номенклатура
;

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

ИНДЕКСИРОВАТЬ ПО
   Код
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТаблицаОстаткиЦены.Код,
   ТаблицаОстаткиЦены.Наименование,
   ТаблицаОстаткиЦены.Артикул,
   ТаблицаОстаткиЦены.Брэнд,
   ТаблицаОстаткиЦены.Родитель,
   ТаблицаОстаткиЦены.ОстатокОсновной,
   Движения.КоличествоРасход,
   ТаблицаОстаткиЦены.ОстатокСох,
   ТаблицаОстаткиЦены.ОстатокЗаволга,
   ТаблицаОстаткиЦены.ОстатокМосковский,
   ТаблицаОстаткиЦены.ОстатокОмега,
   ТаблицаОстаткиЦены.ЦенаЗакупочная,
   ТаблицаОстаткиЦены.ЦенаРозничная,
   Движения.Номенклатура
ИЗ
   ТаблицаОстаткиЦены КАК ТаблицаОстаткиЦены
      ЛЕВОЕ СОЕДИНЕНИЕ Движения КАК Движения
      ПО ТаблицаОстаткиЦены.Наименование = Движения.Номенклатура

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск