Запрос с обязательным и не обязательным условием
Необходимо настроить связи между двумя таблицами По Номенклатуре Количеству и Цене
Номенклатура обязательная связь (без неё никак) :
Количество и цена не обязательные (есть хорошо нет ну черт с ними)
Можно ли это реализовать?
пробовал вот такую конструкцию чето не катит ))))
Номенклатура обязательная связь (без неё никак) :
ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
Количество и цена не обязательные (есть хорошо нет ну черт с ними)
ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
Можно ли это реализовать?
пробовал вот такую конструкцию чето не катит ))))
ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура И
ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
ИЛИ ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
По теме из базы знаний
- Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика
- Загрузка чеков ФНС в документы 1С:БП, 1С:УНФ, 1С:ERP, 1С:КА и 1С:УТ
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Как читать чужой код? Часть 3. Разбор и доработка запросов
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
И (ВЫБОР КОГДА ВТ_ДаннПоставщика.Количество <> NULL ТОГДА
ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
ИНАЧЕ ИСТИНА
КОНЕЦ)
Как-то так попробуй в связи прописать. сравнение на null возможно надо по-другому написать, но смысл должен быть понятен
собственно запрос вот такой
ВЫБРАТЬ
ДанныеПоставщика.ЗагружаемыйАртикул КАК Артикул,
ДанныеПоставщика.Номенклатура,
ДанныеПоставщика.Количество,
ДанныеПоставщика.Цена
ПОМЕСТИТЬ ВТ_ДаннПоставщика
ИЗ
&ДанныеПоставщика КАК ДанныеПоставщика
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДанныеИзЗаказа.АртикулЗаказано,
ДанныеИзЗаказа.НоменклатураЗаказано,
ДанныеИзЗаказа.КоличествоЗаказано,
ДанныеИзЗаказа.ЦенаЗаказано,
ЕСТЬNULL(ДанныеИзЗаказа.НомерСтрокиДокумента, 0) КАК НомерСтрокиДокумента
ПОМЕСТИТЬ ВТ_ДаннЗаказа
ИЗ
&ДанныеИзЗаказа КАК ДанныеИзЗаказа
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_ДаннЗаказа.АртикулЗаказано КАК АртикулЗаказано,
ВТ_ДаннЗаказа.НоменклатураЗаказано КАК НоменклатураЗаказано,
ВТ_ДаннЗаказа.КоличествоЗаказано КАК КоличествоЗаказано,
ВТ_ДаннЗаказа.ЦенаЗаказано КАК ЦенаЗаказано,
ВТ_ДаннПоставщика.Артикул КАК АртикулПоставщика,
ВТ_ДаннПоставщика.Номенклатура КАК НоменклатураПоставщика,
ВТ_ДаннПоставщика.Количество КАК КоличествоПоставщика,
ВТ_ДаннПоставщика.Цена КАК ЦенаПоставщика,
ВЫБОР
КОГДА ЕСТЬNULL(ВТ_ДаннЗаказа.АртикулЗаказано, "") <> ЕСТЬNULL(ВТ_ДаннПоставщика.Артикул, "")
ТОГДА ИСТИНА
КОНЕЦ КАК АртикулРасхождения,
ЕСТЬNULL(ВТ_ДаннЗаказа.ЦенаЗаказано, 0) - ЕСТЬNULL(ВТ_ДаннПоставщика.Цена, 0) КАК ЦенаРасхождения,
ЕСТЬNULL(ВТ_ДаннЗаказа.КоличествоЗаказано, 0) - ЕСТЬNULL(ВТ_ДаннПоставщика.Количество, 0) КАК КоличествоРасхождения,
ВТ_ДаннЗаказа.НомерСтрокиДокумента
ПОМЕСТИТЬ ВТ_Итоговая
ИЗ
ВТ_ДаннЗаказа КАК ВТ_ДаннЗаказа
ПОЛНОЕ СОЕДИНЕНИЕ ВТ_ДаннПоставщика КАК ВТ_ДаннПоставщика
ПО ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_Итоговая.АртикулЗаказано КАК АртикулЗаказано,
ВТ_Итоговая.НоменклатураЗаказано,
ВТ_Итоговая.КоличествоЗаказано КАК КоличествоЗаказано,
ВТ_Итоговая.ЦенаЗаказано КАК ЦенаЗаказано,
ВТ_Итоговая.АртикулПоставщика КАК АртикулПоставщика,
ВТ_Итоговая.НоменклатураПоставщика,
ВТ_Итоговая.КоличествоПоставщика КАК КоличествоПоставщика,
ВТ_Итоговая.ЦенаПоставщика,
ВТ_Итоговая.АртикулРасхождения,
ВТ_Итоговая.ЦенаРасхождения КАК ЦенаРасхождения,
ВТ_Итоговая.КоличествоРасхождения КАК КоличествоРасхождения,
ВЫБОР
КОГДА ВТ_Итоговая.АртикулРасхождения
ТОГДА ИСТИНА
КОГДА ВТ_Итоговая.КоличествоРасхождения <> 0
ТОГДА ИСТИНА
КОГДА ВТ_Итоговая.ЦенаРасхождения <> 0
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьРасхождения,
ВТ_Итоговая.НомерСтрокиДокумента КАК НомерСтрокиДокумента
ИЗ
ВТ_Итоговая КАК ВТ_Итоговая
УПОРЯДОЧИТЬ ПО
НомерСтрокиДокумента,
АртикулЗаказано
Показать
Вот там где связь:
надо долепить ещё и
ПОЛНОЕ СОЕДИНЕНИЕ ВТ_ДаннПоставщика КАК ВТ_ДаннПоставщика
ПО ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
надо долепить ещё и
ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
ИЛИ ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
(13)
Значит через скобки тоже не работает, делал так:
рете, 1С убирает только те скобки, которые не играют роли приоритета. Скопируйте текст ниже, отформатируйте конструктором и убедитесь.
Значит через скобки тоже не работает, делал так:
(ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена) ИЛИ
(ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество) ИЛИ
(ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена) ИЛИ
(ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура)
Показать
Смысл в том что я не могу наложить одновременно несколько условий мне нужно гибкое применение в этом случае одно условие в этом 3 условия что то типо этого
но тоже не работает
ИЗ
ВТ_ДаннЗаказа КАК ВТ_ДаннЗаказа
ПОЛНОЕ СОЕДИНЕНИЕ ВТ_ДаннПоставщика КАК ВТ_ДаннПоставщика
ПО (ВЫБОР
КОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
ТОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
КОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
ТОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
И ВТ_ДаннЗаказа.КоличествоЗаказано = ВТ_ДаннПоставщика.Количество
КОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
ТОГДА ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
И ВТ_ДаннЗаказа.ЦенаЗаказано = ВТ_ДаннПоставщика.Цена
ИНАЧЕ ВТ_ДаннЗаказа.НоменклатураЗаказано = ВТ_ДаннПоставщика.Номенклатура
КОНЕЦ)
;
Показатьно тоже не работает
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот