|
Отчёт на СКД | ☑ | ||
---|---|---|---|---|
0
ejikbeznojek
01.06.17
✎
17:37
|
Ребята привет. Нужна помощь коллективного разума.
Делаю сейчас отчёт на СКД в своей самописке на 8.3 Вроде отчёт простой, но чёт весь изматерился уже))) Есть документ "Посещение магазина" с ТЧ Товары (Колонки Номенклатура и количество) Есть справочник Номенклатура, в котором всего 9 элементов И есть отчёт на СКД вот с таким запросом ВЫБРАТЬ ПосещениеМагазинаТовары.Ссылка КАК Документ, ПосещениеМагазинаТовары.Номенклатура КАК Номенклатура, СУММА(ПосещениеМагазинаТовары.Количество) КАК Количество, ПосещениеМагазинаТовары.Ссылка.Адрес КАК Адрес, ПосещениеМагазинаТовары.Ссылка.Контрагент, ПосещениеМагазинаТовары.Ссылка.Контрагент.СборныйПоставщик КАК Поставщик, еркПосещениеМагазинаТовары.Номенклатура КАК КоличествоТМ ИЗ Документ.ПосещениеМагазина.Товары КАК ПосещениеМагазинаТовары ГДЕ ПосещениеМагазинаТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2 СГРУППИРОВАТЬ ПО ПосещениеМагазинаТовары.Ссылка, ПосещениеМагазинаТовары.Номенклатура, ПосещениеМагазинаТовары.Ссылка.Адрес, ПосещениеМагазинаТовары.Ссылка.Контрагент, ПосещениеМагазинаТовары.Ссылка.Контрагент.СборныйПоставщик, ПосещениеМагазинаТовары.Номенклатура В группировках выводится таблица с колонкой - номенклатура И строками контрагент и документ. И есть ресурс "количество документов", который нужно выводить. Косяк в том, что если в документе есть "товар1" и "товар3", а "товара 2" нет, то требуется в колонке "товар 2" учитывать этот документ при подсчёте количества документов https://prnt.sc/feovjg Вот тут должно быть 6 доков, а не 4. Вроде нужно наверное как-то соединить с чем-то. Но я что-то не соображу |
|||
1
Ц_У
01.06.17
✎
17:41
|
А нельзя в запрос добавить "1" как КоличествоДокументов ?
|
|||
2
ejikbeznojek
01.06.17
✎
17:42
|
(1) А я так пробовал, тот же результат.
Причём пробовал как в таблицу добавлять 1 КАК КоличествоДоков, так и в вычисляемые поля. |
|||
3
Elatiell
01.06.17
✎
17:43
|
(0) Используйте вычисляемое поле и функцию ВычислитьВыражениеСГруппировкойМассив в СКД.
|
|||
4
ejikbeznojek
01.06.17
✎
17:54
|
Добавил вычисляемое поле
КоличествоДокументов1 Выражение ВычислитьВыражениеСГруппировкойМассив("выбор когда Документ есть null тогда 1 иначе Количество(Документ) конец") И добавил его сумму в ресурсы. Тоже самое выводит |
|||
5
ejikbeznojek
01.06.17
✎
17:59
|
https://prnt.sc/fep658
сделал 2 ресурса количество1 Сумма (ВычислитьВыражениеСГруппировкойМассив("выбор когда количество есть null тогда 1 иначе Количество(Документ) конец")) Количество2 выбор когда количество есть null тогда 1 иначе Количество(Документ) конец |
|||
6
devpro100
01.06.17
✎
18:00
|
Сохранить запрос в временную таблицу, например: ВТ_Товары
"ВЫБРАТЬ РАЗЛИЧНЫЕ ВТ.Контрагент, ВТ.Номенклатура, 1 КАК КоличествоДоков ПОМЕСТИТЬ ВТ_Доки ИЗ ВТ_Товары КАК ВТ" Соединить полученную таблицу "ВТ_Товары" и исходный запрос (временную таблицу ВТ_Товары) левым соединением по контрагенту и номенклатуре. Если я правильно понял... |
|||
7
devpro100
01.06.17
✎
18:02
|
(6) ВТ_Доки Левое соединение ВТ_Товары так точнее
|
|||
8
ejikbeznojek
01.06.17
✎
18:16
|
(6) А по номенклатуре нельзя же соединить, ведь "товара 2" нет в доке
Я попытался было сделать вот так: но результат тот же ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПосещениеМагазинаТовары.Ссылка) КАК Количество3, ПосещениеМагазинаТовары.Ссылка.Адрес КАК Адрес ПОМЕСТИТЬ т1 ИЗ Документ.ПосещениеМагазина.Товары КАК ПосещениеМагазинаТовары ГДЕ ПосещениеМагазинаТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2 СГРУППИРОВАТЬ ПО ПосещениеМагазинаТовары.Ссылка.Адрес ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПосещениеМагазинаТовары.Ссылка КАК Документ, ПосещениеМагазинаТовары.Номенклатура КАК Номенклатура, СУММА(ПосещениеМагазинаТовары.Количество) КАК Количество, ПосещениеМагазинаТовары.Ссылка.Адрес КАК Адрес, ПосещениеМагазинаТовары.Ссылка.Контрагент, ПосещениеМагазинаТовары.Ссылка.Контрагент.СборныйПоставщик КАК Поставщик, ПосещениеМагазинаТовары.Номенклатура КАК КоличествоТМ, СУММА(т1.Количество3) КАК Количество3 ИЗ т1 КАК т1 ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПосещениеМагазина.Товары КАК ПосещениеМагазинаТовары ПО ПосещениеМагазинаТовары.Ссылка.Адрес = т1.Адрес ГДЕ ПосещениеМагазинаТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2 СГРУППИРОВАТЬ ПО ПосещениеМагазинаТовары.Ссылка, ПосещениеМагазинаТовары.Номенклатура, ПосещениеМагазинаТовары.Ссылка.Адрес, ПосещениеМагазинаТовары.Ссылка.Контрагент, ПосещениеМагазинаТовары.Ссылка.Контрагент.СборныйПоставщик, ПосещениеМагазинаТовары.Количество, ПосещениеМагазинаТовары.Номенклатура |
|||
9
ejikbeznojek
01.06.17
✎
18:29
|
(7) На всякий случай сделал как ты написал.
так же, по докам где нет номенклатуры пишет 0. 8( |
|||
10
ejikbeznojek
01.06.17
✎
19:23
|
Может кто-то знает как дополнить таблицу, добавив в неё строки с отсуствующей номенклатурой с 0 количеством?
|
|||
11
ejikbeznojek
01.06.17
✎
20:49
|
В общем я сдался и набыдлокодил 8(
Поставил, чтобы перед записью отсутствующие позиции заполнялись с 0 количеством. Отчёт после этого конечно же нормально заработал, но если вдруг кто подскажет как сделать по человечески, буду рад увидеть) |
|||
12
devpro100
02.06.17
✎
09:43
|
(9) Я правильно понимаю, что тебе нужно дополнить каждый документ недостающими товарами (всеми или только теми, которые засветились в других документах по контрагенту) с нулевым количеством номенклатуры?
Если так то тебе нужно сделать умножение на товары (т.е. ПОЛНОЕ соединение, не ЛЕВОЕ - я ошибся) Если тебе нужно показать только тот товар, который присутствовал в каком либо документе по контрагенту, то нужно связывать по контрагенту. Если же все равно, т.е. в таблице должен быть просто весь товар из справочника, то тогда еще проще, можно связать сам справочник по условию "ИСТИНА". Тогда у тебя получится набор записей "Контрагент, Документ, Номенклатура" и количество "1 КАК КоличествоДоков". |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |