|
Реализация = Возврат (нулевой оборот при наличии продаж) | ☑ | ||
---|---|---|---|---|
0
Bon Jovi
15.05.20
✎
09:41
|
Конфигурация: Trade (10.3.29.1) (http://v8.1c.ru/trade/), версия: 8.3.11.2867, обычные формы.
Добрый день. Начинающий программист. Подскажите пожалуйста, в чём может быть проблема. Есть запрос, мне нужно сделать так, чтобы когда я задавал параметр (число) он анализировал заданное значение и по запуску запроса в табличной части отображался результат где кол-во документов с нулевым оборотом >= "выставленного значения" (за указанный день). Если в качестве параметра я указываю 0 или 1, то выдаётся такой результат: https://ibb.co/9qFdv9F. Как я понимаю, за указанную дату по номенклатуре было проведено два возврата, то есть условие >= 0 или 1, работает. Но стоит мне изменить на 2 и выше, то результат пустой. Подскажите, где я совершил ошибку? ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот ПОМЕСТИТЬ ЗапросПоНоменклатуре ИЗ РегистрНакопления.Продажи.Обороты(&Дата_Начала, &Дата_Окончания, Регистратор, ) КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура ИМЕЮЩИЕ СУММА(ПродажиОбороты.КоличествоОборот) = 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажиОбороты.Регистратор КАК Регистратор ПОМЕСТИТЬ ЗапросПоВозвратам ИЗ ЗапросПоНоменклатуре КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&Дата_Начала, &Дата_Окончания, Регистратор, ) КАК ПродажиОбороты ПО ВТ.Номенклатура = ПродажиОбороты.Номенклатура ГДЕ ПродажиОбороты.КоличествоОборот < 0 И НАЧАЛОПЕРИОДА(ПродажиОбороты.Период, ДЕНЬ) = &ДатаВозврата СГРУППИРОВАТЬ ПО ПродажиОбороты.Регистратор ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиОбороты.Регистратор) >= &КоличествоВозвратов ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура, ВозвратТоваровОтПокупателяТовары.ДокументПартии КАК Реализция, ВозвратТоваровОтПокупателяТовары.Ссылка КАК Возврат, ВозвратТоваровОтПокупателяТовары.Склад КАК СкладВозврата ИЗ Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары ГДЕ ВозвратТоваровОтПокупателяТовары.Ссылка В (ВЫБРАТЬ ЗапросПоВозвратам.Регистратор КАК Регистратор ИЗ ЗапросПоВозвратам КАК ЗапросПоВозвратам) СГРУППИРОВАТЬ ПО ВозвратТоваровОтПокупателяТовары.Номенклатура, ВозвратТоваровОтПокупателяТовары.ДокументПартии, ВозвратТоваровОтПокупателяТовары.Ссылка, ВозвратТоваровОтПокупателяТовары.Склад УПОРЯДОЧИТЬ ПО Реализция УБЫВ, Номенклатура ИТОГИ КОЛИЧЕСТВО(Реализция), КОЛИЧЕСТВО(Возврат) ПО Номенклатура АВТОУПОРЯДОЧИВАНИЕ |
|||
1
VladZ
15.05.20
✎
09:48
|
(0) Не понял постановку задачи. Попробуй еще раз объяснить.
|
|||
2
Bon Jovi
15.05.20
✎
09:51
|
Нужно в список параметров добавить кол-во возвратов, с изменяемым кол-вом. по умолчанию значение = 3. Анализируем заданное значение и по запуску запроса в табличной части отображаем результат где кол-во документов с нулевым оборотом >= "выставленного значения".
|
|||
3
K1RSAN
15.05.20
✎
09:52
|
Меня смущает левое соединение во втором запросе. Как вариант, сформируй в консоли запросов данные по второму запросу, только "имеющие" перенеси в поле запроса, и увидишь, какое количество туда попадает. И оттуда уже смотри, почему туда попадает не то, что ты хочешь
|
|||
4
Bon Jovi
15.05.20
✎
11:23
|
(3) Не подскажите, почему когда я условие вставляю:
ВЫБОР КОГДА &КоличествоВозвратов = 0 ТОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиОбороты.Регистратор) >= 3 ИНАЧЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиОбороты.Регистратор) >= &КоличествоВозвратов КОНЕЦ мне выдаётся ошибка: "операция не разрешена в предложении имеющие"??? |
|||
5
K1RSAN
15.05.20
✎
11:27
|
(4) КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиОбороты.Регистратор) >= 3
это что? Условие? |
|||
6
K1RSAN
15.05.20
✎
11:29
|
Вы посмотрите, что без ваших "имеющих" во втором запросе попадает, а потом уже думайте над условиями.
|
|||
7
Bon Jovi
15.05.20
✎
12:12
|
(6) Во второй запрос попадают документы возврата: https://ibb.co/qxLP6jK
|
|||
8
Bon Jovi
15.05.20
✎
12:12
|
(6) И теперь к этому результату мне нужно задать условие: Нужно в список параметров добавить кол-во возвратов, с изменяемым кол-вом. по умолчанию значение = 3. Анализируем заданное значение и по запуску запроса в табличной части отображаем результат где кол-во документов с нулевым оборотом >= "выставленного значения".
|
|||
9
dezss
15.05.20
✎
12:24
|
(8) Зачем эту константу пихать в запрос?
Не проще ли так: Запрос.УстановитьПараметр("КоличествоВозвратов", ?(КоличествоВозвратов = 0, 3, КоличествоВозвратов)); |
|||
10
Bon Jovi
15.05.20
✎
12:25
|
(9) Так как стоит задача, доделать именно запрос
|
|||
11
Bon Jovi
15.05.20
✎
12:28
|
(6) Возможно ли задать условие на "ПЕРВЫЕ". То есть, если параметр = 3, то показать первые 3. Если 5, то первые 5???
|
|||
12
K1RSAN
15.05.20
✎
12:32
|
(7) Добавь ко второму запросу КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиОбороты.Регистратор)
Узнаешь. И если там везде 0 да 1 - откуда взять 3? |
|||
13
Bon Jovi
15.05.20
✎
12:50
|
(12) Просто мне нужно определить если возвратов было больше 3 (например), тогда выводить
|
|||
14
Bon Jovi
15.05.20
✎
12:52
|
(13) Грубо говоря, когда итог подводишь, то отображается, что у этой номенклатуры за такой то период было такое то количество возвратов. и если это количество больше 3 (например), то выводить
|
|||
15
Bon Jovi
20.05.20
✎
11:42
|
Мне нужно оставить только ту номенклатуру, у который за период было количество возвратов больше либо равно моего указанного значения.
Вот например мой результат: https://ibb.co/VLMnfMg. По итогам у номенклатуры 10 документов возврата. Значит она попадает в условие >= &значения. Но как это задать, я не знаю. Условие по ИТОГОМ вроде нельзя задавать. |
|||
16
Bon Jovi
25.05.20
✎
16:53
|
Нашёл решение. Готовый запрос:
ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот ПОМЕСТИТЬ ЗапросПоНоменклатуре ИЗ РегистрНакопления.Продажи.Обороты(&Дата_Начала, &Дата_Окончания, Регистратор, ) КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура ИМЕЮЩИЕ СУММА(ПродажиОбороты.КоличествоОборот) = 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажиОбороты.Регистратор КАК Регистратор ПОМЕСТИТЬ ЗапросПоВозвратам ИЗ ЗапросПоНоменклатуре КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&Дата_Начала, &Дата_Окончания, Регистратор, ) КАК ПродажиОбороты ПО ВТ.Номенклатура = ПродажиОбороты.Номенклатура ГДЕ ПродажиОбороты.КоличествоОборот < 0 СГРУППИРОВАТЬ ПО ПродажиОбороты.Регистратор ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВозвратыЗаДату ИЗ Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары ГДЕ ВозвратТоваровОтПокупателяТовары.Ссылка В (ВЫБРАТЬ ЗапросПоВозвратам.Регистратор КАК Регистратор ИЗ ЗапросПоВозвратам КАК ЗапросПоВозвратам) И НАЧАЛОПЕРИОДА(ВозвратТоваровОтПокупателяТовары.Ссылка.Дата, ДЕНЬ) = &ДатаВозврата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура, ЗначенияСвойствОбъектов.Значение КАК TOPGP ПОМЕСТИТЬ ТЗНоменклатуры ИЗ Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ЗначенияСвойствОбъектов.Объект ГДЕ ВозвратТоваровОтПокупателяТовары.Ссылка В (ВЫБРАТЬ ЗапросПоВозвратам.Регистратор КАК Регистратор ИЗ ЗапросПоВозвратам КАК ЗапросПоВозвратам) И ЗначенияСвойствОбъектов.Свойство.Код = "000000467" СГРУППИРОВАТЬ ПО ВозвратТоваровОтПокупателяТовары.Номенклатура, ЗначенияСвойствОбъектов.Значение ИМЕЮЩИЕ КОЛИЧЕСТВО(ВозвратТоваровОтПокупателяТовары.Ссылка) >= ВЫБОР КОГДА &КоличествоВозвратов = 0 ТОГДА 3 ИНАЧЕ &КоличествоВозвратов КОНЕЦ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура, ВозвратТоваровОтПокупателяТовары.ДокументПартии КАК Реализация, ВозвратТоваровОтПокупателяТовары.Ссылка КАК Возврат, ВозвратТоваровОтПокупателяТовары.Склад КАК Склад ПОМЕСТИТЬ ПоследниеВозвраты ИЗ ВозвратыЗаДату КАК ВозвратыЗаДату ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары ПО ВозвратыЗаДату.Номенклатура = ВозвратТоваровОтПокупателяТовары.Номенклатура ГДЕ ВозвратТоваровОтПокупателяТовары.Ссылка В (ВЫБРАТЬ ЗапросПоВозвратам.Регистратор КАК Регистратор ИЗ ЗапросПоВозвратам КАК ЗапросПоВозвратам) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ПоследниеВозвраты.Номенклатура КАК Номенклатура, ТЗНоменклатуры.TOPGP КАК TOPGP, ПоследниеВозвраты.Реализация КАК Реализация, ПоследниеВозвраты.Возврат КАК Возврат, ПоследниеВозвраты.Склад КАК Склад ИЗ ТЗНоменклатуры КАК ТЗНоменклатуры ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследниеВозвраты КАК ПоследниеВозвраты ПО ТЗНоменклатуры.Номенклатура = ПоследниеВозвраты.Номенклатура УПОРЯДОЧИТЬ ПО Реализация УБЫВ, Номенклатура ИТОГИ КОЛИЧЕСТВО(Реализация), КОЛИЧЕСТВО(Возврат) ПО Номенклатура АВТОУПОРЯДОЧИВАНИЕ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |