Помогите, пожалуйста.:
Отчёт - Остатки на складе:фильтр по поставщику.
Надо:
1.Чтобы не выводились нулевые остатки.
2.Выводить остатки в ценах прихода - доллар (так выводит в гривне).
1) WHERE
s.num = t.num AND
t.tip = gr.num AND
t.visible = 1 AND
tz.sklad_id = #склад_№# AND
s.num = tz.tovar_id AND
tz.last_post_id = #поставщик_№# AND
z_kolvo<>0
Добавить в запрос в конце AND
z_kolvo<>0
2. Методом тыка t.#цена_тип_поле#/c.kurs
убрать умно жение деление на курс и останется наверное в валюте. Попробуйте. Или ждите пока появится TheOk.
Creat все правильно написал.
Только неравенство в SQL указывается как !=, где "!=" значит "не равно"
Если в справочнике все в нужной валюте, значит не надо применять перевод по курсу в основную валюту (т.е. делить на курс не надо), следовательно можно использовать t.#цена_тип_поле# , я записал это как t.#цена_тип_поле# as cena, чтобы не изменять шаблон, а так же при смене параметра тип цены не выбивало в отчете ошибку (скорее всего так бы было)
Запрос прикрепляю здесь. В шаблоне, возможно, придется изменить некоторый текст.
Предполагается, что ВСЕ цены в справочнике у вас в одной валюте иначе выведет все валюты вместе (т.е. циферки будут в разной валюте, что является злом).
Если все нужно переводить в одну валюту, это сложнее.
SELECT
s.num,
t.name,
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_osn_val,
t.#цена_тип_поле# as cena,
t.ed_izm,
z_kolvo,
((t.#цена_тип_поле#*s.z_kolvo)/#валюта_курс#) AS z_suma,
gr.num,
gr.group_name
FROM
view_sklad_zal(#склад_№#,'#дата#') s,
tovar_name t
LEFT JOIN currency c ON t.#цена_тип_поле_пр#_curr_id = c.num,
tovar_zal tz,
print_view_sklad(#товар_группа_№#,#склад_№#) gr
WHERE
s.num = t.num AND
t.tip = gr.num AND
t.visible = 1 AND
tz.sklad_id = #склад_№# AND
s.num = tz.tovar_id AND
tz.last_post_id = #поставщик_№#
and z_kolvo!=0
ORDER BY
gr.group_name,
t.name
Лучше используйте этот запрос (см. ниже).
Добавьте в отчет параметр Валюта. Выведутся данные только по выбранной валюте (предохранитесь от возможных ошибок)
SELECT
s.num,
t.name,
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_osn_val,
t.#цена_тип_поле# as cena,
t.ed_izm,
z_kolvo,
((t.#цена_тип_поле#*s.z_kolvo)/#валюта_курс#) AS z_suma,
gr.num,
gr.group_name
FROM
view_sklad_zal(#склад_№#,'#дата#') s,
tovar_name t
LEFT JOIN currency c ON t.#цена_тип_поле_пр#_curr_id = c.num,
tovar_zal tz,
print_view_sklad(#товар_группа_№#,#склад_№#) gr
WHERE
s.num = t.num AND
t.tip = gr.num AND
t.visible = 1 AND
tz.sklad_id = #склад_№# AND
s.num = tz.tovar_id AND
tz.last_post_id = #поставщик_№#
and z_kolvo!=0
and t.#цена_тип_поле_пр#_curr_id=#валюта_№#
ORDER BY
gr.group_name,
t.name
Спасибо за помощь. Хочу уточнить, в справочнике есть товары и в долларах и в гривне, но нет такого, чтобы у одного поставщика была и гривна и доллар. А вообще, я лучше вышлю вам файл с тем что я хотел бы видеть.Короче закажу у вас пару отчётов.
В таком случае, последний запрос то, что нужно. Просто для одного поставщика выставляете валюту доллар, для другого гривна (иногда можно перепроверить себя, выставив другие параметры, не проявится ли какой-то товар-лазутчик).