1. den_vrn 7 12.08.19 16:44 Сейчас в теме

Запрос с обязательным и не обязательным условием

Необходимо настроить связи между двумя таблицами По Номенклатуре Количеству и Цене

Номенклатура обязательная связь (без неё никак) :
ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура


Количество и цена не обязательные (есть хорошо нет ну черт с ними)

ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена



Можно ли это реализовать?

пробовал вот такую конструкцию чето не катит ))))

ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура И
ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
	ИЛИ ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
Ответы
Избранное Подписка Сортировка: Древо
5. Fox-trot 93 12.08.19 17:28 Сейчас в теме
(1) количество и все что хочется сравнить используй в секции Упорядочить типа КоличествоЗаказано = Количество УБЫВ
6. den_vrn 7 13.08.19 07:59 Сейчас в теме
(5) пробовал но в моем случае не прокатывает и конструкция получается
УПОРЯДОЧИТЬ ПО
	|	НомерСтрокиДокумента,
	|	АртикулЗаказано,
	|	КоличествоЗаказано,
	|	КоличествоПоставщика,
	|	ЦенаЗаказано,
	|	ЦенаРасхождения
2. aka Любитель XML 12.08.19 17:17 Сейчас в теме
И (ВЫБОР КОГДА ВТ_ДаннПоставщика.Количество <> NULL ТОГДА
ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
ИНАЧЕ ИСТИНА
КОНЕЦ)


Как-то так попробуй в связи прописать. сравнение на null возможно надо по-другому написать, но смысл должен быть понятен
3. antz 12.08.19 17:19 Сейчас в теме
(2) С null'ом сравнивать нельзя :)
4. aka Любитель XML 12.08.19 17:22 Сейчас в теме
(3) значит ВЫБОР КОГДА ЕСТЬNULL(ВТ_ДаннПоставщика.Количество,0) <> 0
7. den_vrn 7 13.08.19 08:01 Сейчас в теме
С нулами все ОК ))) они во первых обрабатывется во временных таблицах во вторых вероятность: ЕСТЬNULL только если данных вообще нет.
8. den_vrn 7 13.08.19 08:02 Сейчас в теме
собственно запрос вот такой



ВЫБРАТЬ
	ДанныеПоставщика.ЗагружаемыйАртикул КАК Артикул,
	ДанныеПоставщика.Номенклатура,
	ДанныеПоставщика.Количество,
	ДанныеПоставщика.Цена
ПОМЕСТИТЬ ВТ_ДаннПоставщика
ИЗ
	&ДанныеПоставщика КАК ДанныеПоставщика
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДанныеИзЗаказа.АртикулЗаказано,
	ДанныеИзЗаказа.НоменклатураЗаказано,
	ДанныеИзЗаказа.КоличествоЗаказано,
	ДанныеИзЗаказа.ЦенаЗаказано,
	ЕСТЬNULL(ДанныеИзЗаказа.НомерСтрокиДокумента, 0) КАК НомерСтрокиДокумента
ПОМЕСТИТЬ ВТ_ДаннЗаказа
ИЗ
	&ДанныеИзЗаказа КАК ДанныеИзЗаказа
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Итоговая.АртикулЗаказано КАК АртикулЗаказано,
	ВТ_Итоговая.НоменклатураЗаказано,
	ВТ_Итоговая.КоличествоЗаказано КАК КоличествоЗаказано,
	ВТ_Итоговая.ЦенаЗаказано КАК ЦенаЗаказано,
	ВТ_Итоговая.АртикулПоставщика КАК АртикулПоставщика,
	ВТ_Итоговая.НоменклатураПоставщика,
	ВТ_Итоговая.КоличествоПоставщика КАК КоличествоПоставщика,
	ВТ_Итоговая.ЦенаПоставщика,
	ВТ_Итоговая.АртикулРасхождения,
	ВТ_Итоговая.ЦенаРасхождения КАК ЦенаРасхождения,
	ВТ_Итоговая.КоличествоРасхождения КАК КоличествоРасхождения,
	ВЫБОР
		КОГДА ВТ_Итоговая.АртикулРасхождения
			ТОГДА ИСТИНА
		КОГДА ВТ_Итоговая.КоличествоРасхождения <> 0
			ТОГДА ИСТИНА
		КОГДА ВТ_Итоговая.ЦенаРасхождения <> 0
			ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК ЕстьРасхождения,
	ВТ_Итоговая.НомерСтрокиДокумента КАК НомерСтрокиДокумента
ИЗ
	ВТ_Итоговая КАК ВТ_Итоговая

УПОРЯДОЧИТЬ ПО
	НомерСтрокиДокумента,
	АртикулЗаказано
Показать
9. den_vrn 7 13.08.19 08:05 Сейчас в теме
Вот там где связь:
ПОЛНОЕ СОЕДИНЕНИЕ ВТ_ДаннПоставщика КАК ВТ_ДаннПоставщика 
ПО ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура 

надо долепить ещё и

ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество 
ИЛИ ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
10. catena 100 13.08.19 08:20 Сейчас в теме
(9)Сколько будет 2*2+2?
ИЛИ - логическое сложение.
И - логическое умножение.
Расставьте скобки и будет вам щастье.
12. den_vrn 7 13.08.19 09:03 Сейчас в теме
(10) 1С-ка сама скобки убирает в связях не прокатывает
13. catena 100 13.08.19 10:20 Сейчас в теме
(12)
1С-ка сама скобки убирает в связях не прокатывает
Вы врете, 1С убирает только те скобки, которые не играют роли приоритета. Скопируйте текст ниже, отформатируйте конструктором и убедитесь.

ВЫБРАТЬ
	ИСТИНА
		И (ИСТИНА
			ИЛИ ЛОЖЬ) КАК Поле1
14. den_vrn 7 13.08.19 10:59 Сейчас в теме
(13)
рете, 1С убирает только те скобки, которые не играют роли приоритета. Скопируйте текст ниже, отформатируйте конструктором и убедитесь.


Значит через скобки тоже не работает, делал так:

(ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура 
  И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
  И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена)                             ИЛИ

(ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура 
  И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество)        ИЛИ

(ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура 
  И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена)                             ИЛИ

(ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура)		
Показать
15. catena 100 14.08.19 06:19 Сейчас в теме
(14)Ну, значит нет там совпадений. Все работает.
Прикрепленные файлы:
11. den_vrn 7 13.08.19 08:33 Сейчас в теме
Смысл в том что я не могу наложить одновременно несколько условий мне нужно гибкое применение в этом случае одно условие в этом 3 условия что то типо этого

ИЗ
	ВТ_ДаннЗаказа КАК ВТ_ДаннЗаказа
		ПОЛНОЕ СОЕДИНЕНИЕ ВТ_ДаннПоставщика КАК ВТ_ДаннПоставщика
		ПО (ВЫБОР
				КОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
						И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
						И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
					ТОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
							И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
							И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
				КОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
						И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
					ТОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
							И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
				КОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
						И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
					ТОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
							И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
				ИНАЧЕ ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
			КОНЕЦ)
;
Показать


но тоже не работает
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

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

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

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

Программисты 1С УТ / БУЗ/ЗУП / БИТ ФИНАНС
Москва
зарплата от 100 000 руб. до 180 000 руб.
Полный день