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

Наши программы => УкрСклад => Тема розпочата: deDimon від Липень 03, 2012, 15:19:27

Назва: Нужна помощь в создании пользовательского отчёта.
Відправлено: deDimon від Липень 03, 2012, 15:19:27
Здравствуйте, уважаемые пользователи данного форума. Подскажите пожалуйста, какой код нужно добавить в SQL-запрос в пользовательском отчёте, чтобы достать поля из БД:

Спасибо :)
Назва: Re: Нужна помощь в создании пользовательского отчёта.
Відправлено: TheOK від Липень 03, 2012, 16:06:11
Все не так просто.
Вы-то их сможете достать. Однако, как я понимаю, вам нужно кроме этих полей вывести еще какие-то.
Нужно более подробное описание.


P.S.
Эти поля находятся в таблице tovar_name, называются TOV_VES, TOV_UPAKOVKA_COUNT соответственно

Назва: Re: Нужна помощь в создании пользовательского отчёта.
Відправлено: deDimon від Липень 04, 2012, 09:06:52
Потом мне надо будет посчитать общий вес и вычислить сколько упаковок по каждой позиции получается. В принципе я понял как это можно сделать.

P. S. Делаю что-то типа общей расходной накладной с одного склада за день. т.е. целый день заказы принимаешь, а потом под конец дня грузишь всё в машину и она развозит.
Назва: Re: Нужна помощь в создании пользовательского отчёта.
Відправлено: TheOK від Липень 04, 2012, 11:36:09
Вам нужен вот такой запрос:




select
    tn.*,v.*,v_.*
from
    vnakl v left join vnakl_ v_ on (v.num=v_.pid),
    tovar_name tn
where
    v_.tovar_id=tn.num
    and v.date_dok='#дата#'

order by
    tn.name,tn.num



В отчете необходимо выставить параметр ДАТА
Запрос выводит список товара с др. данными по расходным накладным, за указанный день.
Назва: Re: Нужна помощь в создании пользовательского отчёта.
Відправлено: deDimon від Липень 04, 2012, 13:26:49
TheOK, я вот такой код нагомнокодил, вроде должен подходить под мои задачи:

SELECT   
  s.num AS num,   
  t.name AS name,
  t.kod,     
  t.ed_izm AS ed_izm,
  t.tov_ves AS tov_ves,
  t.tov_upakovka_count  AS tov_upakovka_count,   
  SUM(s.z_kolvo) AS z_kolvo,   
  SUM(s.to_kolvo) AS to_kolvo,     
  SUM(s.from_kolvo) AS from_kolvo,   
  gr.group_name   
FROM   
  sklad_view_1(#склад_№#,'#дата_с#','#дата_по#') s,   
  tovar_name t   
      LEFT JOIN currency c ON t.#цена_тип_поле_пр#_curr_id = c.num,   
  print_view_sklad(0,#склад_№#) gr
WHERE   
  s.num = t.num AND   
  t.tip = gr.num AND 
  s.from_kolvo > 0 AND
  t.visible = 1 
GROUP BY   
  gr.group_name,   
  t.name,
  t.kod,   
  s.num,   
  t.ed_izm,   
  4 
HAVING 
  (SUM(s.z_kolvo) > 0 OR SUM(s.to_kolvo) > 0 OR SUM(s.from_kolvo) >0)

но получил ошибку


DataM.QueryRep.SelectQuery
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).


Подскажите, пожалуйста где ошибка?

P. S. Переделываю существующий отчёт "Движение товара по складу".
Назва: Re: Нужна помощь в создании пользовательского отчёта.
Відправлено: admin від Липень 04, 2012, 14:13:54
По ошибке, в селекте должно быть так:

SELECT   
  s.num AS num,   
  t.name AS name,
  t.kod,     
  t.ed_izm AS ed_izm,
  t.tov_ves AS tov_ves,
  t.tov_upakovka_count  AS tov_upakovka_count,   
  gr.group_name,
  SUM(s.z_kolvo) AS z_kolvo,   
  SUM(s.to_kolvo) AS to_kolvo,     
  SUM(s.from_kolvo) AS from_kolvo,
 

в группировке так:

GROUP BY   
  1,2,3,4,5,6,7
Назва: Re: Нужна помощь в создании пользовательского отчёта.
Відправлено: deDimon від Липень 04, 2012, 14:47:52
Спасибо большое. Сделал то что хотел.
Назва: Re: Нужна помощь в создании пользовательского отчёта.
Відправлено: TheOK від Липень 04, 2012, 15:23:47
Возможно, вы сделали не то, что хотели.
В ваш отчет войдет все движение по складу (в том числе списание, производство и т.д.).
Назва: Re: Нужна помощь в создании пользовательского отчёта.
Відправлено: deDimon від Липень 04, 2012, 18:58:03
Цитата: admin від Липень 04, 2012, 14:13:54
в группировке так:

GROUP BY   
  1,2,3,4,5,6,7

Тут немного подкоректировал, потому что в отчёте товар сортировался не по группам.

GROUP BY
  gr.group_name, 1,2,3,4,5,6,7

Вроде, работает.

Цитата: TheOK від Липень 04, 2012, 15:23:47
Возможно, вы сделали не то, что хотели.
В ваш отчет войдет все движение по складу (в том числе списание, производство и т.д.).
Это да. В идеале был бы вариант, когда отдельно перемещение между складами показывало и отдельно продажи т.е. 2 отчёта.
Назва: Re: Нужна помощь в создании пользовательского отчёта.
Відправлено: TheOK від Липень 04, 2012, 20:37:37
Цитата: deDimon від Липень 04, 2012, 18:58:03
Цитата: TheOK від Липень 04, 2012, 15:23:47
Возможно, вы сделали не то, что хотели.
В ваш отчет войдет все движение по складу (в том числе списание, производство и т.д.).
Это да. В идеале был бы вариант, когда отдельно перемещение между складами показывало и отдельно продажи т.е. 2 отчёта.
Для построения отчета по продажам (для ваших нужд) за выбранный день (можно изменить и под период) используйте запрос, который был выложен выше  http://www.softbalance.com.ua/forum/index.php/topic,2355.msg14058.html#msg14058 (http://www.softbalance.com.ua/forum/index.php/topic,2355.msg14058.html#msg14058)
Чтобы не заморачиваться с кодом запроса просто используйте функцию суммирования , а детализацию по отчету скройте выставив значение свойства visible Бендов =false.
Назва: Re: Нужна помощь в создании пользовательского отчёта.
Відправлено: deDimon від Липень 05, 2012, 10:14:30
Цитата: TheOK від Липень 04, 2012, 20:37:37
Цитата: deDimon від Липень 04, 2012, 18:58:03
Цитата: TheOK від Липень 04, 2012, 15:23:47
Возможно, вы сделали не то, что хотели.
В ваш отчет войдет все движение по складу (в том числе списание, производство и т.д.).
Это да. В идеале был бы вариант, когда отдельно перемещение между складами показывало и отдельно продажи т.е. 2 отчёта.
Для построения отчета по продажам (для ваших нужд) за выбранный день (можно изменить и под период) используйте запрос, который был выложен выше  http://www.softbalance.com.ua/forum/index.php/topic,2355.msg14058.html#msg14058 (http://www.softbalance.com.ua/forum/index.php/topic,2355.msg14058.html#msg14058)
Чтобы не заморачиваться с кодом запроса просто используйте функцию суммирования , а детализацию по отчету скройте выставив значение свойства visible Бендов =false.
Спасибо большое за помощь. Буду пробовать.