Параметр в запросе, как правильно сделать

1. Nikita890 14.08.19 05:59 Сейчас в теме
Добрый день всем. Нужно сделать чтобы при установленной галочке в документе перемещениеЗапасов у номенклатуры стиралась характеристика. При проведении документа для таблицы движений делается запрос, вот его кусочек:
ВЫБРАТЬ
	|	ТаблицаЗапасы.НомерСтроки,
	|	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход),
	|	ТаблицаЗапасы.Период,
	|	ТаблицаЗапасы.КоррСтруктурнаяЕдиница,
	|	ТаблицаЗапасы.КоррЯчейка,
	|	ТаблицаЗапасы.Организация,
	|	ТаблицаЗапасы.Номенклатура,
	|	ТаблицаЗапасы.Характеристика,
	|	ТаблицаЗапасы.Партия,
	|	ТаблицаЗапасы.Количество
Показать


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

Почему то в таблицу движений, вместо 4 строк передается 1525 - дублируются они, а если вместо моей конструкции на месте ТаблицаЗапасы.Характеристика оставить NULL, то получается как надо, расходуются 2 строчки с характеристикой, а приходуются без них. Надеюсь понятно объяснил)
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Fox-trot 157 14.08.19 06:13 Сейчас в теме
(1) подозреваю, что есть еще код, который ты не огласил, но который таки влияет = создает эти лишние движения
Nikita890; +1 Ответить
3. Nikita890 14.08.19 06:15 Сейчас в теме
Ну весь запрос выглядит так:
Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = СтруктураДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ТаблицаЗапасы.НомерСтроки КАК НомерСтроки,
	|	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
	|	ТаблицаЗапасы.Период КАК Период,
	|	ТаблицаЗапасы.СтруктурнаяЕдиница КАК СтруктурнаяЕдиница,
	|	ТаблицаЗапасы.Ячейка КАК Ячейка,
	|	ТаблицаЗапасы.Организация КАК Организация,
	|	ТаблицаЗапасы.Номенклатура КАК Номенклатура,
	|	ТаблицаЗапасы.Характеристика КАК Характеристика,
	|	ТаблицаЗапасы.Партия КАК Партия,
	|	ТаблицаЗапасы.Количество КАК Количество
	|ИЗ
	|	ВременнаяТаблицаЗапасы КАК ТаблицаЗапасы,
	|	Документ.ПеремещениеЗапасов КАК ПеремещениеЗапасов
	|ГДЕ
	|	НЕ ТаблицаЗапасы.ОрдерныйСклад
	|	И НЕ ТаблицаЗапасы.ВозвратИзРозницыСуммовойУчет
	|	И НЕ ТаблицаЗапасы.ПеремещениеВРозницеСуммовойУчет
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ТаблицаЗапасы.НомерСтроки,
	|	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход),
	|	ТаблицаЗапасы.Период,
	|	ТаблицаЗапасы.КоррСтруктурнаяЕдиница,
	|	ТаблицаЗапасы.КоррЯчейка,
	|	ТаблицаЗапасы.Организация,
	|	ТаблицаЗапасы.Номенклатура,
	|	ТаблицаЗапасы.Характеристика,
	|	ТаблицаЗапасы.Партия,
	|	ТаблицаЗапасы.Количество
	|ИЗ
	|	ВременнаяТаблицаЗапасы КАК ТаблицаЗапасы,
	|	Документ.ПеремещениеЗапасов КАК ПеремещениеЗапасов
	|ГДЕ
	|	ТаблицаЗапасы.Период < ТаблицаЗапасы.ДатаОбновленияНаРелиз_1_2_1
	|	И НЕ ТаблицаЗапасы.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПеремещениеЗапасов.СписаниеНаРасходы)
	|	И НЕ ТаблицаЗапасы.ПеремещениеВРозницуСуммовойУчет
	|	И НЕ ТаблицаЗапасы.ПеремещениеВРозницеСуммовойУчет
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ТаблицаЗапасы.НомерСтроки,
	|	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход),
	|	ТаблицаЗапасы.Период,
	|	ТаблицаЗапасы.КоррСтруктурнаяЕдиница,
	|	ТаблицаЗапасы.КоррЯчейка,
	|	ТаблицаЗапасы.Организация,
	|	ТаблицаЗапасы.Номенклатура,
	|	ВЫБОР
	|		КОГДА &СтеретьХарактеристики = ЛОЖЬ
	|			ТОГДА ТаблицаЗапасы.Характеристика
	|		ИНАЧЕ NULL
	|	КОНЕЦ,
	|	ТаблицаЗапасы.Партия,
	|	ТаблицаЗапасы.Количество
	|ИЗ
	|	ВременнаяТаблицаЗапасы КАК ТаблицаЗапасы,
	|	Документ.ПеремещениеЗапасов КАК ПеремещениеЗапасов
	|ГДЕ
	|	НЕ ТаблицаЗапасы.КоррОрдерныйСклад
	|	И ТаблицаЗапасы.Период >= ТаблицаЗапасы.ДатаОбновленияНаРелиз_1_2_1
	|	И НЕ ТаблицаЗапасы.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПеремещениеЗапасов.СписаниеНаРасходы)
	|	И НЕ ТаблицаЗапасы.ПеремещениеВРозницуСуммовойУчет
	|	И НЕ ТаблицаЗапасы.ПеремещениеВРозницеСуммовойУчет
	|	И ПеремещениеЗапасов.СтеретьХарактеристики = &СтеретьХарактеристики";
    Запрос.УстановитьПараметр("СтеретьХарактеристики", ДокументСсылкаПеремещениеЗапасов.СтеретьХарактеристики);		
	РезультатЗапроса = Запрос.Выполнить();
Показать
4. Nikita890 14.08.19 06:37 Сейчас в теме
Убрал вот это
|    И ПеремещениеЗапасов.СтеретьХарактеристики = &СтеретьХарактеристики";

и стало нормально
5. el07 1 14.08.19 09:36 Сейчас в теме
" | ВременнаяТаблицаЗапасы КАК ТаблицаЗапасы,
| Документ.ПеремещениеЗапасов КАК ПеремещениеЗапасов"

не поняла как соединяются эти 2 таблицы?
Потому, наверное и множатся строки, что нет соединения, а когда убрали условие на 2-ю таблицу, множиться перестает.
Nikita890; +1 Ответить
6. Nikita890 14.08.19 10:04 Сейчас в теме
(5)Ну да, в этом ошибка и была
7. lefthander 14.08.19 10:13 Сейчас в теме
(6)| Документ.ПеремещениеЗапасов КАК ПеремещениеЗапасов - вообще все такие строки можно убрать. Вы нигде в запросе не обращаетесь к документу
Nikita890; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот