Як робити новий звіт:
1. Меню Звіти : Створити новий звіт, встановлюємо ім'я звіту.
2. Додаємо наступний текст у SQL запит (краще його копіювати українській розкладці, щоб уникнути проблеми кодувань):
EXECUTE BLOCK
RETURNS
(
tov_name ttovar_name,
tov_kod tnu,
tov_ed_izm ted_izm,
tov_cena tmoney,
date_dok tdate,
doc_type tnum,
name tsm_kod,
nu tnu,
date_dok2 tdate,
client_name tfio,
kolvo_in tkolvo,
kolvo_out tkolvo,
kolvo_all tkolvo,
kolvo_main tkolvo,
sklad_from tsm_kod,
sklad_to tsm_kod,
sklad_from_real_name tsm_kod,
sklad_to_real_name tsm_kod,
kolvo_from tkolvo,
kolvo_to tkolvo
)
AS
DECLARE VARIABLE sklad_from_id tnum;
DECLARE VARIABLE sklad_to_id tnum;
BEGIN
kolvo_all = 0;
kolvo_main = 0;
FOR
SELECT
tn.name,
tn.kod,
tn.ed_izm,
tn.cena,
vd.date_dok,
vd.doc_type,
dt.name,
vd.nu,
vd.date_dok AS date_dok2,
CASE
WHEN vd.client_id != 0 THEN c.fio
ELSE sn_t.name
END AS client_name,
CASE
WHEN tm.from_sklad_id = 0 THEN tm.to_kolvo
ELSE 0
END AS kolvo_in,
CASE
WHEN tm.to_sklad_id = 0 THEN tm.to_kolvo
ELSE 0
END AS kolvo_out,
tm.from_sklad_id,
tm.to_sklad_id,
sn_f.name AS sklad_from,
sn_t.name AS sklad_to,
CASE
WHEN tm.from_sklad_id NOT IN (0,#склад_№#) THEN sn_f.name
ELSE NULL
END AS sklad_from_real_name,
CASE
WHEN tm.to_sklad_id NOT IN (0,#склад_№#) THEN sn_t.name
ELSE NULL
END AS sklad_to_real_name,
CASE
WHEN tm.doc_type_id IN (1,10) THEN tm.to_kolvo
ELSE 0
END AS kolvo_from,
CASE
WHEN tm.doc_type_id IN (8,10) THEN tm.to_kolvo
ELSE 0
END AS kolvo_to
FROM
view_alldocs vd
JOIN tovar_move tm ON (
vd.doc_type IN (10,1,8) AND
vd.doc_type = tm.doc_type_id AND
vd.num = tm.doc_id AND
tm.mdate >= '#дата_с#' AND
tm.mdate <= '#дата_по#' AND
tm.is_usluga = 0 AND
tm.tovar_id = #товар_№#
)
JOIN tovar_name tn ON (tm.tovar_id = tn.num)
JOIN doc_types dt ON (vd.doc_type = dt.num)
LEFT JOIN sklad_names sn_f ON (tm.from_sklad_id = sn_f.num)
LEFT JOIN sklad_names sn_t ON (tm.to_sklad_id = sn_t.num)
LEFT JOIN client c ON (vd.client_id = c.num)
ORDER BY
vd.date_dok
INTO
:tov_name,
:tov_kod,
:tov_ed_izm,
:tov_cena,
:date_dok,
:doc_type,
:name,
:nu,
:date_dok2,
:client_name,
:kolvo_in,
:kolvo_out,
:sklad_from_id,
:sklad_to_id,
:sklad_from,
:sklad_to,
:sklad_from_real_name,
:sklad_to_real_name,
:kolvo_from,
:kolvo_to
DO
BEGIN
kolvo_all = kolvo_all + kolvo_in - kolvo_out;
IF(sklad_from_id = #склад_№#) THEN
kolvo_main = kolvo_main - kolvo_from;
IF(sklad_to_id = #склад_№#) THEN
kolvo_main = kolvo_main + kolvo_to;
SUSPEND;
END
END
3. Вмикаємо у виборі параметрів для звіту галочки: "Період дат", "Склад", "Товар".
4. Натискаємо "Зберегти як новий".
5. Закриваємо, заходимо до Звітів : Звіти користувачів та відкриваємо ваш звіт.
6. Натискаємо кнопку "У режим редагування", далі кнопку "Завантажити шаблон" відкриваємо збережений шаблон UserZvit999.fr3 з цього листа.
7. Натискаємо "У режим перегляду"
Пояснення по звіту:
1. Це звіт саме деталізації по товару / майну, тобто без титульного.
2. При виборі ви вказуєте ваш основний склад з якого будуть враховуватись переміщення на всі інші склади (підрозділи)
3. Задіяні документи: Прихідна накладна (Основний склад), Видаткова накладна (Основний склад і додаткові), Накладна на переміщення ((Основний склад і додаткові)
Бажаю здоров'я!
завантажив
працює
Дякую!!!
Прохання: включити до задіяних документів "Списання" (може бути лише з додаткових складів)
Прикріпили форму без "з них за категоріями, (сортами)" та категорії товару (1-5)", просто перелік складів.
SQL запит з урахуванням документа Списання:
EXECUTE BLOCK
RETURNS
(
tov_name ttovar_name,
tov_kod tnu,
tov_ed_izm ted_izm,
tov_cena tmoney,
date_dok tdate,
doc_type tnum,
name tsm_kod,
nu tnu,
date_dok2 tdate,
doc_descr ttext,
client_name tfio,
kolvo_in tkolvo,
kolvo_out tkolvo,
kolvo_all tkolvo,
kolvo_main tkolvo,
sklad_from tsm_kod,
sklad_to tsm_kod,
sklad_from_real_name tsm_kod,
sklad_to_real_name tsm_kod,
kolvo_from tkolvo,
kolvo_to tkolvo
)
AS
DECLARE VARIABLE sklad_from_id tnum;
DECLARE VARIABLE sklad_to_id tnum;
BEGIN
kolvo_all = 0;
kolvo_main = 0;
FOR
SELECT
tn.name,
tn.kod,
tn.ed_izm,
tn.cena,
vd.date_dok,
vd.doc_type,
dt.name,
vd.nu,
vd.date_dok AS date_dok2,
vd.doc_descr,
CASE
WHEN tm.doc_type_id = 11 THEN sn_f.name
WHEN vd.client_id != 0 THEN c.fio
ELSE sn_t.name
END AS client_name,
CASE
WHEN tm.from_sklad_id = 0 THEN tm.to_kolvo
ELSE 0
END AS kolvo_in,
CASE
WHEN tm.to_sklad_id = 0 THEN tm.to_kolvo
ELSE 0
END AS kolvo_out,
tm.from_sklad_id,
tm.to_sklad_id,
sn_f.name AS sklad_from,
sn_t.name AS sklad_to,
CASE
WHEN tm.from_sklad_id NOT IN (0,#склад_№#) THEN sn_f.name
ELSE NULL
END AS sklad_from_real_name,
CASE
WHEN tm.to_sklad_id NOT IN (0,#склад_№#) THEN sn_t.name
ELSE NULL
END AS sklad_to_real_name,
CASE
WHEN tm.doc_type_id IN (1,10,11) THEN tm.to_kolvo
ELSE 0
END AS kolvo_from,
CASE
WHEN tm.doc_type_id IN (8,10) THEN tm.to_kolvo
ELSE 0
END AS kolvo_to
FROM
view_alldocs vd
JOIN tovar_move tm ON (
vd.doc_type IN (10,1,8,11) AND
vd.doc_type = tm.doc_type_id AND
vd.num = tm.doc_id AND
tm.mdate >= '#дата_с#' AND
tm.mdate <= '#дата_по#' AND
tm.is_usluga = 0 AND
tm.tovar_id = #товар_№#
)
JOIN tovar_name tn ON (tm.tovar_id = tn.num)
JOIN doc_types dt ON (vd.doc_type = dt.num)
LEFT JOIN sklad_names sn_f ON (tm.from_sklad_id = sn_f.num)
LEFT JOIN sklad_names sn_t ON (tm.to_sklad_id = sn_t.num)
LEFT JOIN client c ON (vd.client_id = c.num)
ORDER BY
vd.date_dok
INTO
:tov_name,
:tov_kod,
:tov_ed_izm,
:tov_cena,
:date_dok,
:doc_type,
:name,
:nu,
:date_dok2,
:doc_descr,
:client_name,
:kolvo_in,
:kolvo_out,
:sklad_from_id,
:sklad_to_id,
:sklad_from,
:sklad_to,
:sklad_from_real_name,
:sklad_to_real_name,
:kolvo_from,
:kolvo_to
DO
BEGIN
kolvo_all = kolvo_all + kolvo_in - kolvo_out;
IF(sklad_from_id = #склад_№#) THEN
kolvo_main = kolvo_main - kolvo_from;
IF(sklad_to_id = #склад_№#) THEN
kolvo_main = kolvo_main + kolvo_to;
SUSPEND;
END
END