• Ласкаво просимо на Спільнота для обміну досвідом між користувачами програм УкрБланк, УкрСклад, УкрЗарплата.
 

Остатки по всем складам по группе. (Укрсклад)

Автор Sheodar, Лютий 23, 2019, 15:06:33

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Sheodar

Имеется необходимость получить остатки по всем складам по группе. Для понимания чего-сколько осталось и дальнейшего формирования заказа.
Что-то схожее с https://www.softbalance.com.ua/forum/index.php?topic=2191.0

Но, как там было отмечено в ответе #11, запрос в SQL блока
WHERE
t.tip = #товар_группа_№# AND
//
Работает ТОЛЬКО на подгруппы. Пример:
У меня есть группа "Видеокарты". Там есть подгруппы "Видеочипы для ноутбука" "Декстопные видеокарты" "Геймерские видеокарты" .
Так, если я выбирают "Декстопные видеокарты", мне выведет остатки по всем складам, правильно. Но если я выберу группу "Видеокарты", мне выбьет ошибку "Отчет пустой".

На основе стандартного отчета "Остатки на складе":
Цитата
SELECT
  gr.group_name,
  t.name
  s.num,   
  t.kod,
  CASE 
  WHEN (c.how_to_calc = 1) THEN t.#цена_тип_поле#/c.kurs 
  WHEN (c.how_to_calc = 0) THEN t.#цена_тип_поле#*c.kurs 
  END AS cena,   
  t.ed_izm,
  gr.num, 
  SUM(s.z_kolvo) AS z_kolvo, 
  SUM(((t.#цена_тип_поле#*s.z_kolvo)/#валюта_курс#)) AS z_suma
FROM 
  view_sklad_zal_all('#дата#') s,
  tovar_name t   
      LEFT JOIN currency c ON t.#цена_тип_поле_пр#_curr_id = c.num, 
  print_view_sklad_all(#активная_фирма_№#) gr 
WHERE   
  s.num = t.num AND   
  t.tip = gr.num AND         
  '#товар_группа№#'= t.tip AND         
  s.sklad_id = gr.sklad_id AND
  s.sklad_id > 0 AND
  t.visible = 1 
GROUP BY 
  1,2,3,4,5,6,7 
ORDER BY   
  gr.group_name, 
  t.#товар_сорт#

Sheodar

Неужели никто не сталкивался с подобной необходимостью?  ??? У разных производителей (в нашем случае, косметика), есть различные коллекции, в них свои группы. И подготовить заказ без знания "что на все складах есть вообще" невозможно. Сама детализация то не нужна - нужно только общее количество. Как и писалось в мейн посте, t.tip = '#товар_группа№#' работает как хотелось бы, но только на финальную подгруппу.

admin

Вместо
t.tip = #товар_группа_№# AND
используйте
t.tip IN (SELECT sg.num FROM get_tovar_subgroups(#товар_группа_№#,0) sg) AND

Sheodar

Цитата: admin від Лютий 27, 2019, 15:13:37
Вместо
t.tip = #товар_группа_№# AND
используйте
t.tip IN (SELECT sg.num FROM get_tovar_subgroups(#товар_группа_№#,0) sg) AND
Спасибо! Это то, что нужно.

Batareyka

Это то, что нужно,только у меня прописываются все группы и подгруппы в отчете,как это можно исправить?

admin

Цитата: Batareyka від Лютий 27, 2019, 21:15:43
Это то, что нужно,только у меня прописываются все группы и подгруппы в отчете,как это можно исправить?

Что именно исправить?

Batareyka

Один и тот же товар дублируется во всех группах и подгрупах как на скриншоте, это очень не удобно.Подскажите пожалуйста,как в этом отчете убрать сортировку по имени?

admin

Цитата: Batareyka від Лютий 28, 2019, 12:32:26
Один и тот же товар дублируется во всех группах и подгрупах как на скриншоте, это очень не удобно.Подскажите пожалуйста,как в этом отчете убрать сортировку по имени?

Значит вы неправильно сделали отчет, мы вам только выборку по группам дали для вашего отчета, не более.

Sheodar

#8
В общем, прошло чуть времени и понял, что основная задача была все же поставлена мной не совсем правильно... Все же есть необходимость смотреть остатки не только в сумме, но и конкретно, по складам. Пример - Остатки по всем складам (детализация).
Но, здесь всплывает другой вопрос:
t.tip IN (SELECT sg.num FROM get_tovar_subgroups(#товар_группа_№#,0) sg) AND
Работает как надо - фильтрует все правильно. Я не могу понять, как сделать саму форму отчета...
В стандартной форме детализации используется cross-tab, которая представляет из себя полотно текста, без разделений, групп, итогов по группе и т.д.
Но в обычном отчете "остатки по всем складам" все выглядит куда более приемлимо.
Группа > Список товаров > Итог по группе.
Cross tab - это прямая таблица с заголовками и туда не получается вставить "пробелы" в виде названия группы/итогов группы. А в стандартном виде отчета не получается получить весь список складов/остатки на конкретном складе. Как бы совместить "логику" детализации и "дизайн" обычного отчета?
UPD (15.03):
В общем, нужен вот такой вот вид (скриншот 1) только сейчас в остатках пишет сколько остаток "всего" на всех складах, а нужно как в детализации: сколько на каждом и в конце сумму

Sheodar

#9
Подниму тему, т.к. вопрос все еще актуальный... а поиск по форуму "cross tab" мало что дал. Это цельный элемент, и вставить "в процессе" группу не выходит. Есть группировка вертикальная (добавить столбец группы и объединить ячейки (и то, это не совсем работает, от слова совсем: скрин 1), но тогда, оно, ко всем еще, объединяет, например, цены на товар, что не нужно). А вот как сделать группировку горизонтальную в кросс табе я не нашел, сколько не пытался