Как добавить в отчет СКД дополнительные поля
Во вкладке Наборы данных имеется запрос с названием Чеки, в котором я и добавил нужное поле ДисконтнаяКарта. Так как этот документ уже был в запросе, по этому связи не настраивал. Во вкладке Вычисляемые поля добавил выражение ДисконтнаяКарта <> "". Во Вкладке Ресурсы добавил Сумму дисконтных карт и добавил в выбранные поля. В итоге в отчете я не вижу этого поля ДисконтнаяКарта
Прикрепленные файлы:





По теме из базы знаний
- Как печатать свой отчет СКД прямо из формы типового документа, не изменяя конфигурации? Подробная инструкция на примере
- Как добавить типовую форму для СКД (для начинающих) (1С 8.3, управляемые формы)
- Доработка типового отчета на СКД с помощью расширения
- По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета
- Динамическое добавление полей и ресурсов в отчет на СКД
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6) Я хочу посчитать количество этих значений, а затем во вкладке ресурсы агрегирую, что бы получить сумму используемых дисконтных карт за период. Да возможно я ошибаюсь, но нужно увидеть хоть какой то результат, что бы поиграть с параметрами и найти нужный вариант
По игравшись с запросом, все таки удалось вывести это поле но оно почему то опять пустое. При этом Дисконтные карты в выбранном периоде имеются. В консоле запросов сделал запрос к этому же документу и вывелись ссылки на дисконтные карты. То есть выбранном поле ДисконтныеКарты имеются данные типа ссылка, но почему то они ни как не обрабатываются. Что еще можно сделать, что бы найти ошибку, подскажите
Прикрепленные файлы:

(11) количество различный, а то какая-то ерунда костыльная.
А так начните с простого, а именно просто выведете значения дисконтных карт, может они у Вас вообще в целом нет карт в этих чеках. Помимо этого у Вас вариантов отчетов 5 штук, а какой вариант вы запускаете не понятно.
Я бы взял сперва Ваш запрос и засунул его в консоль запросов, а уже потом бы игрался в СКД. Также обмажьтесь естьnull, а то СКД не любит NULL в выражениях и просто не выводит строки, когда есть группировки в ресурсах, хотя данные в строках есть. Когда одна из колонок, по которой осуществляется группировка, оказывается NULL и СКД её игнорит.
А так начните с простого, а именно просто выведете значения дисконтных карт, может они у Вас вообще в целом нет карт в этих чеках. Помимо этого у Вас вариантов отчетов 5 штук, а какой вариант вы запускаете не понятно.
Я бы взял сперва Ваш запрос и засунул его в консоль запросов, а уже потом бы игрался в СКД. Также обмажьтесь естьnull, а то СКД не любит NULL в выражениях и просто не выводит строки, когда есть группировки в ресурсах, хотя данные в строках есть. Когда одна из колонок, по которой осуществляется группировка, оказывается NULL и СКД её игнорит.
(12)
А так начните с простого, а именно просто выведете значения дисконтных карт, может они у Вас вообще в целом нет карт в этих чеках. Помимо этого у Вас вариантов отчетов 5 штук, а какой вариант вы запускаете не понятно.
Я бы взял сперва Ваш запрос и засунул его в консоль запросов, а уже потом бы игрался в СКД. Также обмажьтесь естьnull, а то СКД не любит NULL в выражениях и просто не выводит строки, когда есть группировки в ресурсах, хотя данные в строках есть. Когда одна из колонок, по которой осуществляется группировка, оказывается NULL и СКД её игнорит.
1 В консоли запросов сделал запрос,там выводятся дисконтные карты т.е они имеются
2 Я во всех вариантах отчета указал поле ДисконтнаяКарта
А так начните с простого, а именно просто выведете значения дисконтных карт, может они у Вас вообще в целом нет карт в этих чеках. Помимо этого у Вас вариантов отчетов 5 штук, а какой вариант вы запускаете не понятно.
Я бы взял сперва Ваш запрос и засунул его в консоль запросов, а уже потом бы игрался в СКД. Также обмажьтесь естьnull, а то СКД не любит NULL в выражениях и просто не выводит строки, когда есть группировки в ресурсах, хотя данные в строках есть. Когда одна из колонок, по которой осуществляется группировка, оказывается NULL и СКД её игнорит.
1 В консоли запросов сделал запрос,там выводятся дисконтные карты т.е они имеются
2 Я во всех вариантах отчета указал поле ДисконтнаяКарта
(2) Как Вы его поняли? Этому где-то учат?
(17)
Отчет подключен как дополнительный? Если да, то обновите его, через файл-открыть не сработает, это справедливо и для обработок.
Так же вижу на скрине какие-то отборы, советую сбросить отчет через кнопку "ещё" на стандартные настройки.
(17)
Ради теста решил добавить Вычисляемое поле, и почему то в отчете его нет.
Отчет подключен как дополнительный? Если да, то обновите его, через файл-открыть не сработает, это справедливо и для обработок.
Так же вижу на скрине какие-то отборы, советую сбросить отчет через кнопку "ещё" на стандартные настройки.
Решил поиграть с запросом и здесь фигня получается. Для начала вывожу данные с дисконтными картами, что бы посмотреть что в этом поле, за определенный период. Затем хочу получить сколько дисконтных карт было и тут фигня получается
Без агригации т.е без Суммы, Количества то же самое получается, хотя в некоторых строках нет дисконтной карты
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ЧекККМ.Номер КАК Номер,
ЧекККМ.Дата КАК Дата,
ЧекККМ.Проведен КАК Проведен,
СУММА(ВЫБОР
КОГДА ЧекККМ.ДисконтнаяКарта ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ) КАК ДисконтнаяКарта
ИЗ
Документ.ЧекККМ КАК ЧекККМ
ГДЕ
ЧекККМ.Дата >= &ДатаНачала
И ЧекККМ.Дата <= &ДатаОкончания
СГРУППИРОВАТЬ ПО
ЧекККМ.Номер,
ЧекККМ.Дата,
ЧекККМ.Проведен
ПоказатьБез агригации т.е без Суммы, Количества то же самое получается, хотя в некоторых строках нет дисконтной карты
Прикрепленные файлы:


(26) Конечно, у вас у реквизита Дисконтная карта какой тип стоит? Предполагаю что-то типа справочникссылка.Дисконтные карты, а вы один тип сравниваете с другим, естественно они никогда не будут равны
У меня есть 100500 яблок, а я ищу среди них огурцы, вопрос, найду ли я их?
У меня есть 100500 яблок, а я ищу среди них огурцы, вопрос, найду ли я их?
(26) Я только сейчас заметил, сказывается недосып, вы сравниваете реквизит "ДисконтнаяКарта" документа ЧекККМ со значением пустой ссылки документа Чек ККМ, Вы точно уверены, что реквизит "ДисконтнаяКарта" может принимать такое значение, там явно справочник. У меня нет под рукой розницы, гляньте в конфигураторе.
(30) 1С Розница 3,0. Напоминаю задачу. Нужно посчитать количество новых дисконтных карт заведенных в определенный период. Но сейчас в поле Дисконтные карты показывает количество строк списка документов ЧекККМ за этот период
По тихоньку по маленьку получается результат.
По тихоньку по маленьку получается результат.
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПродажиОбороты.Регистратор КАК Регистратор,
ПродажиОбороты.ПериодДень КАК ПериодДень,
ПродажиОбороты.ПериодНеделя КАК ПериодНеделя,
ПродажиОбороты.ПериодДекада КАК ПериодДекада,
ПродажиОбороты.ПериодМесяц КАК ПериодМесяц,
ПродажиОбороты.ПериодКвартал КАК ПериодКвартал,
ПродажиОбороты.ПериодПолугодие КАК ПериодПолугодие,
ПродажиОбороты.ПериодГод КАК ПериодГод,
ПродажиОбороты.ПериодЧас КАК ПериодЧас,
ПродажиОбороты.Документ.КассаККМ КАК КассаККМ,
ПродажиОбороты.Организация КАК Организация,
ПродажиОбороты.Документ КАК Документ,
ВЫБОР
КОГДА ПродажиОбороты.Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
ТОГДА ПродажиОбороты.Контрагент
КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ЗаказПокупателя
И ПродажиОбороты.Документ <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
ТОГДА ВЫРАЗИТЬ(ПродажиОбороты.Документ КАК Документ.ЗаказПокупателя).Контрагент
ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
КОНЕЦ КАК Контрагент,
ВЫБОР
КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ЗаказПокупателя
И ПродажиОбороты.Документ <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
ТОГДА ВЫРАЗИТЬ(ПродажиОбороты.Документ КАК Документ.ЗаказПокупателя).СтруктурнаяЕдиницаПродажи
ИНАЧЕ ПродажиОбороты.Подразделение
КОНЕЦ КАК Подразделение,
ВЫБОР
КОГДА ПродажиОбороты.Склад <> ЗНАЧЕНИЕ(Справочник.СтруктурныеЕдиницы.ПустаяСсылка)
ТОГДА ПродажиОбороты.Склад
КОГДА ПродажиОбороты.Документ = НЕОПРЕДЕЛЕНО
ТОГДА ЗНАЧЕНИЕ(Справочник.СтруктурныеЕдиницы.ПустаяСсылка)
КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ЧекККМ
И ПродажиОбороты.Документ <> ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка)
ТОГДА ВЫРАЗИТЬ(ПродажиОбороты.Документ КАК Документ.ЧекККМ).СтруктурнаяЕдиница
КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ЧекККМВозврат
И ПродажиОбороты.Документ <> ЗНАЧЕНИЕ(Документ.ЧекККМВозврат.ПустаяСсылка)
ТОГДА ВЫРАЗИТЬ(ПродажиОбороты.Документ КАК Документ.ЧекККМВозврат).СтруктурнаяЕдиница
КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ОтчетОРозничныхПродажах
И ПродажиОбороты.Документ <> ЗНАЧЕНИЕ(Документ.ОтчетОРозничныхПродажах.ПустаяСсылка)
ТОГДА ВЫРАЗИТЬ(ПродажиОбороты.Документ КАК Документ.ОтчетОРозничныхПродажах).СтруктурнаяЕдиница
ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СтруктурныеЕдиницы.ПустаяСсылка)
КОНЕЦ КАК Склад,
ПродажиОбороты.Ответственный КАК Ответственный,
ВЫБОР
КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ЧекККМ
ТОГДА ПродажиОбороты.Регистратор
КОГДА НЕ ДокументЧекККМ.Ссылка ЕСТЬ NULL
ТОГДА ДокументЧекККМ.Ссылка
ИНАЧЕ NULL
КОНЕЦ КАК ЧекККМ,
ВЫБОР
КОГДА ДокументЧекККМ.ДисконтнаяКарта = ЗНАЧЕНИЕ(Справочник.ДисконтныеКарты.ПустаяСсылка)
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ КАК ДисконтнаяКарта
ПОМЕСТИТЬ ПродажиПоЧекам
ИЗ
РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ КАК ДокументЧекККМ
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СогласиеНаОбработкуПерсональныхДанных КАК СогласиеНаОбработкуПерсональныхДанных
ПО ДокументЧекККМ.ДисконтнаяКарта.Владелец = СогласиеНаОбработкуПерсональныхДанных.Субъект
И (ДЕНЬ(ДокументЧекККМ.Дата) = ДЕНЬ(СогласиеНаОбработкуПерсональныхДанных.Дата))
ПО ПродажиОбороты.Регистратор = ДокументЧекККМ.КассоваяСмена
И (ДокументЧекККМ.Проведен)
ГДЕ
(ПродажиОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
ИЛИ ПродажиОбороты.Регистратор ССЫЛКА Документ.ЧекККМ)
И НЕ ВЫБОР
КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ЧекККМ
ТОГДА ПродажиОбороты.Регистратор
КОГДА НЕ ДокументЧекККМ.Ссылка ЕСТЬ NULL
ТОГДА ДокументЧекККМ.Ссылка
ИНАЧЕ NULL
КОНЕЦ ЕСТЬ NULL
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ПродажиОбороты.Регистратор,
ПродажиОбороты.ПериодДень,
ПродажиОбороты.ПериодНеделя,
ПродажиОбороты.ПериодДекада,
ПродажиОбороты.ПериодМесяц,
ПродажиОбороты.ПериодКвартал,
ПродажиОбороты.ПериодПолугодие,
ПродажиОбороты.ПериодГод,
ПродажиОбороты.ПериодЧас,
ПродажиОбороты.Документ.КассаККМ,
ПродажиОбороты.Организация,
ПродажиОбороты.Документ,
ВЫБОР
КОГДА ПродажиОбороты.Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
ТОГДА ПродажиОбороты.Контрагент
КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ЗаказПокупателя
И ПродажиОбороты.Документ <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
ТОГДА ВЫРАЗИТЬ(ПродажиОбороты.Документ КАК Документ.ЗаказПокупателя).Контрагент
ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
КОНЕЦ,
ВЫБОР
КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ЗаказПокупателя
И ПродажиОбороты.Документ <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
ТОГДА ВЫРАЗИТЬ(ПродажиОбороты.Документ КАК Документ.ЗаказПокупателя).СтруктурнаяЕдиницаПродажи
ИНАЧЕ ПродажиОбороты.Подразделение
КОНЕЦ,
ВЫБОР
КОГДА ПродажиОбороты.Склад <> ЗНАЧЕНИЕ(Справочник.СтруктурныеЕдиницы.ПустаяСсылка)
ТОГДА ПродажиОбороты.Склад
КОГДА ПродажиОбороты.Документ = НЕОПРЕДЕЛЕНО
ТОГДА ЗНАЧЕНИЕ(Справочник.СтруктурныеЕдиницы.ПустаяСсылка)
КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ЧекККМ
И ПродажиОбороты.Документ <> ЗНАЧЕНИЕ(Документ.ЧекККМ.ПустаяСсылка)
ТОГДА ВЫРАЗИТЬ(ПродажиОбороты.Документ КАК Документ.ЧекККМ).СтруктурнаяЕдиница
КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ЧекККМВозврат
И ПродажиОбороты.Документ <> ЗНАЧЕНИЕ(Документ.ЧекККМВозврат.ПустаяСсылка)
ТОГДА ВЫРАЗИТЬ(ПродажиОбороты.Документ КАК Документ.ЧекККМВозврат).СтруктурнаяЕдиница
КОГДА ПродажиОбороты.Документ ССЫЛКА Документ.ОтчетОРозничныхПродажах
И ПродажиОбороты.Документ <> ЗНАЧЕНИЕ(Документ.ОтчетОРозничныхПродажах.ПустаяСсылка)
ТОГДА ВЫРАЗИТЬ(ПродажиОбороты.Документ КАК Документ.ОтчетОРозничныхПродажах).СтруктурнаяЕдиница
ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СтруктурныеЕдиницы.ПустаяСсылка)
КОНЕЦ,
ПродажиОбороты.Ответственный,
ВЫБОР
КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ЧекККМВозврат
ТОГДА ПродажиОбороты.Регистратор
КОГДА НЕ ДокументЧекККМВозврат.Ссылка ЕСТЬ NULL
ТОГДА ДокументЧекККМВозврат.Ссылка
ИНАЧЕ NULL
КОНЕЦ,
0
ИЗ
РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМВозврат КАК ДокументЧекККМВозврат
ПО ПродажиОбороты.Регистратор = ДокументЧекККМВозврат.КассоваяСмена
И (ДокументЧекККМВозврат.Проведен)
ГДЕ
(ПродажиОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
ИЛИ ПродажиОбороты.Регистратор ССЫЛКА Документ.ЧекККМВозврат)
И НЕ ВЫБОР
КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ЧекККМВозврат
ТОГДА ПродажиОбороты.Регистратор
КОГДА НЕ ДокументЧекККМВозврат.Ссылка ЕСТЬ NULL
ТОГДА ДокументЧекККМВозврат.Ссылка
ИНАЧЕ NULL
КОНЕЦ ЕСТЬ NULL
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПродажиПоЧекам.ЧекККМ КАК ЧекККМ,
МАКСИМУМ(ЧекККМЗапасы.НомерСтроки) КАК КоличествоСтрок
ПОМЕСТИТЬ ЧекиКоличествоСтрок
ИЗ
ПродажиПоЧекам КАК ПродажиПоЧекам
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ.Запасы КАК ЧекККМЗапасы
ПО ПродажиПоЧекам.ЧекККМ = ЧекККМЗапасы.Ссылка
ГДЕ
ПродажиПоЧекам.ЧекККМ ССЫЛКА Документ.ЧекККМ
СГРУППИРОВАТЬ ПО
ПродажиПоЧекам.ЧекККМ
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ПродажиПоЧекам.ЧекККМ,
МАКСИМУМ(ЧекККМВозвратЗапасы.НомерСтроки)
ИЗ
ПродажиПоЧекам КАК ПродажиПоЧекам
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМВозврат.Запасы КАК ЧекККМВозвратЗапасы
ПО ПродажиПоЧекам.ЧекККМ = ЧекККМВозвратЗапасы.Ссылка
ГДЕ
ПродажиПоЧекам.ЧекККМ ССЫЛКА Документ.ЧекККМВозврат
СГРУППИРОВАТЬ ПО
ПродажиПоЧекам.ЧекККМ
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ПродажиПоЧекам.Регистратор КАК Регистратор,
ПродажиПоЧекам.ПериодДень КАК ПериодДень,
ПродажиПоЧекам.ПериодНеделя КАК ПериодНеделя,
ПродажиПоЧекам.ПериодДекада КАК ПериодДекада,
ПродажиПоЧекам.ПериодМесяц КАК ПериодМесяц,
ПродажиПоЧекам.ПериодКвартал КАК ПериодКвартал,
ПродажиПоЧекам.ПериодПолугодие КАК ПериодПолугодие,
ПродажиПоЧекам.ПериодГод КАК ПериодГод,
ПродажиПоЧекам.ПериодЧас КАК ПериодЧас,
ПродажиПоЧекам.Документ.КассаККМ КАК КассаККМ,
ПродажиПоЧекам.Организация КАК Организация,
ПродажиПоЧекам.Документ КАК Документ,
ПродажиПоЧекам.Контрагент КАК Контрагент,
ПродажиПоЧекам.Подразделение КАК Подразделение,
ПродажиПоЧекам.Склад КАК Склад,
ПродажиПоЧекам.Ответственный КАК Ответственный,
ПродажиПоЧекам.ЧекККМ КАК ЧекККМ,
ВЫБОР
КОГДА ПродажиПоЧекам.ЧекККМ ССЫЛКА Документ.ЧекККМ
ТОГДА ПродажиПоЧекам.ЧекККМ
ИНАЧЕ NULL
КОНЕЦ КАК ЧекПродажа,
ВЫБОР
КОГДА ПродажиПоЧекам.ЧекККМ ССЫЛКА Документ.ЧекККМВозврат
ТОГДА ПродажиПоЧекам.ЧекККМ
ИНАЧЕ NULL
КОНЕЦ КАК ЧекВозврат,
ЕСТЬNULL(ЧекиКоличествоСтрок.КоличествоСтрок, 0) КАК КоличествоСтрок,
ПродажиПоЧекам.ДисконтнаяКарта КАК ДисконтнаяКарта
ИЗ
ПродажиПоЧекам КАК ПродажиПоЧекам
ЛЕВОЕ СОЕДИНЕНИЕ ЧекиКоличествоСтрок КАК ЧекиКоличествоСтрок
ПО ПродажиПоЧекам.ЧекККМ = ЧекиКоличествоСтрок.ЧекККМ
ПоказатьПрикрепленные файлы:

(31)
Вот если прям новых, то есть вероятность, что запрос не совсем верный.
Ваш реквизит когда заполняется? Если он заполняется всегда только новыми картами, то ок, такой запрос вполне подойдет, но если это реквизит заполняется, когда человек использовал карту при оплате, то тогда такой подсчет будет неверным.
Условно я получил карту в периоде и применил её на два чека (один при получении и второй условно через день), то в таком случае Ваш запрос вернет 2 штуки, хотя карта одна.
новых дисконтных карт заведенных
Вот если прям новых, то есть вероятность, что запрос не совсем верный.
Ваш реквизит когда заполняется? Если он заполняется всегда только новыми картами, то ок, такой запрос вполне подойдет, но если это реквизит заполняется, когда человек использовал карту при оплате, то тогда такой подсчет будет неверным.
Условно я получил карту в периоде и применил её на два чека (один при получении и второй условно через день), то в таком случае Ваш запрос вернет 2 штуки, хотя карта одна.
Такое ощущение, что данное условие всегда дает 1
Потому что агрегация считает количество строк либо всех документов за выбранный период, если агрегация КОЛИЧЕСТВО или только количество документов ЧекККМ
ВЫБОР
КОГДА ДокументЧекККМ.ДисконтнаяКарта = ЗНАЧЕНИЕ(Справочник.ДисконтныеКарты.ПустаяСсылка)
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ
Потому что агрегация считает количество строк либо всех документов за выбранный период, если агрегация КОЛИЧЕСТВО или только количество документов ЧекККМ
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот