Доброго дня, добрые люди!
Подскажите, как можно вывести отчет реализации товара, с указанием даты и времени,
например: с 1230 19,09,2013 по 20,09,2013
(может в ручном режиме, с указанием конкретного времени в SQL запросе?)
Цитата: Kalibr2000 від Вересень 19, 2013, 15:28:49
(может в ручном режиме, с указанием конкретного времени в SQL запросе?)
Если Вас устраивает вводить время в ручном режиме, то открываете нужный отчет, нажимаете кнопку
"В режим редактирования", в
"Выбор нужных параметров для отчета" ставите
"галочку" "Произвольный текст", затем кнопку
"Редактирование шаблона" и в нужном месте добавляете
[текст_1] ; сохраняете отчет как новый, изменив его название если нужно и по идее должно работать.
А как сделать выборку для отчета с 1230 19,09,2013 по 20,09,2013
1) Создать новый отчет на основании реализация товара (сохранить как новый).
2) Перейти в него (созданный отчет находится в отчетах пользователей)
3) Нажать кнопку В режим редактирования
4) Поставить "отметку" напротив поля Произвольный текст
5) В поле SQL запрос вставить текст, приведенный ниже
6) Выставить все параметры (включая дату)
7) В появившееся поле (Произвольный текст) вставить выражение:
'19.09.2013 12:30' and '21.09.2013'
8) Запускаете
Отчет без введенного периода (см.П.7) работать не должен (не проверял).
Указанное ограничение времени работает как дополнительный фильтр по дате создания документа. Т.е. вы выбрали все документы ограниченные параметрами отчета (включая дату указанную в поле документа).
SELECT
sw.group_name,
tm.tovar_id,
tn.kod,
tn.name,
tn.ed_izm,
tn.cena,
tn.cena_r,
tn.cena_o,
SUM(tm.suma_znig_diff) AS tov_znig,
SUM(tm.from_kolvo) AS tov_kolvo,
AVG(tm.from_cena) AS tov_cena,
AVG(tm.cena_pdv) AS tov_cena_pdv,
SUM(tm.from_suma) AS tov_suma,
SUM(tm.suma_pdv) AS tov_pdv,
SUM(tm.from_suma+tm.suma_pdv) AS tov_suma_pdv
FROM
tovar_move tm,
vnakl vn,
print_view_sklad(#товар_группа_№#,#склад_№#) sw,
tovar_name tn
WHERE
tm.doc_type_id = 1 AND
tm.doc_id = vn.num AND
#if #пользователь_№# = -1 #then
#else
vn.doc_user_id = #пользователь_№# AND
#endif
tm.mdate >= '#дата_с#' AND
tm.mdate <= '#дата_по#' AND
sw.num = tn.tip AND
tm.tovar_id = tn.num AND
tm.from_sklad_id = #склад_№#
and vn.DOC_CREATE_TIME between #текст_1#
GROUP BY
1,2,3,4,5,6,7,8
HAVING
SUM(tm.from_kolvo) > 0
ORDER BY
sw.group_name
TheOK - СУПЕР ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
Может добавить в подписи номер счета - для благодарностей от форумчан?
Очень помогли, СПАСИБО!
Я так понял, что vn.DOC_CREATE_TIME - название столбца "время создания документа"?
А какое название столбца "время последнего редактирования" ?
Да, вы правы, это столбец со временем создания документа.
Столбец со временем последнего редактирования документа vn.DOC_MODIFY_TIME
P.S. Рад, что смог помочь, для меня часто это приятнее поступления денег на счет.
Уважаемый TheOK!
Подскажите, можно ли в Вашем отчете вывести остатки на складе реализованного товара (минимальный остаток я вывел с помощью поля tn.kolvo_min) ?
Цитата: Kalibr2000 від Вересень 24, 2013, 16:26:18
Уважаемый TheOK!
Подскажите, можно ли в Вашем отчете вывести остатки на складе реализованного товара (минимальный остаток я вывел с помощью поля tn.kolvo_min) ?
Мин остаток вы вывели правильно.
Запрос, расположенный ниже не проверял, сейчас нет возможности.
Будут ошибки, пишите
Не забывайте, что это тот отчет, в котором нужно вводить дату (или дату и время) в поле произвольный текст
SELECT
sw.group_name,
tm.tovar_id,
tn.kod,
tn.name,
tn.ed_izm,
tn.cena,
tn.cena_r,
tn.cena_o,
SUM(tm.suma_znig_diff) AS tov_znig,
SUM(tm.from_kolvo) AS tov_kolvo,
AVG(tm.from_cena) AS tov_cena,
AVG(tm.cena_pdv) AS tov_cena_pdv,
SUM(tm.from_suma) AS tov_suma,
SUM(tm.suma_pdv) AS tov_pdv,
SUM(tm.from_suma+tm.suma_pdv) AS tov_suma_pdv ,
tz.kolvo as sklad_zal
FROM
tovar_move tm,
vnakl vn,
print_view_sklad(#товар_группа_№#,#склад_№#) sw,
tovar_name tn
inner join tovar_zal tz on tn.num = tz.tovar_id and tz.sklad_id=#склад_№#
WHERE
tm.doc_type_id = 1
AND tm.doc_id = vn.num
AND
#if #пользователь_№# = -1 #then
#else
vn.doc_user_id = #пользователь_№# AND
#endif
tm.mdate >= '#дата_с#'
AND tm.mdate <= '#дата_по#'
AND sw.num = tn.tip
AND tm.tovar_id = tn.num
AND tm.from_sklad_id = #склад_№#
and vn.DOC_CREATE_TIME between #текст_1#
GROUP BY
1,2,3,4,5,6,7,8 ,16
HAVING
SUM(tm.from_kolvo) > 0
ORDER BY
sw.group_name
Всё работает!
Уважение и Признательность TheOK!
* забыл указать один важный момент.
Остатки на складе в запросе выше указываются текущие (т.е. на момент формирования отчета).
Дома глянул в программе как делаются остатки на складе, вот запрос, аналогичный предыдущему только остатки выводятся на дату = дата_по
Рад, что смог чем-то быть полезным.
SELECT
sw.group_name,
tm.tovar_id,
tn.kod,
tn.name,
tn.ed_izm,
tn.cena,
tn.cena_r,
tn.cena_o,
SUM(tm.suma_znig_diff) AS tov_znig,
SUM(tm.from_kolvo) AS tov_kolvo,
AVG(tm.from_cena) AS tov_cena,
AVG(tm.cena_pdv) AS tov_cena_pdv,
SUM(tm.from_suma) AS tov_suma,
SUM(tm.suma_pdv) AS tov_pdv,
SUM(tm.from_suma+tm.suma_pdv) AS tov_suma_pdv ,
s.z_kolvo as sklad_zal
FROM
tovar_move tm,
vnakl vn,
print_view_sklad(#товар_группа_№#,#склад_№#) sw,
tovar_name tn ,
view_sklad_zal(#склад_№#,'#дата_по#') s
WHERE
tm.doc_type_id = 1 AND
tm.doc_id = vn.num AND
#if #пользователь_№# = -1 #then
#else
vn.doc_user_id = #пользователь_№# AND
#endif
tm.mdate >= '#дата_с#' AND
tm.mdate <= '#дата_по#' AND
sw.num = tn.tip AND
tm.tovar_id = tn.num AND
tm.from_sklad_id = #склад_№#
and vn.DOC_CREATE_TIME between #текст_1#
and s.num = tn.num
GROUP BY
1,2,3,4,5,6,7,8,16
HAVING
SUM(tm.from_kolvo) > 0
ORDER BY
sw.group_name
Уважаемый TheOK а можно ли сделать сортировку по количеству продаж (в группах) в Ваших отчетах?
Цитата: Kalibr2000 від Жовтень 15, 2013, 19:31:55
Уважаемый TheOK а можно ли сделать сортировку по количеству продаж (в группах) в Ваших отчетах?
Для запроса, который приведен выше, чтобы внутри группы товаров происходила сортировка по кол-ву продаж нужно заменить последние 2 строки запроса на следующие:
ORDER BY
sw.group_name,10