[ОТВЕТИТЬ]
Опции темы
16.01.2015 18:02  
vdm
Нашел.
У вас более новая версия, где спецификация акций вынесена из SMSpec в SMSpecMA (начиная с 1.030.4).
Т.е. меняй в скрипте имя таблицы.
 
"Спасибо" vdm от:
18.01.2015 19:04  
Aligator
Цитата:
Сообщение от vdm
Нашел.
У вас более новая версия, где спецификация акций вынесена из SMSpec в SMSpecMA (начиная с 1.030.4).
Т.е. меняй в скрипте имя таблицы.
Таки да, заработало, пошел тестировать.
Благодарю.
 
05.02.2015 13:08  
Aligator
Нарисовал ценник, но есть два вопроса:
на некоторых ценниках отображается единица измерения не как Грн/1шт, а как Грн/10 (обвел пример на второй картинке)
также не пойму почему при выводе на печать - то старая цена отображается верно, то старая цена становится нулевой. Такое стабильно происходит при печати от 2-х и более ценников (последние картинки как раз это показывают).
Оба товара находятся в одной МА.
Ценник во вложении.







Миниатюры
Нажмите на изображение для увеличения
Название: Image 1462.png
Просмотров: 547
Размер:	26.1 Кб
ID:	4340   Нажмите на изображение для увеличения
Название: Image 1463.png
Просмотров: 614
Размер:	6.9 Кб
ID:	4341   Нажмите на изображение для увеличения
Название: Image 1464.png
Просмотров: 537
Размер:	20.2 Кб
ID:	4342   Нажмите на изображение для увеличения
Название: Image 1465.png
Просмотров: 554
Размер:	7.2 Кб
ID:	4343   Нажмите на изображение для увеличения
Название: Image 1466.png
Просмотров: 662
Размер:	7.9 Кб
ID:	4344  

Нажмите на изображение для увеличения
Название: Image 1467.png
Просмотров: 533
Размер:	13.6 Кб
ID:	4345   Нажмите на изображение для увеличения
Название: Image 1468.png
Просмотров: 570
Размер:	10.4 Кб
ID:	4346  
Вложения
Тип файла: zip ves.zip (34.5 Кб, 91 просмотров)
 
06.02.2015 09:28  
vdm
Подпилил для работы как с будущими акциями, так и с работающими. Ошибки с нулевой ценой быть не должно.
По количеству 1/10 - см. штрихкоды, наверно там количество >1.
Код:
SELECT  t.article,
        t.price,
        supermag.russianspell.PriceCardString(0, t.price) as grn,
        supermag.russianspell.PriceCardString(2, t.price) as kop,
        supermag.russianspell.PriceCardString(0, t.oldprice) as oldprice_grn,
        supermag.russianspell.PriceCardString(2, t.oldprice) as oldprice_kop,
        t.RubName,
        t.KopName,
        (select p.PropVal
           from supermag.SMCardProperties p
          where p.Article=t.Article
            and p.PropID='Sys.Composition') Composition,
        (select p.PropVal
           from supermag.SMCardProperties p
          where p.Article=t.Article
            and p.PropID='Sys.BrandName') BrandName,
        (select p.PropVal
           from supermag.SMCardProperties p
          where p.Article=t.Article
            and p.PropID='Vesy_number') Vesy_number,
        t.name,
        t.cardcomment,
        t.country,
        t.qtyprint,
        t.unitname,
        t.isscale,
        t.plu,
        t.price_ma,
        supermag.russianspell.PriceCardString(0, t.price_ma) as price_ma1,
        supermag.russianspell.PriceCardString(2, t.price_ma) as price_ma2,
        t.ma_id,
        t.ma_datebegin,
        t.ma_dateend
FROM (
     SELECT t_pr.article,
            (case when d.docstate=2 then
                ROUND(sp.itemprice*t_pr.qty, t_pr.priceprec)
             else
                t_pr.price
             end
            ) price,
            (case when d.docstate=2 then
                t_pr.price
             else
                (select ROUND(ph.price*t_pr.qty, t_pr.priceprec)
                   from supermag.SMPriceHistory ph 
                  where (eventtime, recid) = 
                        (select max(eventtime), max(recid) 
                           from supermag.SMPriceHistory 
                          where article = ph.article 
                            and storeloc  = ph.storeloc
                            and pricetype = ph.pricetype
                            and ROUND(price*t_pr.qty, t_pr.priceprec) !=  t_pr.price)
                    and ph.storeloc  = :P_LOC 
                    and ph.article   = t_pr.article
                    and ph.pricetype = :P_PRICE_TYPE
                    and ROUND(ph.price*t_pr.qty, t_pr.priceprec) != t_pr.price)
             end
            ) oldprice,
            t_pr.RubName,
            t_pr.KopName,
            t_pr.name,
            t_pr.cardcomment,
            t_pr.country,
            t_pr.qtyprint,
            t_pr.unitname,
            t_pr.isscale,
            t_pr.plu,
            sp.itemprice price_ma,
            d.id ma_id,
            TRUNC (au.datebegin) ma_datebegin,
            TRUNC (au.dateend) ma_dateend
       FROM supermag.svpricecard t_pr,
            supermag.smdocuments d,
            supermag.SMSpecMA sp,
            supermag.smauctions au
      WHERE t_pr.article = sp.article
        AND d.doctype = 'MA'
        AND d.id = sp.docid
        AND d.doctype = sp.doctype
        AND t_pr.article = sp.article
        AND d.id = au.id
        AND d.doctype = au.doctype
        AND d.docstate >= 2
        AND au.dateend > SYSDATE
        AND (:P_LOC,:P_PRICE_TYPE) IN (SELECT am.locid, am.pricetype
                                         FROM supermag.smauctionatoms am
                                        WHERE am.aucid = d.id AND am.doctype = d.doctype)
) t
ORDER BY ma_id, article
 
"Спасибо" vdm от:
06.02.2015 10:45  
Aligator
Цитата:
Сообщение от vdm
Подпилил для работы как с будущими акциями, так и с работающими. Ошибки с нулевой ценой быть не должно.
По количеству 1/10 - см. штрихкоды, наверно там количество >1.
Код:
SELECT  t.article,
        t.price,
        supermag.russianspell.PriceCardString(0, t.price) as grn,
        supermag.russianspell.PriceCardString(2, t.price) as kop,
        supermag.russianspell.PriceCardString(0, t.oldprice) as oldprice_grn,
        supermag.russianspell.PriceCardString(2, t.oldprice) as oldprice_kop,
     ...
В тоде отрабатывает запрос, а в Faste выбивает в ошибку:


текст сообщения:
скрытое
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1473.png
Просмотров: 504
Размер:	13.3 Кб
ID:	4351  
 
06.02.2015 10:48  
Mtirt
У тебя в запросе осталось два параметра: P_Loc и P_Price_type.
Лишние параметры удали...
 
06.02.2015 14:51  
Aligator
Цитата:
Сообщение от Mtirt
У тебя в запросе осталось два параметра: P_Loc и P_Price_type.
Лишние параметры удали...
Пробовал, это не от туда ошибка:
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1474.png
Просмотров: 535
Размер:	13.5 Кб
ID:	4354  
 
06.02.2015 17:51  
vdm
Это баг fastreport, а точнее какого-то компонента visual studio.
Не умеет select из подзапроса. Гуглится. М.б. в последних версиях поправлено, но видимо не в вашей.

В качестве лечения предлагается "не делайте так, формируйте запрос в другом месте". И у С+ практически везде в отчетах запросы формируются динамически, в скрипте.

Можно конечно переписать без подзапроса, но рано или поздно придется усложнять и переписывать. Дальше напишу кратко что меняется.
 
06.02.2015 18:08  
vdm
1. В pricecards => sql пишется заглушка, где селектится голый список полей
Код:
SELECT ''article,
        0 price,
        '' grn,
        '' kop,
        '' oldprice_grn,
        '' oldprice_kop,
        '' RubName,
        '' KopName,
        '' Composition,
        '' BrandName,
        '' Vesy_number,
        '' name,
        '' cardcomment,
        '' country,
        '' qtyprint,
        '' unitname,
        '' isscale,
        '' plu,
        0 price_ma,
        '' price_ma1,
        '' price_ma2,
        '' ma_id,
        to_date('010101','DDMMYY') ma_datebegin,
        to_date('010101','DDMMYY') ma_dateend
FROM dual
2. В конце _StartReport пишется формирование и вызов реального запроса
Код:
...
        или за количество товара в упаковке (если в диалоге старта печати
        выбрана опция "Ценник на упаковку");
        0 - всегда печатать цену за единицу товара */
        1
        ); 

      string sSQL = SqlFormat("SELECT "+
      "t.article, "+
      "t.price,   "+
...
      "(select max(eventtime), max(recid) "+
      "from supermag.SMPriceHistory "+
      "where article = ph.article "+
      "and storeloc  = ph.storeloc "+
      "and pricetype = ph.pricetype "+
      "and ROUND(price*t_pr.qty, t_pr.priceprec) !=  t_pr.price) "+
      "and ph.storeloc  = {0:N} "+
      "and ph.article   = t_pr.article "+
      "and ph.pricetype = {1:N} "+
      "and ROUND(ph.price*t_pr.qty, t_pr.priceprec) != t_pr.price) "+
...
      "AND au.dateend > SYSDATE "+
      "AND ({0:N},{1:N}) IN (SELECT am.locid, am.pricetype "+
      "  FROM supermag.smauctionatoms am "+
      "WHERE am.aucid = d.id AND am.doctype = d.doctype) "+
      ") t "+
      "ORDER BY ma_id, article",
        Report.GetParameterValue("P_LOC"),
        Report.GetParameterValue("P_PRICE_TYPE")
        );  

      host.TableDataSourcePreInit("PriceCards", sSQL);
В SqlFormat() параметры P_LOC, P_PRICE_TYPE подставляются в текст на место макросов {0:N}, {1:N}.
Количество и тип полей выборки должно соответствовать тому, что указано в pricecards => sql.
TableDataSourcePreInit() выполняет запрос.
 
"Спасибо" vdm от:
10.02.2015 16:10  
Aligator
Добавил, но как понимаю, паршиво - получаю в лоб ошибки: скрытое

Просьба довести в этом вопросе, ладно я с простыми запросами через "PriceCards" как-то начал сам тыкать, но через sSQL для меня пока что высший пилотаж. Мой поломанный ценник во вложении
Вложения
Тип файла: rar ves_7.rar (34.8 Кб, 126 просмотров)
 
 


Опции темы



Часовой пояс GMT +3, время: 20:27.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.