Добрый день. Начинающий программист. Попробовал решить задачу и вроде бы всё верно, но руководитель говорит, что есть ошибка. Я уже голову сломал, но не могу её найти. Вроде результат верный получается. Хотелось бы услышать мнения грамотных людей, может быть Вы сможете мне помочь?:

на входе задаем параметры:
период - начало ___ дата
период - окончание ___ дата
ТОР GP - ___ EX

Система анализирует кол-во поступлений товара с привязкой по заданному ТОПУ, и если кол-во документов "поступлений товара" больше 1, за указанный период времени. На выходе получаем КОЛОНКИ:

1. бренд (сортировка от А до Я)
2. код
3. номенклатура
4. сумма (по кол-ву) закупаемого товара
5. сумма (по кол-ву) проданного товара. (продажа-возврат, не равно продажа) ЕСЛИ ПРОДАЖ НЕ БЫЛО, ТО = ПУСТО.
6. TOP GP

Вот мой код:

```1c
    ВЫБРАТЬ
    Закупки.Номенклатура КАК Номенклатура,
    СУММА(Закупки.Количество) КАК КоличествоЗакупаемогоТовара,
    ЗначенияСвойствОбъектов.Свойство КАК TOPGP
    ПОМЕСТИТЬ Закупки
    ИЗ
    РегистрНакопления.Закупки КАК Закупки
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ПО Закупки.Номенклатура = ЗначенияСвойствОбъектов.Объект
    ГДЕ
    Закупки.Период МЕЖДУ &ПериодНачало И &ПериодОкончание
    И ЗначенияСвойствОбъектов.Значение = &TOPGP
    И Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг

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

    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг) > 1
    ;

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Закупки.Номенклатура.Бренд КАК Бренд,
    Закупки.Номенклатура.Код КАК Код,
    Закупки.Номенклатура КАК Номенклатура,
    Закупки.КоличествоЗакупаемогоТовара КАК КоличествоЗакупаемогоТовара,
    Продажи.КоличествоПроданногоТовара КАК КоличествоПроданногоТовара,
    Закупки.TOPGP КАК TOPGP
    ИЗ
    Закупки КАК Закупки
    ЛЕВОЕ СОЕДИНЕНИЕ Продажи КАК Продажи
    ПО Закупки.Номенклатура = Продажи.Номенклатура

    УПОРЯДОЧИТЬ ПО
    НоменклатураБренд
```
---
Нашёл ошибку. Нужно

```1c
    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг) > 1
```

заменить на

```1c
    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Закупки.Регистратор) > 1
```

, так как если будет Поступление товаров и услуг, от которого пойдет более одного движения в Регистр.Закупки с TOPGP, то каждое из этих движений увеличит результат функции
```1c
    КОЛИЧЕСТВО(Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг)
```
. То есть, документ будет один, а движений несколько. А в задаче условие "и если кол-во документов "поступлений товара" больше 1", нужно считать именно документы Поступления, а не сами поступления.

```1c
    ВЫБРАТЬ
    Закупки.Номенклатура КАК Номенклатура,
    СУММА(Закупки.Количество) КАК КоличествоЗакупаемогоТовара
    ПОМЕСТИТЬ Закупки
    ИЗ
    РегистрНакопления.Закупки КАК Закупки
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ПО Закупки.Номенклатура = ЗначенияСвойствОбъектов.Объект
    ГДЕ
    Закупки.Период МЕЖДУ &ПериодНачало И &ПериодОкончание
    И ЗначенияСвойствОбъектов.Значение = &TOPGP
    И Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг

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

    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Закупки.Регистратор) > 1
    ;

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Закупки.Номенклатура.Бренд КАК Бренд,
    Закупки.Номенклатура.Код КАК Код,
    Закупки.Номенклатура КАК Номенклатура,
    Закупки.КоличествоЗакупаемогоТовара КАК КоличествоЗакупаемогоТовара,
    Продажи.КоличествоПроданногоТовара КАК КоличествоПроданногоТовара
    ИЗ
    Закупки КАК Закупки
    ЛЕВОЕ СОЕДИНЕНИЕ Продажи КАК Продажи
    ПО Закупки.Номенклатура = Продажи.Номенклатура

    УПОРЯДОЧИТЬ ПО
    Бренд
```
---
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг) > 1 - объясните смысл этого условия ?
---
и если кол-во документов "поступлений товара" больше 1
---
делайте Выбор Когда Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг Тогда 1 Иначе 0 Конец КАК КоличествоДокументовПоступления

и затем анализируйте это значение
---
При условии
```1c
    Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
```
 у меня останутся ТОЛЬКО документы ПоступлениеТоваровУслуг, следовательно в колонке КоличествоДокументовПоступления будут одни единицы. И чем в таком случае эта информация мне поможет? А если же убрать условие
```1c
    Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
```
 , то выведутся и остальные документы регистраторы, которые мне вовсе не нужны.
