Здравствуйте! Может кто поможет с запросом, задваиваются результаты по характеристикам, по два раза выходят. Не пойму в чем дело.
Текст =
"ВЫБРАТЬ
| ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
| ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
| ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход
| ИНАЧЕ NULL
| КОНЕЦ) КАК СуммаПоступление,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход
| ИНАЧЕ NULL
| КОНЕЦ) КАК КоличествоПоступление,
| СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
| СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьНачальныйОстаток) КАК СтоимостьНачальныйОстаток,
| СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
| СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьКонечныйОстаток) КАК СтоимостьКонечныйОстаток,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ОприходованиеТоваров)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход
| ИНАЧЕ NULL
| КОНЕЦ) КАК СуммаОприходование,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ОприходованиеТоваров)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход
| ИНАЧЕ NULL
| КОНЕЦ) КАК КоличествоОприходование,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.СписаниеТоваров)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьРасход
| ИНАЧЕ NULL
| КОНЕЦ) КАК СуммаСписание,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.СписаниеТоваров)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход
| ИНАЧЕ NULL
| КОНЕЦ) КАК КоличествоСписание,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ПеремещениеТоваров)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход
| ИНАЧЕ NULL
| КОНЕЦ) КАК СуммаПриходПеремещение,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ПеремещениеТоваров)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход
| ИНАЧЕ NULL
| КОНЕЦ) КАК КоличествоПриходПеремещение,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ПеремещениеТоваров)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьРасход
| ИНАЧЕ NULL
| КОНЕЦ) КАК СуммаРасходПеремещение,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ПеремещениеТоваров)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход
| ИНАЧЕ NULL
| КОНЕЦ) КАК КоличествоРасходПеремещение,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ОтчетоРозничныхПродажах)
| ИЛИ ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
| ИЛИ ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ЧекККМ)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьРасход
| ИНАЧЕ NULL
| КОНЕЦ) КАК СуммаПродажи,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ОтчетоРозничныхПродажах)
| ИЛИ ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
| ИЛИ ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ЧекККМ)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход
| ИНАЧЕ NULL
| КОНЕЦ) КАК КоличествоПродажи,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ВозвратТоваровПоставщику)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьРасход
| ИНАЧЕ NULL
| КОНЕЦ) КАК СуммаРасходВозвратПоставщику,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ВозвратТоваровПоставщику)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход
| ИНАЧЕ NULL
| КОНЕЦ) КАК КоличествоРасходВозвратПоставщику,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьПриход
| ИНАЧЕ NULL
| КОНЕЦ) КАК СуммаПриходВозвратПокупателя,
| СУММА(ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
| ТОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход
| ИНАЧЕ NULL
| КОНЕЦ) КАК КоличествоПриходВозвратПокупателя,
| Сумма(ВложенныйЗапрос.СтоимостьОборот) КАК СуммаПродажиРозница
|ИЗ
| РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&ДатН, &ДатК,Регистратор , , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ПродажиОбороты.Номенклатура КАК Номенклатура,
| ПродажиОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ПродажиОбороты.Регистратор КАК Регистратор,
| Сумма(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот
| ИЗ
| РегистрНакопления.Продажи.Обороты(&ДатН, &ДатК,Регистратор, ) КАК ПродажиОбороты
| СГРУППИРОВАТЬ ПО
| ПродажиОбороты.Номенклатура,
| ПродажиОбороты.ХарактеристикаНоменклатуры,
| ПродажиОбороты.Регистратор) КАК ВложенныйЗапрос
| ПО ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор = ВложенныйЗапрос.Регистратор
| И ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура = ВложенныйЗапрос.Номенклатура
| И ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры = ВложенныйЗапрос.ХарактеристикаНоменклатуры
|";
ЕстьУсл=ложь;
Если ЗначениеЗаполнено(ЭлементыФормы.Номенклатура.Значение) Тогда
ЕстьУсл=истина;
Текст = Текст+" ГДЕ
| (ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура ";
Если ПолеВидаСравненияНоменклатура = ВидСравнения.Равно Тогда
Текст = Текст+"=";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.НеРавно Тогда
Текст = Текст+"<>";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.ВСписке Тогда
Текст = Текст+"В";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.НеВСписке Тогда
Текст = Текст+"НЕ В";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.ВИерархии Тогда
Текст = Текст+"В ИЕРАРХИИ";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.НеВИерархии Тогда
Текст = Текст+"НЕ В ИЕРАРХИИ";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.ВСпискеПоИерархии Тогда
Текст = Текст+"В ИЕРАРХИИ";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.НЕВСпискеПоИерархии Тогда
Текст = Текст+"НЕ В ИЕРАРХИИ";
КонецЕсли;
Текст = Текст+" (&Владелец))";
КонецЕсли;
Если ЗначениеЗаполнено(ЭлементыФормы.Поставщик.Значение) Тогда
Если ЕстьУсл тогда
Текст = Текст+" И
| ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Контрагент = &Контрагент
|";
иначе
Текст = Текст+" ГДЕ
| ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Контрагент = &Контрагент
|";
КонецЕсли;
ЕстьУсл=истина;
КонецЕсли;
Если ЗначениеЗаполнено(ЭлементыФормы.Склад.Значение) Тогда
Если ЕстьУсл тогда
Текст = Текст+" И
| ПартииТоваровНаСкладахОстаткиИОбороты.Склад = &Склад
|";
иначе
Текст = Текст+" ГДЕ
| ПартииТоваровНаСкладахОстаткиИОбороты.Склад = &Склад
|";
КонецЕсли;
ЕстьУсл=истина;
КонецЕсли;
Если ЗначениеЗаполнено(ЭлементыФормы.ДатаНачПоступления.Значение) Тогда
Если ЕстьУсл тогда
Текст = Текст+" И
| ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата >= &ДатаН
|";
иначе
Текст = Текст+" ГДЕ
| ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата >= &ДатаН
|";
КонецЕсли;
ЕстьУсл=истина;
КонецЕсли;
Если ЗначениеЗаполнено(ЭлементыФормы.ДатаКонПоступления.Значение) Тогда
Если ЕстьУсл тогда
Текст = Текст+" И
| ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата <= &ДатаК
|";
иначе
Текст = Текст+" ГДЕ
| ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата <= &ДатаК
|";
КонецЕсли;
ЕстьУсл=истина;
КонецЕсли;
Текст= Текст+"
|СГРУППИРОВАТЬ ПО
| ПартииТоваровНаСкладахОстаткиИОбороты.Склад,
| ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
| ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
|УПОРЯДОЧИТЬ ПО
| Склад,
| Номенклатура,
| ХарактеристикаНоменклатуры
|ИТОГИ ПО
| ОБЩИЕ,
| Склад,
| Номенклатура ИЕРАРХИЯ
|АВТОУПОРЯДОЧИВАНИЕ";
ПоказатьПо теме из базы знаний
- Статья из цикла «Личный опыт» «Устранение ошибок выгрузки, загрузки конфигураций в 1С: Предприятие 7.7»
- Продажи без дублей по маркам. Сведение остатков в магазинах с остатками в ЕГАИС. Декларации по Форме 11 и Форме 12 по данным 1С.Розница 2.2 и др. программ и источников.
- Ведение взаиморасчетов в конфигурациях «Комплексная автоматизация 1.1» и «Управление производственным предприятием 1.3» - часть 2
- Удобная инвентаризация алкоголя для конфигурации Розница 2.2 - 2.3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Попробуй добавить вложенный запрос на характеристик, я на цены вот так получаю
задвоений нет
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
ЕСТЬNULL(ВложенныйЗапрос.Характеристика, "") КАК Характеристика,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
ПОМЕСТИТЬ ВтЦены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос
ПО ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка = ВложенныйЗапрос.Номенклатура.Ссылка
И ЦеныНоменклатурыСрезПоследних.Характеристика.Ссылка = ВложенныйЗапрос.Характеристика.Ссылка
ПоказатьЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
ЕСТЬNULL(ВложенныйЗапрос.Характеристика, "") КАК Характеристика,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
ПОМЕСТИТЬ ВтЦены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос
ПО ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка = ВложенныйЗапрос.Номенклатура.Ссылка
И ЦеныНоменклатурыСрезПоследних.Характеристика.Ссылка = ВложенныйЗапрос.Характеристика.Ссылка
задвоений нет
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот