1. Jovi 14.05.20 15:52 Сейчас в теме

Реализация = Возврат (нулевой оборот при наличии продаж)

Добрый день. Начинающий программист. Подскажите пожалуйста, в чём может быть проблема. Есть запрос, мне нужно сделать так, чтобы когда я задавал параметр (число) он анализировал заданное значение и по запуску запроса в табличной части отображался результат где кол-во документов с нулевым оборотом >= "выставленного значения" (за указанный день). Если в качестве параметра я указываю 0 или 1, то выдаётся такой результат: Результат. Как я понимаю, за указанную дату по номенклатуре было проведено два возврата, то есть условие >= 0 или 1, работает. Но стоит мне изменить на 2 и выше, то результат пустой. Подскажите, где я совершил ошибку? Версия 8.3.
ВЫБРАТЬ
	ПродажиОбороты.Номенклатура КАК Номенклатура,
	СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
ПОМЕСТИТЬ ЗапросПоНоменклатуре
ИЗ
	РегистрНакопления.Продажи.Обороты(&Дата_Начала, &Дата_Окончания, Регистратор, ) КАК ПродажиОбороты

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

ИМЕЮЩИЕ
	СУММА(ПродажиОбороты.КоличествоОборот) = 0
;

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

СГРУППИРОВАТЬ ПО
	ПродажиОбороты.Регистратор

ИМЕЮЩИЕ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиОбороты.Регистратор) >= &КоличествоВозвратов
;

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

СГРУППИРОВАТЬ ПО
	ВозвратТоваровОтПокупателяТовары.Номенклатура,
	ВозвратТоваровОтПокупателяТовары.ДокументПартии,
	ВозвратТоваровОтПокупателяТовары.Ссылка,
	ВозвратТоваровОтПокупателяТовары.Склад

УПОРЯДОЧИТЬ ПО
	Реализция УБЫВ,
	Номенклатура
ИТОГИ
	КОЛИЧЕСТВО(Реализция),
	КОЛИЧЕСТВО(Возврат)
ПО
	Номенклатура
АВТОУПОРЯДОЧИВАНИЕ
Показать
Найденные решения
16. Jovi 25.05.20 16:54 Сейчас в теме
Нашёл решение. Готовый запрос:
ВЫБРАТЬ
	ПродажиОбороты.Номенклатура КАК Номенклатура,
	СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
ПОМЕСТИТЬ ЗапросПоНоменклатуре
ИЗ
	РегистрНакопления.Продажи.Обороты(&Дата_Начала, &Дата_Окончания, Регистратор, ) КАК ПродажиОбороты

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

ИМЕЮЩИЕ
	СУММА(ПродажиОбороты.КоличествоОборот) = 0
;

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

СГРУППИРОВАТЬ ПО
	ПродажиОбороты.Регистратор
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура,
	ЗначенияСвойствОбъектов.Значение КАК TOPGP
ПОМЕСТИТЬ ТЗНоменклатуры
ИЗ
	Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
		ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ЗначенияСвойствОбъектов.Объект
ГДЕ
	ВозвратТоваровОтПокупателяТовары.Ссылка В
			(ВЫБРАТЬ
				ЗапросПоВозвратам.Регистратор КАК Регистратор
			ИЗ
				ЗапросПоВозвратам КАК ЗапросПоВозвратам)
	И ЗначенияСвойствОбъектов.Свойство.Код = "000000467"

СГРУППИРОВАТЬ ПО
	ВозвратТоваровОтПокупателяТовары.Номенклатура,
	ЗначенияСвойствОбъектов.Значение

ИМЕЮЩИЕ
	КОЛИЧЕСТВО(ВозвратТоваровОтПокупателяТовары.Ссылка) >= ВЫБОР
		КОГДА &КоличествоВозвратов = 0
			ТОГДА 3
		ИНАЧЕ &КоличествоВозвратов
	КОНЕЦ
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ПоследниеВозвраты.Номенклатура КАК Номенклатура,
	ТЗНоменклатуры.TOPGP КАК TOPGP,
	ПоследниеВозвраты.Реализация КАК Реализация,
	ПоследниеВозвраты.Возврат КАК Возврат,
	ПоследниеВозвраты.Склад КАК Склад
ИЗ
	ТЗНоменклатуры КАК ТЗНоменклатуры
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследниеВозвраты КАК ПоследниеВозвраты
		ПО ТЗНоменклатуры.Номенклатура = ПоследниеВозвраты.Номенклатура

УПОРЯДОЧИТЬ ПО
	Реализация УБЫВ,
	Номенклатура
ИТОГИ
	КОЛИЧЕСТВО(Реализация),
	КОЛИЧЕСТВО(Возврат)
ПО
	Номенклатура
АВТОУПОРЯДОЧИВАНИЕ
Показать
Остальные ответы
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
5. alex-l19041 8 15.05.20 10:05 Сейчас в теме
(1) можете объяснить это подробнее
кол-во документов с нулевым оборотом
?
2. SGordon1 14.05.20 15:59 Сейчас в теме
С результатом что то не прошло по моему, что там выдается то?
3. Jovi 14.05.20 16:03 Сейчас в теме
4. SGordon1 14.05.20 21:22 Сейчас в теме
Хитро как то - Как я понимаю, первый запрос отбирает в ВТ номенклатуру которую за период продали и вернули поровну ... И потом от него пляшете - Зачем так ?
6. Jovi 20.05.20 11:31 Сейчас в теме
(4) В первом пакете получаю номенклатуру, у которой 0 оборот. Во втором пакете получаю документ возврата этой номенклатуры. В третьем получаю уже номенклатуру с её реализациями и документами возврата.
7. Jovi 20.05.20 11:36 Сейчас в теме
А мне нужно оставить только ту номенклатуру, у который за период было количество возвратов больше либо равно моего указанного значения.
Вот например мой результат: Результат. По итогам у номенклатуры 10 документов возврата. Значит она попадает в условие >= &значения. Но как это задать, я не знаю. Условие по ИТОГОМ вроде нельзя задавать.
8. SGordon1 20.05.20 13:13 Сейчас в теме
(7) А теперь для вашего результата напишите &Дата_Начала, &Дата_Окончания, &ДатаВозврата
9. Jovi 20.05.20 13:15 Сейчас в теме
(8) Немного не понимаю, как это поможет... Можете расписать?
Если что, вот оригинальный запрос, остальное мои попытки
ВЫБРАТЬ
	ПродажиОбороты.Номенклатура КАК Номенклатура,
	СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
