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

Наши программы => УкрСклад => Тема розпочата: crazyjonyster від Вересень 25, 2015, 14:36:00

Назва: SQL запрос отчета (ПРАВКА запроса)
Відправлено: crazyjonyster від Вересень 25, 2015, 14:36:00
Подскажите, пожалуйста, как мне изменить код (что добавить), что бы в FastReport в печатную форму можно было добавить поле "Скрыть в прайсе", то есть [DataRep."IS_PRICE_INVISIBLE"]

Сейчас код отчета такой SELECT
    tp.name as group_name
    ,t.dopoln
    ,t.num AS product_id
    ,t.name AS product_name
    ,t.kod AS product_kod
    ,t.tov_scancode AS product_scancode
    ,c.num AS post_id
    ,c.fio AS post_fio
    ,zal.sklad_id
    ,zal.z_kolvo AS z_kolvo
    ,t.#цена_тип_поле# * zal.z_kolvo AS z_suma
    ,t.#цена_тип_поле# AS price
    ,SUM( tm.from_kolvo ) AS selling_kolvo
    ,SUM( tm.from_suma ) AS selling_sum
  FROM
    tovar_name t
        LEFT JOIN tip tp on t.tip = tp.num
        LEFT JOIN client c
      ON c.num = (
      SELECT
          FIRST 1 zal_post.LAST_POST_ID
        FROM
          tovar_zal zal_post
        WHERE
          zal_post.tovar_id = t.num
          AND zal_post.last_post_id != -1
    ) INNER JOIN view_sklad_zal_all ('#дата#') zal
      ON zal.num = t.num LEFT JOIN tovar_move tm
      ON tm.tovar_id = t.num
    AND tm.doc_type_id = 1
    AND tm.from_sklad_id = zal.sklad_id
    AND tm.mdate >= '#дата_с#'
    AND tm.mdate <= '#дата_по#'
  WHERE
    #if #товар_группа_№# = 0 #then #else t.tip = #товар_группа_№#
    AND #endif #if #поставщик_№# = 0 #then #else c.num = #поставщик_№#
    AND #endif zal.sklad_id IN (
      1
      ,63
      ,41
      ,42
      ,68
      ,71
      ,72
    )
  GROUP BY
    tp.name
    ,t.dopoln
    ,t.#цена_тип_поле#
    ,zal.z_kolvo
    ,t.num
    ,t.name
    ,t.kod
    ,t.tov_scancode
    ,c.num
    ,c.fio
    ,zal.sklad_id
  ORDER BY
    c.fio
    ,c.num
    ,t.name
    ,t.num


Я посмотрел код отчета прайс лист и нашел там "t.is_price_invisible", но как его правильно и куда вставить в свой код я не могу понять! Помогите пожалуйста, если кто-то может. Админы, вы точно знаете, подскажите! ))
Назва: Re: SQL запрос отчета (ПРАВКА запроса)
Відправлено: admin від Вересень 25, 2015, 14:41:19
SELECT
    tp.name as group_name
    ,t.dopoln
    ,t.num AS product_id
    ,t.name AS product_name
    ,t.kod AS product_kod
    ,t.tov_scancode AS product_scancode
    ,t.is_price_invisible
    ,c.num AS post_id
    ,c.fio AS post_fio
    ,zal.sklad_id
    ,zal.z_kolvo AS z_kolvo
    ,t.#цена_тип_поле# * zal.z_kolvo AS z_suma
    ,t.#цена_тип_поле# AS price
    ,SUM( tm.from_kolvo ) AS selling_kolvo
    ,SUM( tm.from_suma ) AS selling_sum
  FROM
    tovar_name t
        LEFT JOIN tip tp on t.tip = tp.num
        LEFT JOIN client c
      ON c.num = (
      SELECT
          FIRST 1 zal_post.LAST_POST_ID
        FROM
          tovar_zal zal_post
        WHERE
          zal_post.tovar_id = t.num
          AND zal_post.last_post_id != -1
    ) INNER JOIN view_sklad_zal_all ('#дата#') zal
      ON zal.num = t.num LEFT JOIN tovar_move tm
      ON tm.tovar_id = t.num
    AND tm.doc_type_id = 1
    AND tm.from_sklad_id = zal.sklad_id
    AND tm.mdate >= '#дата_с#'
    AND tm.mdate <= '#дата_по#'
  WHERE
    #if #товар_группа_№# = 0 #then #else t.tip = #товар_группа_№#
    AND #endif #if #поставщик_№# = 0 #then #else c.num = #поставщик_№#
    AND #endif zal.sklad_id IN (
      1
      ,63
      ,41
      ,42
      ,68
      ,71
      ,72
    )
  GROUP BY
    tp.name
    ,t.dopoln
    ,t.#цена_тип_поле#
    ,zal.z_kolvo
    ,t.num
    ,t.name
    ,t.kod
    ,t.tov_scancode
    ,t.is_price_invisible
    ,c.num
    ,c.fio
    ,zal.sklad_id
  ORDER BY
    c.fio
    ,c.num
    ,t.name
    ,t.num
Назва: Re: SQL запрос отчета (ПРАВКА запроса)
Відправлено: crazyjonyster від Вересень 25, 2015, 14:54:44
Спасибо! Все сработало! Супер!
Назва: Re: SQL запрос отчета (ПРАВКА запроса)
Відправлено: crazyjonyster від Вересень 25, 2015, 15:52:06
Есть еще один вопрос. Для вас это дело 10 секуд...

Как правильно написать выражение (функцию) "if или IIF", что бы из поля DataRep."IS_PRICE_INVISIBLE при значении 0 в отчет выдавало "Включить", а при значении 1 - "Отключить"

То есть из поля DataRep."IS_PRICE_INVISIBLE в отчет (печатную форму) выводится 0 или 1, а мне нужно что бы выводило "Включено" или "Отключено"
Назва: Re: SQL запрос отчета (ПРАВКА запроса)
Відправлено: admin від Вересень 25, 2015, 16:17:08
А зачем они тогда вообще вам в выборке, может в скрипте прописать условие чтобы выбирались товары только с IS_PRICE_INVISIBLE = 0?
Назва: Re: SQL запрос отчета (ПРАВКА запроса)
Відправлено: crazyjonyster від Вересень 25, 2015, 16:30:02
Цитата: admin від Вересень 25, 2015, 16:17:08
А зачем они тогда вообще вам в выборке, может в скрипте прописать условие чтобы выбирались товары только с IS_PRICE_INVISIBLE = 0?

Мне это нужно для синхронизации с Magento. Нужно что бы товары которые скрыты в прайсе скрывались и с сайта.

Но я уже сам нашел решение:

[IIF( <DataRep."IS_PRICE_INVISIBLE"> = 1, 'Отключить',
IIF( <DataRep."IS_PRICE_INVISIBLE"> = 0, 'Включить', 'ОШИБКА'))]