В БП3.0 в документе РозничнаяПродажа фиксируются пробитые на кассе чеки, причем если чек пробит по безналу то есть табличная часть Оплата с одной строкой, а если за нал, то этой табличной части вообще нет.
Для составления реестра чеков и подсчета нала/безнала я составил запрос:
"ВЫБРАТЬ
| РозничнаяПродажа.Ссылка КАК Ссылка,
| РозничнаяПродажа.Номер КАК Номер,
| РозничнаяПродажа.Дата КАК Дата,
| РозничнаяПродажа.СуммаДокумента КАК Сумма,
| КОЛИЧЕСТВО(РозничнаяПродажа.Оплата.НомерСтроки) КАК НомерСтроки
|ИЗ
| Документ.РозничнаяПродажа КАК РозничнаяПродажа
|ГДЕ
| РозничнаяПродажа.Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| РозничнаяПродажа.Дата"
Показать
согласно которого считал, что при НомерСтроки равном 0 будут чеки за нал, а при НомерСтроки не равном 0, а равном 1 - безнал.
Так советовали в https://forum.infostart.ru/forum9/topic127660/ Этот НомерСтроки я для теста вывожу через Сообщить.
но почему-то у всех чеков Строка(КодСимвола(ВыборкаДокументов.НомерСтроки)) равен -1 Т.е. минус один. Т.е.НомерСтроки не принимает числовых значений.
Может ли кто-то объяснить, почему так получается, и как тогда засечь отсутствие табличной части Оплата у чека?
но почему-то у всех чеков Строка(КодСимвола(ВыборкаДокументов.НомерСтроки)) равен -1 Т.е. минус один.
Строка(КодСимвола(ВыборкаДокументов.НомерСтроки)) это очень смело, только зачем?
А -1 в данном случае получается в этой формуле из null.
В запросе поле
КОЛИЧЕСТВО(РозничнаяПродажа.Оплата.НомерСтроки) КАК НомерСтроки пристыковывает табличную часть (как данные отдельного результата запроса), как внутренний результат запроса.
Соответственной в основном результата запроса там всегда будет null. Чтобы получить данные, нужно получить выборку из внутреннего результата запроса.
Но все можно в запросе получить:
"ВЫБРАТЬ
| РозничнаяПродажа.Ссылка КАК Ссылка,
| РозничнаяПродажа.Номер КАК Номер,
| РозничнаяПродажа.Дата КАК Дата,
| РозничнаяПродажа.СуммаДокумента КАК Сумма,
| НЕ РозничнаяПродажаОплата.Ссылка ЕСТЬ NULL КАК ЕстьОплата
|ИЗ
| Документ.РозничнаяПродажа КАК РозничнаяПродажа
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РозничнаяПродажа.Оплата КАК РозничнаяПродажаОплата
| ПО (РозничнаяПродажа.Ссылка = РозничнаяПродажаОплата.Ссылка)
|ГДЕ
| РозничнаяПродажа.Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| РозничнаяПродажа.Дата"
но почему-то у всех чеков Строка(КодСимвола(ВыборкаДокументов.НомерСтроки)) равен -1 Т.е. минус один.
Строка(КодСимвола(ВыборкаДокументов.НомерСтроки)) это очень смело, только зачем?
А -1 в данном случае получается в этой формуле из null.
В запросе поле
КОЛИЧЕСТВО(РозничнаяПродажа.Оплата.НомерСтроки) КАК НомерСтроки пристыковывает табличную часть (как данные отдельного результата запроса), как внутренний результат запроса.
Соответственной в основном результата запроса там всегда будет null. Чтобы получить данные, нужно получить выборку из внутреннего результата запроса.
Но все можно в запросе получить:
"ВЫБРАТЬ
| РозничнаяПродажа.Ссылка КАК Ссылка,
| РозничнаяПродажа.Номер КАК Номер,
| РозничнаяПродажа.Дата КАК Дата,
| РозничнаяПродажа.СуммаДокумента КАК Сумма,
| НЕ РозничнаяПродажаОплата.Ссылка ЕСТЬ NULL КАК ЕстьОплата
|ИЗ
| Документ.РозничнаяПродажа КАК РозничнаяПродажа
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РозничнаяПродажа.Оплата КАК РозничнаяПродажаОплата
| ПО (РозничнаяПродажа.Ссылка = РозничнаяПродажаОплата.Ссылка)
|ГДЕ
| РозничнаяПродажа.Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| РозничнаяПродажа.Дата"
сделать левое соединение с
Документ.РозничнаяПродажа.Оплата КАК Оплата
ПО Оплата.Ссылка = РозничнаяПродажа.Ссылка
и в условие ГДЕ добавить
Оплата.Ссылка Есть Null