ПОМЕСТИТЬ ЗапросПоНоменклатуре
ИЗ
	РегистрНакопления.Продажи.Обороты(&Дата_Начала, &Дата_Окончания, Регистратор, ) КАК ПродажиОбороты

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

ИМЕЮЩИЕ
	СУММА(ПродажиОбороты.КоличествоОборот) = 0
;

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

СГРУППИРОВАТЬ ПО
	ПродажиОбороты.Регистратор
;

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

УПОРЯДОЧИТЬ ПО
	Реализция УБЫВ,
	Номенклатура
ИТОГИ
	КОЛИЧЕСТВО(Реализция),
	КОЛИЧЕСТВО(Возврат)
ПО
	Номенклатура
АВТОУПОРЯДОЧИВАНИЕ
Показать
10. SGordon1 20.05.20 13:16 Сейчас в теме
(9)Надеюсь понять как оно должно заработать ...
12. Jovi 20.05.20 13:19 Сейчас в теме
(10) Лучше работать с оригинальным запрос, возможно от него будет проще отталкиваться. Дата начала и окончание это произвольный период, например 01.01.2019 по 01.01.2020
13. SGordon1 20.05.20 13:20 Сейчас в теме
(12) второй запрос &ДатаВозврата какое значение при таком допущении?
14. Jovi 20.05.20 13:24 Сейчас в теме
(13) Его пока опускаем, чтобы не путаться. Отталкивать лучше от оригинального запроса :
Если что, вот оригинальный запрос, остальное мои попытки
15. SGordon1 20.05.20 14:17 Сейчас в теме
(14) Оригинальный запрос вообще же ничего не фильтрует, просто список возвратов ... Сделайте список ВозвратТоваровОтПокупателяТовары.ДокументПартии, сами возврат , пофильтруйте как мечталось по количеству, потом добавьте по номенклатуре ....
11. SGordon1 20.05.20 13:18 Сейчас в теме
Нельзя просто нарисовать табличку , сколько было продано товара , сколько вернулось и посчитать количество документов возврата? Как связываете продажу и возврат, по какому полю?
16. Jovi 25.05.20 16:54 Сейчас в теме
Нашёл решение. Готовый запрос:
ВЫБРАТЬ
	ПродажиОбороты.Номенклатура КАК Номенклатура,
	СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
ПОМЕСТИТЬ ЗапросПоНоменклатуре
ИЗ
	РегистрНакопления.Продажи.Обороты(&Дата_Начала, &Дата_Окончания, Регистратор, ) КАК ПродажиОбороты

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

ИМЕЮЩИЕ
	СУММА(ПродажиОбороты.КоличествоОборот) = 0
;

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

СГРУППИРОВАТЬ ПО
	ПродажиОбороты.Регистратор
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура,
	ЗначенияСвойствОбъектов.Значение КАК TOPGP
ПОМЕСТИТЬ ТЗНоменклатуры
ИЗ
	Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
		ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ЗначенияСвойствОбъектов.Объект
ГДЕ
	ВозвратТоваровОтПокупателяТовары.Ссылка В
			(ВЫБРАТЬ
				ЗапросПоВозвратам.Регистратор КАК Регистратор
			ИЗ
				ЗапросПоВозвратам КАК ЗапросПоВозвратам)
	И ЗначенияСвойствОбъектов.Свойство.Код = "000000467"

СГРУППИРОВАТЬ ПО
	ВозвратТоваровОтПокупателяТовары.Номенклатура,
	ЗначенияСвойствОбъектов.Значение

ИМЕЮЩИЕ
	КОЛИЧЕСТВО(ВозвратТоваровОтПокупателяТовары.Ссылка) >= ВЫБОР
		КОГДА &КоличествоВозвратов = 0
			ТОГДА 3
		ИНАЧЕ &КоличествоВозвратов
	КОНЕЦ
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ПоследниеВозвраты.Номенклатура КАК Номенклатура,
	ТЗНоменклатуры.TOPGP КАК TOPGP,
	ПоследниеВозвраты.Реализация КАК Реализация,
	ПоследниеВозвраты.Возврат КАК Возврат,
	ПоследниеВозвраты.Склад КАК Склад
ИЗ
	ТЗНоменклатуры КАК ТЗНоменклатуры
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследниеВозвраты КАК ПоследниеВозвраты
		ПО ТЗНоменклатуры.Номенклатура = ПоследниеВозвраты.Номенклатура

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

Вакансии

Программист 1С
Новороссийск
зарплата от 70 000 руб.
Полный день

Ведущий программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день

Специалист 1 категории (Программист 1С ФЗД)
Фрязино
зарплата от 110 000 руб.
Полный день

Специалист 1 категории (Программист 1С)
Фрязино
зарплата от 110 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству