Приветствую всех коллег! Прошу помочь кто сможет.

Я начинающий программист. Поставлена задача: Есть план продаж товара по акционной цене по контрагенту. Надо проверить количество проданного товара по этой цене при создании нового заказа. Если товар по этой цене этому контрагенту продан, то сообщить об этом пользователю и не записывать заказ. Это я сделал, но не сделал проверку по контрагенту, если он не участвует в акции и новый заказ надо записать. Не могу сообразить как это сделать в запросе.
Работаю в УПП, процедура выполняется в общем модуле, затем передается в модуль объекта (ЗаказПокупателя)
Вот текст запроса:

```1c
    ВЫБРАТЬ
    &ДатаЗаказа,
    &Контрагент,
    ТЗПоЗаказуПокупателя.Номенклатура,
    &Подразделение,
    ТЗПоЗаказуПокупателя.Цена КАК ЦенаПоЗаказу,
    ТЗПоЗаказуПокупателя.Количество * ТЗПоЗаказуПокупателя.Коэффициент КАК КоличествоИзЗаказа
    ПОМЕСТИТЬ ВТПокупатель
    ИЗ
    &ТЗПоЗаказуПокупателя КАК ТЗПоЗаказуПокупателя
    ;

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслугТовары.Цена,
    РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Коэффициент КАК КоличествоПроданного,
    РеализацияТоваровУслугТовары.Ссылка.Подразделение
    ПОМЕСТИТЬ ВТПоПродажам
    ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Контрагент = &Контрагент
    И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    И РеализацияТоваровУслугТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
    И РеализацияТоваровУслугТовары.Ссылка.Подразделение = &Подразделение
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТАкция.БазовыйПериодНачала,
    ВТАкция.БазовыйПериодОкончания,
    ВТАкция.Подразделение,
    ВТАкция.ЦенаПоАкции,
    ВТАкция.КоличествоНаАкцию,
    ВТАкция.Номенклатура,
    ВТПоПродажам.Цена,
    ВТПоПродажам.КоличествоПроданного,
    ВТАкция.КоличествоНаАкцию - (ЕСТЬNULL(ВТПоПродажам.КоличествоПроданного, 0) + ВТАкция.КоличествоИзЗаказа) КАК КоличествоОсталось
    ИЗ
    ВТАкция КАК ВТАкция
    ЛЕВОЕ СОЕДИНЕНИЕ ВТПоПродажам КАК ВТПоПродажам
    ПО ВТАкция.Номенклатура = ВТПоПродажам.Номенклатура
    И ВТАкция.ЦенаПоАкции = ВТПоПродажам.Цена
    И ВТАкция.Подразделение = ВТПоПродажам.Подразделение
```
---
Добавь свой реквизит с типом булево и делай отбор по этому реквизиту
---
Сообщение было скрыто модератором.
---
1. Для этого есть документ "Установка дополнительных значений продаж". Именно его менеджер создает. Там указывает контрагента, товар и цену по акции для товара. Цена может быть разной для одного товара и контрагента. Движения этого документа записываются в РегистрНакопления - Акц-яАкт-ть.

2. В инете посмотрел там предлагают именно в запросе, правда там проверка на пустую ссылку. Хотя мне не принципиально, можно уже и после запроса.
---
Добавь свой реквизит с типом булево и делай отбор по этому реквизиту
---
Какой именно для этого предлагаете реквизит? Как вариант можно рассмотреть.
---
В итоге так и сделал. Благодарю за подсказку.
---
позволю пару замечаний
1. ВТПоПродажам собирать по документам не корректно, документ может быть сторнирован и по факту продажи нет.
2. При использовании левого соединения надо понимать что без использования ЕСТЬNULL можно получить не то что рассчитывали.
Ну и уже задали вопрос - каким образом отмечается что контрагент участвует в акции?
---
1. Если не будет продаж значит товар не участвовал в акции, его хватает для другого заказа. Пока менеджер про это ничего не говорил.

2. На ЕСТЬNULL вроде все проверил, м.б. только Цену пропустил в первом запросе. А что еще надо проверять?

По поводу контрагента в акции чуть выше ответил.
---
вы факт продажи определяете только наличием документа Реализация, причем этот документ может быть даже не проведен?
Моё мнение подход не корректный.
---
Возможно. Надо посмотреть, какие еще могут доки участвовать в продаже.
---
регистры надо смотреть, а не доки
---
Не совсем понял зачем собирается "ПОМЕСТИТЬ ВТПокупатель" и далее левое соединение по
"И ВТПокупатель.Контрагент = сцбкАкционнаяАктивность.Контрагент
И ВТПокупатель.Номенклатура = сцбкАкционнаяАктивность.Номенклатура".

Если Контрагент всегда один, то сразу фильтр ставить на контрагента и период и прочие статические вещи, а потом уже связывать левым соединением по чем необходимо.