В БП3.0 в документе РозничнаяПродажа фиксируются пробитые на кассе чеки, причем если чек пробит по безналу то есть табличная часть Оплата с одной строкой, а если за нал, то этой табличной части вообще нет.
Для составления реестра чеков и подсчета нала/безнала я составил запрос:

```1c
    "ВЫБРАТЬ
    | РозничнаяПродажа.Ссылка КАК Ссылка,
    | РозничнаяПродажа.Номер КАК Номер,
    | РозничнаяПродажа.Дата КАК Дата,
    | РозничнаяПродажа.СуммаДокумента КАК Сумма,
    | КОЛИЧЕСТВО(РозничнаяПродажа.Оплата.НомерСтроки) КАК НомерСтроки
    |ИЗ
    | Документ.РозничнаяПродажа КАК РозничнаяПродажа
    |ГДЕ
    | РозничнаяПродажа.Дата МЕЖДУ &НачДата И &КонДата
    |УПОРЯДОЧИТЬ ПО
    | РозничнаяПродажа.Дата"
```

согласно которого считал, что при НомерСтроки равном 0 будут чеки за нал, а при НомерСтроки не равном 0, а равном 1 - безнал.
Так советовали в https://forum.infostart.ru/forum9/topic127660/
Этот НомерСтроки я для теста вывожу через Сообщить.
но почему-то у всех чеков Строка(КодСимвола(ВыборкаДокументов.НомерСтроки)) равен -1 Т.е. минус один. Т.е.НомерСтроки не принимает числовых значений.

Может ли кто-то объяснить, почему так получается, и как тогда засечь отсутствие табличной части Оплата у чека?
---
но почему-то у всех чеков Строка(КодСимвола(ВыборкаДокументов.НомерСтроки)) равен -1 Т.е. минус один.
Строка(КодСимвола(ВыборкаДокументов.НомерСтроки)) это очень смело, только зачем?

А -1 в данном случае получается в этой формуле из null.
В запросе поле
КОЛИЧЕСТВО(РозничнаяПродажа.Оплата.НомерСтроки) КАК НомерСтроки
пристыковывает табличную часть (как данные отдельного результата запроса), как внутренний результат запроса.
Соответственной в основном результата запроса там всегда будет null. Чтобы получить данные, нужно получить выборку из внутреннего результата запроса.

Но все можно в запросе получить:

```1c
    "ВЫБРАТЬ
    | РозничнаяПродажа.Ссылка КАК Ссылка,
    | РозничнаяПродажа.Номер КАК Номер,
    | РозничнаяПродажа.Дата КАК Дата,
    | РозничнаяПродажа.СуммаДокумента КАК Сумма,
    | НЕ РозничнаяПродажаОплата.Ссылка ЕСТЬ NULL КАК ЕстьОплата
    |ИЗ
    | Документ.РозничнаяПродажа КАК РозничнаяПродажа
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РозничнаяПродажа.Оплата КАК РозничнаяПродажаОплата
    | ПО (РозничнаяПродажа.Ссылка = РозничнаяПродажаОплата.Ссылка)
    |ГДЕ
    | РозничнаяПродажа.Дата МЕЖДУ &НачДата И &КонДата
    |УПОРЯДОЧИТЬ ПО
    | РозничнаяПродажа.Дата"
```
---
но почему-то у всех чеков Строка(КодСимвола(ВыборкаДокументов.НомерСтроки)) равен -1 Т.е. минус один.
Строка(КодСимвола(ВыборкаДокументов.НомерСтроки)) это очень смело, только зачем?

А -1 в данном случае получается в этой формуле из null.
В запросе поле
КОЛИЧЕСТВО(РозничнаяПродажа.Оплата.НомерСтроки) КАК НомерСтроки
пристыковывает табличную часть (как данные отдельного результата запроса), как внутренний результат запроса.
Соответственной в основном результата запроса там всегда будет null. Чтобы получить данные, нужно получить выборку из внутреннего результата запроса.

Но все можно в запросе получить:

```1c
    "ВЫБРАТЬ
    | РозничнаяПродажа.Ссылка КАК Ссылка,
    | РозничнаяПродажа.Номер КАК Номер,
    | РозничнаяПродажа.Дата КАК Дата,
    | РозничнаяПродажа.СуммаДокумента КАК Сумма,
    | НЕ РозничнаяПродажаОплата.Ссылка ЕСТЬ NULL КАК ЕстьОплата
    |ИЗ
    | Документ.РозничнаяПродажа КАК РозничнаяПродажа
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РозничнаяПродажа.Оплата КАК РозничнаяПродажаОплата
    | ПО (РозничнаяПродажа.Ссылка = РозничнаяПродажаОплата.Ссылка)
    |ГДЕ
    | РозничнаяПродажа.Дата МЕЖДУ &НачДата И &КонДата
    |УПОРЯДОЧИТЬ ПО
    | РозничнаяПродажа.Дата"
```
---
а дубли не появятся, если строк Оплата несколько?
если на выходе запроса нужны все документы, тогда предлагаю заменить строку

```1c
    НЕ РозничнаяПродажаОплата.Ссылка ЕСТЬ NULL КАК ЕстьОплата
```
на

```1c
    РозничнаяПродажа.Ссылка в (ВЫБРАТЬ различные Ссылка ИЗ Документ.РозничнаяПродажа.Оплата) КАК ЕстьОплата
```
---
а дубли не появятся, если строк Оплата несколько?
Появятся. Можно просто сгруппировать по всем полям.
---
а если, то что написал, человек - это заготовка для более сложного запроса?
---
а может это вообще будет не запрос.... и т.д. и т.п.
Будет нужно что-то другое, будет и ответ другим.
---
сделать левое соединение с
Документ.РозничнаяПродажа.Оплата КАК Оплата
ПО Оплата.Ссылка = РозничнаяПродажа.Ссылка
и в условие ГДЕ добавить
Оплата.Ссылка Есть Null