Поэтому условие
```1c
    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг) > 1
```
 пока самое оптимальное, так как я сверялся с РН и если за указанный период было меньше двух документов ПоступлениеТоваровУслуг, то тогда в учёт эти данные не брались.
---
будут одни единицы - суммируйте при группировке - будет количество регистраторов
---
Сделал по вашему совету. Результат получился идентичный моему результату плюс даже время одинаковое было затрачено.

```1c
    ВЫБРАТЬ
    Закупки.Номенклатура КАК Номенклатура,
    СУММА(Закупки.Количество) КАК КоличествоЗакупаемогоТовара,
    ЗначенияСвойствОбъектов.Свойство КАК TOPGP,
    СУММА(ВЫБОР
    КОГДА Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
    ТОГДА 1
    ИНАЧЕ 0
    КОНЕЦ) КАК КоличествоДокументовПоступления
    ПОМЕСТИТЬ Закупки
    ИЗ
    РегистрНакопления.Закупки КАК Закупки
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ПО Закупки.Номенклатура = ЗначенияСвойствОбъектов.Объект
    ГДЕ
    Закупки.Период МЕЖДУ &ПериодНачало И &ПериодОкончание
    И ЗначенияСвойствОбъектов.Значение = &TOPGP

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

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Закупки.Номенклатура.Бренд КАК Бренд,
    Закупки.Номенклатура.Код КАК Код,
    Закупки.Номенклатура КАК Номенклатура,
    Закупки.КоличествоЗакупаемогоТовара КАК КоличествоЗакупаемогоТовара,
    Продажи.КоличествоПроданногоТовара КАК КоличествоПроданногоТовара,
    Закупки.TOPGP КАК TOPGP
    ИЗ
    Закупки КАК Закупки
    ЛЕВОЕ СОЕДИНЕНИЕ Продажи КАК Продажи
    ПО Закупки.Номенклатура = Продажи.Номенклатура
    ГДЕ
    Закупки.КоличествоДокументовПоступления > 1

    УПОРЯДОЧИТЬ ПО
    Бренд
```

Пробовал
```1c
    ГДЕ
    Закупки.КоличествоДокументовПоступления > 1
```
 заменить на
```1c
    ИМЕЮЩИЕ
    СУММА(ВЫБОР
    КОГДА Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
    ТОГДА 1
    ИНАЧЕ 0
    КОНЕЦ) > 1
```

но в таком случае больше затрачивается времени на вычисление результата.
---
Вы сможете мне помочь?чем помочь-то?
---
руководитель говорит, что есть ошибка.
не могу её найти
---
так - спросите руководителя, что ему надо.
(я ошибки не вижу, кроме
```1c
    Что за конфига?
    у меня (в УПП) нет поля "Бренд"
    [1C-CODE]Закупки.Номенклатура.Бренд КАК Бренд
```
,
[/1C-CODE])
---
Ну говорит мол, ищи сам.
Что за конфига? Trade (10.3.29.1)
---
Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг - возвращает ИСТИНА когда тип регистратора ПоступлениеТоваровУслуг иначе - ЛОЖЬ
---
верно,мне это и нужно, чтобы из всех документов, которые есть в Закупки.Регистратор вывел только ПоступлениеТоваровУслуг
---
Нашёл ошибку. Нужно

```1c
    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг) > 1
```

заменить на

```1c
    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Закупки.Регистратор) > 1
```

, так как если будет Поступление товаров и услуг, от которого пойдет более одного движения в Регистр.Закупки с TOPGP, то каждое из этих движений увеличит результат функции
```1c
    КОЛИЧЕСТВО(Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг)
```
. То есть, документ будет один, а движений несколько. А в задаче условие "и если кол-во документов "поступлений товара" больше 1", нужно считать именно документы Поступления, а не сами поступления.

```1c
    ВЫБРАТЬ
    Закупки.Номенклатура КАК Номенклатура,
    СУММА(Закупки.Количество) КАК КоличествоЗакупаемогоТовара
    ПОМЕСТИТЬ Закупки
    ИЗ
    РегистрНакопления.Закупки КАК Закупки
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ПО Закупки.Номенклатура = ЗначенияСвойствОбъектов.Объект
    ГДЕ
    Закупки.Период МЕЖДУ &ПериодНачало И &ПериодОкончание
    И ЗначенияСвойствОбъектов.Значение = &TOPGP
    И Закупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг

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

    ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Закупки.Регистратор) > 1
    ;

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Закупки.Номенклатура.Бренд КАК Бренд,
    Закупки.Номенклатура.Код КАК Код,
    Закупки.Номенклатура КАК Номенклатура,
    Закупки.КоличествоЗакупаемогоТовара КАК КоличествоЗакупаемогоТовара,
    Продажи.КоличествоПроданногоТовара КАК КоличествоПроданногоТовара
    ИЗ
    Закупки КАК Закупки
    ЛЕВОЕ СОЕДИНЕНИЕ Продажи КАК Продажи
    ПО Закупки.Номенклатура = Продажи.Номенклатура

    УПОРЯДОЧИТЬ ПО
    Бренд
```