Як робити новий звіт:
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
Доброго дня.
Вискакує помилка:
Could not convert variant of type (Null) into type (Integer)
Доброго дня. Підкажіть. Звіт не показує надходження товару, тільки переміщення. Що я не так роблю? Дякую.
Бажаю здоров'я! Оприходую новий товар через прихідну накладну на склад. Додаток 47 пише звіт порожній. Якщо роблю накладну на переміщення зі свого складу на інший, тоді показує прихід і переміщення. Як зробити, щоб показував прихід до переміщення?
Бажаю здоров'я! Admin, підкажи, Якщо зробив надходження нового товару, роблю запит, пише запит пустий. Період дат виставляю з запасом.Як виправити?
Цитата: Mukola від Листопад 25, 2025, 13:17:21Доброго дня. Підкажіть. Звіт не показує надходження товару, тільки переміщення. Що я не так роблю? Дякую.
Цитата: Nick_Deshik від Січень 02, 2026, 13:17:51Бажаю здоров'я! Оприходую новий товар через прихідну накладну на склад. Додаток 47 пише звіт порожній. Якщо роблю накладну на переміщення зі свого складу на інший, тоді показує прихід і переміщення. Як зробити, щоб показував прихід до переміщення?
Звіт писався під конкретне ТЗ користувача, якщо треба по іншому, зверніться на підтримку, обов'язково вкажіть приклад, як є і як має бути. Зробимо. Для ЗСУ/НГУ все робимо безкоштовно.
Файли UserZvit999.fr3 і UserZvit999_1.fr3 вище оновили, тепер будуть показувати Прихід навіть якщо не було Переміщення.