Мастера КОМПАСа

Мастера КОМПАСа

СообщениеАвтор: Администратор » 09.02.2010, 22:30

Здесь можно задать вопросы по работе Мастеров и обсудить их функционал.
Администратор
Администратор
 
Сообщения: 13
Регистрация: 23.12.2009, 17:11

Re: Мастера КОМПАСа

СообщениеАвтор: VladProg » 11.06.2010, 06:33

Здравствуйте.
Хочу в запросах использовать ПАРАМЕТР КОНФИГУРАЦИИ "ОТБОР_РМ()", для ограничение по отделам.
Пробывал включать в Мастере Запросов через Макропараметры, появлялось сообщение "...неверен реляционный оператор".
И не смог разобраться как использовать ПАРАМЕТР в Бизнес-процедуре.
Как и где можно использовать данный ПАРМЕТР?
VladProg
 
Сообщения: 5
Регистрация: 12.02.2010, 12:33

Re: Мастера КОМПАСа

СообщениеАвтор: bersenev » 11.06.2010, 14:34

VladProg писал(а):Хочу в запросах использовать ПАРАМЕТР КОНФИГУРАЦИИ "ОТБОР_РМ()",


Функция ОТБОР_РМ (или FIZ_OTDS) возвращает SQL-предложение для отбора
записей по номеру подразделения. Функция имеет параметр - имя поля, в
котором хранится номер подразделения. Например, если в качестве параметра
передать строку "CH_70_S.OTD", то результат будет примерно следующим:

(CH_70_S.OTD IS NULL OR
CH_70_S.OTD IN ('
','0013','2','6013','1','5','3','4','6003','6004','6005','6006','6009','6007
','6008','6010') OR CH_70_S.OTD IN ('6011','6001'))

Если оператор имеет полный доступ, функция возвращает пустую строку.

Функцию можно использовать в бизнес-процедурах для формирования текста
SQL-запроса. Пример бизнес-процедуры:

s = FIZ_OTDS("CH_70_S.OTD")
if not empty(s) then
s = " and "+s
end if

q = SQL "SELECT * FROM CH_70_S WHERE CH_70_S.GM_RAS='201005'"+s
...

Также функцию можно использовать при настройке связи со справочником с
помощью запросной формы - для заполнения макропараметров.

Непосредственно в мастере запросов функция не может быть использована, так
как при описании запроса значение макропараметра может быть только
константой и не может быть выражением. Но если при описании запроса имеются
макропараметры, то при использовании этого запроса из бизнес- процедуры с
помощью функций SQL или QForm одному из макропараметров может быть присвоено
значение, полученное с помощью функции FIZ_OTDS. Пример такой процедуры:

mac = ListBox
s = FIZ_OTDS("CH_70_S.OTD")
if not empty(s) then
mac.Add " and "+s
else
mac.Add ""
end if

a = QForm "CH_70_S_MAC",mac,"201005"
a.ShowModal

Здесь предполагается, что запросная форма "CH_70_S_MAC" имеет один параметр
и один макропараметр. Например, она может содержать следующий текст запроса:

SELECT * FROM CH_70_S
WHERE CH_70_S.GM_RAS=:mon
%s
bersenev
 
Сообщения: 2
Регистрация: 11.06.2010, 14:15

Re: Мастера КОМПАСа

СообщениеАвтор: VladProg » 15.06.2010, 08:22

Спасибо за ответ. Почему то в СПРАВКЕ не указано наименование функции латинскими буквами.

У меня еще вопрос.
Из полученных данных, с помощью Бизнес-процедуры, необходимо сформировать Отчет.
Можно использовать готовый шаблон, и как его заполнить? Причем в шаблоне используется Шахматка, при формировании заголовков колонок.
VladProg
 
Сообщения: 5
Регистрация: 12.02.2010, 12:33

Re: Мастера КОМПАСа

СообщениеАвтор: bersenev » 15.06.2010, 14:00

VladProg писал(а):Из полученных данных, с помощью Бизнес-процедуры, необходимо сформировать Отчет.
Можно использовать готовый шаблон, и как его заполнить? Причем в шаблоне используется Шахматка, при формировании заголовков колонок.

В настоящее время шахматку из бизнес-процедуры с помощью класса "Отчет"
("Report") сформировать нельзя. Но можно сделать по-другому, используя функцию
PrintReport с указанием псевдонима предварительно сформированного в Мастере
отчетов шаблона, в котором описана шахматка. Если данные получаются сложными
расчетами, произведенными в бизнес-процедуре, то перед печатью отчета их надо
записать во временную таблицу, а в шаблоне отчета использовать запросы по этой
таблице. Если данные собираются одним запросом, шаблон отчета можно просто
построить на основании такого же запроса.

ОБРАТИТЕ ВНИМАНИЕ: если таблица, используемая для записи данных, действительно
временная (создана с помощью функции ServerTempTable), ее имя надо передавать в
отчет с помощью макропараметра и использовать этот макропараметр в тексте
запроса. В бизнес-процедуре реальное имя временной таблицы можно получить с
помощью свойства TableName.

Пример бизнес-процедуры:

tbl = ServerTempTable("MY_TABLE")
... (здесь таблица заполняется)
Params = ListBox
... (здесь заполняются значения параметров отчета, если они есть)
Macros = ListBox
Macros.Add(tbl.TableName)
PrintReport "MY_REPORT","",Params,1,Macros

Пример запроса для данного отчета:

SELECT * FROM %s
ORDER BY DATA_N
bersenev
 
Сообщения: 2
Регистрация: 11.06.2010, 14:15

Re: Мастера КОМПАСа

СообщениеАвтор: VladProg » 16.06.2010, 08:28

:? Почему функция ServerTempTable "Не определена" в модуле "Наряды", при написании в Бизнес-процедуре
А в модуле "Управления персоналом - эта функция работает!
VladProg
 
Сообщения: 5
Регистрация: 12.02.2010, 12:33

Re: Мастера КОМПАСа

СообщениеАвтор: yax_sen » 16.06.2010, 11:56

VladProg писал(а)::? Почему функция ServerTempTable "Не определена" в модуле "Наряды", при написании в Бизнес-процедуре
А в модуле "Управления персоналом - эта функция работает!

Большое спасибо за замеченную ошибку. Благодаря Вам она уже исправлена. Исправление войдет в следующую сборку проекта, которая планируется на конец июня.
С уважением,
гл.эксперт компании "КОМПАС", к.т.н. Игорь Якобсон
Аватара пользователя
yax_sen
 
Сообщения: 25
Регистрация: 13.01.2010, 14:59

Re: Мастера КОМПАСа

СообщениеАвтор: eroshina » 21.06.2010, 12:59

VladProg писал(а)::? Почему функция ServerTempTable "Не определена" в модуле "Наряды", при написании в Бизнес-процедуре
А в модуле "Управления персоналом - эта функция работает!

Данный вопрос следует обсуждать в разделе http://forum.compas.ru/viewtopic.php?f=9&t=27
В следующий раз сообщение будет перенесено.
Модератор.
eroshina
 
Сообщения: 13
Регистрация: 30.04.2010, 11:20


Вернуться в ERP-система "КОМПАС"

Кто сейчас на конференции

Сейчас этот форум просматривают: в настоящее время на конференции нет зарегистрированных пользователей и гости: 1

cron