Вопрос по заголовкам в отчетах

 
  • Добрый день.
    При создании отчетов есть возможность заполнения раздела Page info. При написании в меню Introduction определенного кода, можно в файл отчета получить дату и время создания отчета. Я пытался записать туда следующий код "'User: ' + vtext(!!user)", чтобы получить пользователя, который создавал отчет. Не сработало. Пример кода нашел в справке F1. В PML не разбираюсь. В support ответили что нет такой переменной 'user'. Может мне кто-нибудь помочь с этим вопросом?
  • Набери в командной строке Q USER и получишь имя PDMS юзера
    q evar username - получишь логин компьютера, с которого запущена PDMS
    Для полной картины используем
    define function !!GGOUserName() is STRING
     var !lgn evar username
     !user = !lgn.upcase()
     
     !user = !user.replace('STERENTYIEV',   'Терентьев')
     !user = !user.replace('YKRECHKO',      'Кречко')
     
     --**********  МТО 2 *************--
     !user = !user.replace('TDMITRIKOVA',   'Дмитрикова')
     !user = !user.replace('NKABAKOVA',     'Кабакова')
     !user = !user.replace('VLYSENKO',      'Лысенко')
     !user = !user.replace('NODINOKOVA',    'Одинокова')
     !user = !user.replace('APIROGOV',      'Пирогов')
     !user = !user.replace('YPODDUBNY',     'Поддубный')
     !user = !user.replace('IHLYPKOVKA',    'Хлыповка')

     return !user
    endfunction
  • Как показало расследование, такой переменной !!user действительно по умолчанию в PDMS нет. В Introduction можно писать не то же самое, что в командную строку, а только те выражения, которые заранее предопределены в макросах, описывающих репорты. Вот здесь и выяснилось, что в мануале говорится:
    The following examples are mainly taken from the templates supplied with the product.
    'Page No. ' + vtext (!pageno)
    'User name: ' + vtext(!!user)
    'Date: ' + vtext(!date) + ' ' + vtext(!time)
    ''
    'Nozzle Schedule for ' + vtext(!selhierarchy)
    'Summary: ' + vtext(!selsize) + ' Nozzles in Schedule'

    Я проверил - vtext(!date),  vtext(!time) работают, а vtext(!!user) - не работает, как и !pageno.
    Вскрытие показало, что в в скобках после vtext можно писать только те переменные, которые заданы в файле шаблона (на самом деле во временном файле в директории pdmswk, так как исполняется именно он, но в общем-то это одно и тоже :) )
    Так вот, переменная !!user там не описана, вот и не выводится.
    Судя по тому, что в отчие от даты и прочих вариантов, эта переменная глобальная, то скорее всего великий замысел разработчиков заключался в том, чтобы её можно было вводить независимо от репорта.
    Итого
    Есть два пути получить имя юзера во вступлении отчёта:
    1. Перед тем как запускать отчёт с vtext(!!user) надо ввести в командной строке !!user = 'Пупкин' либо var !!user evar username
    2. Поправить пару файликов в папочке C:\AVEVA\Pdms11.6.SP4\pdmsui\clib\rep (если интересно, могу написать, где именно)
  • Большое спасибо за ответы. Буду разбираться.

    [quote=sterentev;33641]
    2. Поправить пару файликов в папочке c:\aveva\pdms11.6.sp4\pdmsui\clib\rep (если интересно, могу написать, где именно)

    Да, очень интересно.
  • Добрый день.
    Меня интересует еще один вопрос, можно ли подсчитать количество найденных элементов в отчете?
  • Можно. Добавляется колонка QUANTITY, вкратце, ей ставится units Any/mm, в column layout->subtotals выбирается номер сортировки поля, которое необходимо подсчитать. Есть разобранный пример в Reporting Using VANTAGE PDMS 11.6
  • Спасибо, разобрался. Все работает.