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

Изменить отчет "Товар в резерве (на текущую дату)"

Автор lesyk, Травень 23, 2013, 09:00:59

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

lesyk

Добрый день. Подскажите, пожалуйста, как сделать, чтобы в отчете "Товар в резерве (на текущую дату)" была возможность сортировать по времени создания счета и еще присутствовал номер счета и реальное количество товара на складе. Помогите пожалуйста, если это реально сделать. Заранее благодарю.

lesyk

Я так понимаю для того что бы сделать этот отчет, его нужно полностью переделать, а это трудно и никто не имеет на этого времени. Тогда извините, что побеспокоил. :(

TheOK

#2
Заходите в меню Отчеты->Создать новый отчет.
В открывшемся окне вносите название в соответствующие поля.
В поле SQL запрос вставляете (ctrl+v) запрос, прикрепленный ниже.
Жмете Сохранить как новый
Заходите Отчеты->отчеты пользователей->ваш отчет
Жмете кнопку В режиме редактирования
В открывшейся вкладке жмете Редактирование шаблона
Вносите правки в шаблон и сохраняете.



select
    *
from
    schet s
        inner join schet_ s_ on s.num=s_.pid
        left join tovar_zal tz on s_.tovar_id=tz.tovar_id and s_.sklad_id=tz.sklad_id
where
    s.is_rezerv=1
order by
    s.date_dok, s.nu
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

lesyk

TheOK большое спасибо за помощь!!!!
У меня все получилось, только если есть возможность, хотелось чтобы показывало реальное количество товара на складе. (резерв - остаток на складе = реальное количество товара на складе).

TheOK

Рад, что вы осваиваете работу с отчетами, очень полезные навыки.
Проблема в реальном кол-ве на складе в следующем:
-данные сортируются по дате отправки в резерв, т.е. один и тот же товар вы можете отправить в резерв резными датами, т.е. формула Резерв-Остаток на складе = реальное кол-во  (хотя, как мне кажется, должно быть Резерв+Остаток на складе=реальное кол-во) для товара, который несколько раз отправлен в резерв будет неверна.

Для товара, который не отправляется в резерв разными датами/документами можно использовать формулу наподобии:
[<DataRep."TOV_KOLVO">-<DataRep."KOLVO">]
Как можете увидеть здесь у нас переменные заключены "снаружи" в [] , и каждая из переменных в отдельности заключается в <>. между переменными заключенными в <> можно ставить математические операторы (*, /, +, - ).
Попробуйте, если не получится пишите, что именно не получилось, добавлю запрос к себе, посмотрю, что к чему.
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

lesyk

Большое спасибо за помощь!!! Да я ошибся, нужно резерв+остаток на складе=реальное кол-во товара на складе. То есть, мне для того чтобы узнать реальное кол-во товара на складе нужно еще переменная которая показывает всё кол-во товара в резерве, так как есть только переменная резерв клиента и остаток на складе. Относительно того, что один и тот же товар может быть в резерве разными датами, то мне нужно видеть кто первый заказ товар и есть ли всё кол-во товара для клиента(остаток -200, а в резерве 300, реальное кол-во 100 шт.)

TheOK

#6

Последняя переменная TZ показывает кол-во товара на всех складах.
Однако, я не знаю будет ли удовлетворительна скорость выполнения запроса
Эта переменная более правильно отображает кол-во товара на складе чем переменная kolvo в предыдущем запросе (т.к. для предыдущего запроса бралось кол-во со склада, с которого товар был взят в резерв, в данном случае данные берутся со всех складов).



select
    s.*,
    s_.*,
    tz.*,
    (select sum (tzs.kolvo) from tovar_zal tzs where s_.tovar_id=tzs.tovar_id and (tzs.sklad_id>0)) as tz,   
    (select sum (tzs.kolvo) from tovar_zal tzs where s_.tovar_id=tzs.tovar_id and (tzs.sklad_id=-10)) as tz_rezerv   
from
    schet s
        inner join schet_ s_ on s.num=s_.pid
        left join tovar_zal tz on s_.tovar_id=tz.tovar_id and s_.sklad_id=tz.sklad_id
where
    s.is_rezerv=1
order by    s.date_dok, s.nu

Запрос изменил.
Выводятся переменные:
tz - общее кол-во товара (текущего товара) на складах (пользовательских складах)
tz_rezerv - общее кол-во товара(текущего товара) на складе резерв
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

lesyk

TheOK спасибо за помощь!!!! Это то, что мне нужно. Всё работает! Просто СУПЕР! Ещё раз спасибо. :)

TheOK

#8
Всегда рад помочь тем, кто часть нагрузки взять на себя)
* вы можете добавить перед masterData заголовок группы, например, сделать его невидимым (или высоту =0), и после masterData подвал группы, в котором можно вывести № документа, Клиента, дату , а так же используя мастер агрегатных функций добавить туда сумму по документу (сумму по кол-ву, цене и т.д. если это нужно).  Пример можете увидеть в отчете Остатки на складе (Отчеты/Остатки на складе/Остатки на складе)
В конструктор агрегатных функций можно попасть зайдя в редактирование текстового поля и нажав значок СУММЫ (буква сигма или как -то так из греческого).
После того, как помучаетесь, можете скинуть шаблон сюда, подпилим напильничком совместно
Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

lesyk

Шаблон я сделал на основе отчета "Товар в резерве (на текущую дату)". Для удобства также сделал выделение того товара который есть в наличии. Посмотрите и строго не судите, это первый мой шаблон. Если есть какие то ошибки то, пожалуйста, подскажите.

TheOK

#10
Все отлично сделано.
Просто выровнял поля (желательно, чтобы они были одно под одним, т.е. границы на одном уровне) чтобы они лучше выглядели при экспорте.
Добавил в запрос данные пользователя (логин, имя и т.д.) выбрать что именно нужно сможете, уверен и сами).
Смысл выделения не понял: Если реальное кол-во больше кол-ва в документе выделить цветом. Возможно, было бы удобнее если нет в наличии, выделить цветом (т.е. если реальное кол-во <0). Выделение не изменял, т.к. возможно в нем есть смысл, которого не понял.
Дизайн - дело вкуса, но мне кажется, что чем более высок уровень детализации тем меньший акцент при помощи форматирования должен присутствовать при выводе этих данных (например, данные по документу выделить большим шрифтом чем детализацию по этому документу). Выделить можно жирным начертанием, заливкой, смещать такие данные ближе к краю поля (т.е. детализация смещается правее) и т.д.
В дизайне, кажется ничего не изменил, т.к. я еще тот дизайнер)
Возможно, если на одного и того же клиента не выписываются документы в один день, нет смысла выносить его выше данных по документу, а сместить все в одну строку.


На закладке код подправил формулы и сместил их в нужное место.
Чтобы добавить обработчик события который должен выполняться при печати какого-то бенда (или поля), нужно выделить нужный объект и в инспекторе перейти на закладку События, выбрать нужное событие и кликнуть 2 раза в пустое (или уже не пустое) поле).


В поле всего (по клиенту) внес переменную  обозначающую = "сумма по идущим подряд документам одного пользователя".


Скидка, думаю, что может считаться в некоторых случаях неправильно (вы не используете поле ZNIG_TYPE, которое указывает скидка это или наценка, в соответствии с этим и формула должна изменяться), но принцип расчета не трогал, т.к. на моих данных выводились верные числа.

В общем все очень-очень хорошо. Толком не нашел ничего, что стоить править, так, мелкие детальки.



select
    s.*,
    s_.*,
    tz.*,
    u.*,
    (select sum (tzs.kolvo) from tovar_zal tzs where s_.tovar_id=tzs.tovar_id and (tzs.sklad_id>0)) as tz,   
    (select sum (tzs.kolvo) from tovar_zal tzs where s_.tovar_id=tzs.tovar_id and (tzs.sklad_id=-10)) as tz_rezerv   
from
    schet s
        inner join schet_ s_ on s.num=s_.pid
        left join tovar_zal tz on s_.tovar_id=tz.tovar_id and s_.sklad_id=tz.sklad_id
        left join s_users u on s.doc_user_id=u.num
where
    s.is_rezerv=1
order by    s.date_dok, s.nu,s_.tov_name

Работа в УкрСклад(особенности и советы): [url="//www.softbalance.com.ua/forum/index.php/topic,2362.0.html"]www.softbalance.com.ua/forum/index.php/topic,2362.0.html[/url]
Некоторые мои отчеты можно найти здесь: [url="http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html"]http://www.softbalance.com.ua/forum/index.php/topic,2307.0.html[/url]

lesyk

TheOK, большое Вам спасибо за помощь!!!! То, что Вы подправили очень удобно. Да, я забыл относительно надбавки, изменю формулу. А относительно выделение, то мне очень удобно когда выделяется тот товар который есть в наличии, потому что товар который туда попадает в основном нет на складе  и я вижу что выделено то я могу отдавать. Ещё раз спасибо за Вашу помощь!!!!!!!  :) :) :)