Uploaded by Сергей Иванюков

РУКОВОДСТВО РАЗРАБОТЧИКА WEB ФОРМ

advertisement
ООО «БАРС ГРУП»
РУКОВОДСТВО РАЗРАБОТЧИКА WEB –
ФОРМ
МИС «БАРС»
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
STD-РП.1.0
2011
Версия 1.02
PDF created with pdfFactory Pro trial version www.pdffactory.com
2
СОДЕРЖАНИЕ
1. Компоненты....................................................................................................... 6
1.1. Action ..................................................................................................................... 6
1.1.1. Использование Action для вызова действий раздела .................................................. 8
1.2. ActionVar ................................................................................................................ 8
1.3. DataSet .................................................................................................................. 10
Variable ............................................................................................................................... 11
2. “Репитеры” ........................................................................................................ 13
2.1. SubAction ............................................................................................................... 16
2.1.1. SubActionVar .............................................................................................................. 16
2.2. Edit ........................................................................................................................ 19
2.3. Label ...................................................................................................................... 20
2.4. Hyperlink ................................................................................................................ 20
2.5. Button .................................................................................................................... 21
2.6. ButtonEdit............................................................................................................... 21
2.7. CheckBox................................................................................................................ 23
2.8. RadioGroup ............................................................................................................. 23
2.9. RadioItem ............................................................................................................... 23
2.10. ComboBox............................................................................................................. 24
2.11. ComboItem ........................................................................................................... 25
2.12. DateEdit................................................................................................................ 26
2.13. Grid ...................................................................................................................... 26
2.14. Column ................................................................................................................. 28
2.15. GridFooter............................................................................................................. 30
2.16. Range ................................................................................................................... 30
2.17. Filter ..................................................................................................................... 31
2.18. FilterItem .............................................................................................................. 31
2.19. PageControl........................................................................................................... 33
2.20. TabSheet .............................................................................................................. 34
PDF created with pdfFactory Pro trial version www.pdffactory.com
3
2.21. Popup ................................................................................................................... 34
2.22. PopupItem ............................................................................................................ 35
2.23. Tree...................................................................................................................... 37
2.24. TreeColumn........................................................................................................... 38
2.25. UnitEdit................................................................................................................. 38
2.26. Script .................................................................................................................... 40
2.27. FillingTextArea....................................................................................................... 40
2.28. UnitView – создание зависимого словаря на форме .............................................. 41
2.29. UnitView – описание как композиции раздела ...................................................... 43
3. Редактирование, добавление каталогов ........................................................ 45
4. Выбор из каталога ............................................................................................ 47
5. Функции ............................................................................................................. 48
5.1. Окна ...................................................................................................................... 48
5.1.1. openWindow............................................................................................................... 48
5.1.2. closeWindow............................................................................................................... 48
5.1.3. reloadWindow............................................................................................................. 49
5.1.4. setWindowCaption....................................................................................................... 49
5.1.5. getWindowCaption ...................................................................................................... 49
5.2. События ................................................................................................................. 50
5.2.1. addEvend ................................................................................................................... 50
5.2.2. removeEvent .............................................................................................................. 50
5.2.3. dispatchEvent ............................................................................................................. 50
5.3. Базовые функции................................................................................................... 50
5.3.1. base........................................................................................................................... 50
5.3.2. getVar........................................................................................................................ 50
5.3.3. setVar ........................................................................................................................ 51
5.3.4. empty ........................................................................................................................ 51
5.3.5. executeAction ............................................................................................................. 51
5.3.6. refreshDataSet............................................................................................................ 52
5.4. Работа со свойствами контролов на форме............................................................ 52
PDF created with pdfFactory Pro trial version www.pdffactory.com
4
5.4.1. getProperty ................................................................................................................ 52
5.4.2. hasProperty ................................................................................................................ 52
5.4.3. setControlProperty ...................................................................................................... 53
5.4.4. getControlProperty ...................................................................................................... 53
5.4.5. setControlCaption........................................................................................................ 53
5.4.6. getControlCaption ....................................................................................................... 53
5.4.7. setCaption .................................................................................................................. 53
5.4.8. getCaption.................................................................................................................. 54
5.4.9. setControlValue........................................................................................................... 54
5.4.10. getControlValue......................................................................................................... 54
5.4.11. setValue ................................................................................................................... 54
5.4.12. getValue ................................................................................................................... 54
6. Неочевидные моменты..................................................................................... 56
6.1. Открытие модального окна .................................................................................... 56
6.2. Что за "пространства имён" (namespace, контекст)................................................ 57
6.3. Специальные символы в XML ................................................................................. 57
6.4. Часть 1. Как получить из компонента Grid или Tree еще одно значение,
кроме field (keyvalue) .................................................................................................... 58
6.5. Часть 2. Получить всю строку активной записи грида или дерева ......................... 58
6.6. Пустые значения и NULL ........................................................................................ 59
7. Типичные ошибки ............................................................................................. 60
7.1. Xml......................................................................................................................... 60
7.1.1. XML error: Empty document at line 1............................................................................ 60
7.1.2. Пропущен или не закрыт тег...................................................................................... 60
7.2. JavaScript ............................................................................................................... 60
8. Словарь .............................................................................................................. 61
PDF created with pdfFactory Pro trial version www.pdffactory.com
5
Лист регистрации изменений
Дата
Версия
Версия
внесения
Изм.
Системы документа
изменений
Автор
изменений
PDF created with pdfFactory Pro trial version www.pdffactory.com
Краткое описание изменений
6
1. КОМПОНЕНТЫ
1.1. Action
Описание:
Описывает действие, которое будет выполняться на сервере Oracle. Текст
внутри тега рассматривается как неименованный блок PL/SQL. Каждую используемую
переменную нужно обязательно описать с помощью компонента ActionVar.
Внутренний PL/SQL-скрипт обязательно должен начинаться с "begin" и заканчиваться
"end;".
Формат: <component cmptype="Action" name="…"> … </component>
Атрибут
name
Обяз.
+
Описание
Имя действия, по которому его можно вызвать впоследствии с
помощью вызова: executeAction('[имя_действия]').
unit
-
Раздел, для которого определены стандартные процедуры (UNITBPS)
добавления и исправления
showerror
-
Показывать ли ошибки: принимает значения “true” или “false”
action
-
Указывается для вызова стандартной процедуры из UNITBPS
mode
-
Если указать значение mode=”get”, то будет выполняться GET
запрос,
Если указать значение mode=”post”, то будет выполняться POST
запрос
Допустимые вложенные компоненты:
• ActionVar
Пример:
<component cmptype="Action" name="AddOneAction">
begin
select :a + 1 into :b
from dual;
end;
<component cmptype="ActionVar" name="a" get="varA" src="some_var" srctype="var"/>
<component cmptype="ActionVar" name="b" put="varB" len="17" src="Edit1"
srctype="ctrl"/>
</component>
<component cmptype="Edit" name="Edit1"/>
<component cmptype="Button" caption="Add" onclick="executeAction('AddOneAction')"/
PDF created with pdfFactory Pro trial version www.pdffactory.com
7
Использование Action для вызова действий раздела
Компонент
Action
может
использоваться
для
вызова
процедур
зарегистрированных в разделе “Действия над разделами системы” код: UNITBPS.
1. Action используется для одного действия:
Задача: для раздела системы с кодом UNITLIST нужно на форме вызвать
процедуру D_PKG_UNITLIST.ADD
Решение:
a) Зарегистрировать действие в справочнике “Действия над разделами системы”
для раздела UNITLIST
Код действия – INSERT
Полный код действия – UNITLIST_ INSERT
Наименование действия – Система: разделы: Добавление
Процедура - D_PKG_UNITLIST.ADD
b) Атрибут name компонента ActionVar должен совпадать с именем переменной в
процедуре
Текст процедуры: d_pkg_unitlist.add(pninsert_id =>: pninsert_id, psunitcode =>
:psunitcode, psunitname => :psunitname, pstablename => :pstablename);
<component cmptype="Action" name="INSERT_ACTON" unit="UNITLIST" action=”INSERT”
mode=”post”>
<component cmptype="ActionVar" name=”PNINSERT_ID" put="v0" src="INSERT_ID"
srctype="var">
<component cmptype="ActionVar" name="PSUNITCODE" get=”v1” src="UNITCODE"
srctype="ctrl"/>
<component cmptype="ActionVar" name=”PSUNITNAME" get="v2" src="UNITNAME"
srctype="ctrl" />
<component cmptype="ActionVar" name="PSTABLENAME" src=”TABLENAME" get="v3”
srctype="ctrl"/>
</component>
<component cmptype="Action" name="INSERT_ACTON" unit="UNITLIST" action=”INSERT”
mode=”post”>
<component cmptype="ActionVar" name=”PNINSERT_ID" put="v0" src="INSERT_ID"
srctype="var">
<component cmptype="ActionVar" name="PSUNITCODE" get=”v1” src="UNITCODE"
srctype="ctrl"/>
<component cmptype="ActionVar" name=”PSUNITNAME" get="v2" src="UNITNAME"
srctype="ctrl" />
PDF created with pdfFactory Pro trial version www.pdffactory.com
8
<component cmptype="ActionVar" name="PSTABLENAME" src=”TABLENAME" get="v3”
srctype="ctrl"/>
</component>
В данном коде значения для создания новой записи значения берутся из формы
по названиям компонентов: UNITCODE, UNITNAME, TABLENAME
Результат выполнения процедуры PNINSERT_ID – записывается в переменную с
именем INSERT_ID. Необязательно заранее создавать на форме переменную она
создастся сама после выполнения процедуры и получения на форму результата.
1.1.1. Использование Action для вызова действий раздела
Например, для добавления и редактирования.
Действия предварительно должны быть зарегистрированы в “Действиях разделов”.
<component cmptype="Action" name="ADDUPDATE_ACTON" unit="UNITLIST”
mode=”post”>
<component cmptype="ActionVar" name=”PNINSERT_ID" put="v0" src="INSERT_ID"
srctype="var">
<component cmptype="ActionVar" name=”PNID" get="v1" src="ID" srctype="var">
<component cmptype="ActionVar" name="PSUNITCODE" get=”v2” src="UNITCODE"
srctype="ctrl"/>
<component cmptype="ActionVar" name=”PSUNITNAME" get="v3" src="UNITNAME"
srctype="ctrl" />
<component cmptype="ActionVar" name="PSTABLENAME" src=”TABLENAME" get="v4”
srctype="ctrl"/>
<component cmptype="ActionVar" name="action" src=”actionvar" get="action”
srctype="var"/>
</component>
В случае, когда один Action используется для нескольких действий – имена
ActionVar (атрибут name), так же как и первом случае нужно задавать такие же, как в
процедуре. Причем не нужно дублировать переменные процедуры, если имена
одинаковые. Если имена разные – то разные ActionVar. При выполнении процедуры
возьмутся только нужные.
Важно! Дополнительно к переменным процедуры должен быть ActionVar с именем
name="action", меняя значение переменной actionvar на форме setVar(‘actionvar’,
‘INSERT’); для добавления setVar(‘actionvar’, ‘UPDATE’); для редактирования перед
вызовом Action-а на форме – будет выполняться то или иное действие.
1.2. ActionVar
Описание
PDF created with pdfFactory Pro trial version www.pdffactory.com
9
Описывает переменную, используемую внутри PL/SQL-кода, её связь с
переменными и компонентами окна. Входные переменные обязательно должны иметь
атрибут get, выходные – put. Исключение составляют переменные, связанные с
переменными сессии, для них атрибуты get и put указывать не надо.
Формат:
<component cmptype="ActionVar" name="…" get="…" put="…" len="…" src="…"
srctype="…" />
Атрибут Обяз.
Описание
name
+
Имя переменной. Внутри PL/SQL-кода доступ к переменной
производится именно по этому имени
get
-
Имя параметра, которое будет использоваться для передачи
значения переменной в GET или POST-запросе (В зависимости от
атрибута mode указанного в компоненте Action). Используется
внутренне, но должно быть обязательно указанно, если переменная
входная (и уникально внутри одного Action'а). Для sessionпеременных (srctype="session") указывать необязательно.
ignorenull
-
Определяет поведение, когда значение входной переменной равно
null:
•
true – если значение переменной равно null, то
соответствующий параметр (значение атрибута get) не попадает в
GET-запрос,
•
put
-
false (по умолчанию) – противоположное поведение.
Имя параметра, которое будет использовано при возврате значения
переменной с сервера. Используется внутренне, но должно быть
обязательно указанно, если переменная выходная (и уникально
внутри одного Action'а).
len
-
Необходим только если у компонента стоит атрибут get.
Длина буфера для хранения возвращённого значения переменной.
Например, если тип переменной NUMBER(17), то значение атрибута
должно быть установлено, как минимум в 17; для VARCHAR2(130) –
соответственно, 130. Указывается только при наличии атрибута put.
Значение по умолчанию – 1.
src
+
Имя компонента или переменной окна, в зависимости от значения
атрибута srctype, из которого брать и/или в который записывать
PDF created with pdfFactory Pro trial version www.pdffactory.com
10
значение для переменной.
srctype
+
Тип источника для переменной:
•
ctrl – компонент с именем, указанным в атрибуте src,
•
var – переменная с именем, указанным в атрибуте src,
•
ctrlcaption – свойство Caption компонента с именем,
указанным в атрибуте src,
•
session – переменная с именем, указанным в атрибуте src,
находящаяся в сессии.
Допустимые вложенные компоненты:
• нет
Пример:
<component cmptype="Action" name="AddOneAction">
begin
select :a + 1, :c into :b, :d from dual;
end;
<component cmptype="ActionVar" name="a" get="varA" src="some_var" srctype="var"/>
<component cmptype="ActionVar" name="b" put="varB" len="17" src="Edit1"
srctype="ctrl"/>
<component cmptype="ActionVar" name="c" put="varC" src="C" srctype="session"/>
<component cmptype="ActionVar" name="d" put="varD" len="17" src="D" srctype="var"/>
</component>
<component cmptype="Edit" name="Edit1"/>
<component cmptype="Button" caption="Add" onclick="executeAction('AddOneAction')"/>
1.3. DataSet
Описание:
Источник данных. Текст внутри тега рассматривается, как PL/SQL-скрипт,
возвращающий таблицу с данными. Внутри тега также должны быть вставлены
компоненты Variable, по одному на каждую используемую в скрипте переменную.
Символы "<" и ">" внутри скрипта недопустимы и должны быть заменены на "<" и
">" соответственно.
Формат: <component cmptype="DataSet" name="…"/>
Атрибут
Обяз.
name
+
activateoncreate
-
Описание
Указывает, нужно ли активировать источник данных при
открытии окна.
PDF created with pdfFactory Pro trial version www.pdffactory.com
11
mode
-
•
true (по умолчанию) – активировать
•
false – не активировать
Режим работы датасета:
• Range (выгрузка частичная по rownum)
• (по умолчанию) – стандартный режим, выгрузка
всех данных
Допустимые вложенные компоненты:
• Variable
Пример:
<component cmptype="DataSet" name="DS3" mode="Range">
select rownum rn,
t.object_name,
t.object_type,
t.owner,
t.timestamp
from all_objects t
where rownum <= :fff
<component cmptype="Variable" type="count" srctype="var" src="ds3count"
default="10"/>
<component cmptype="Variable" type="start" srctype="var" src="ds3start" default="1"/>
<component cmptype="Variable" srctype="var" get="fff" name="fff" src="aaaa"
default="1002"/>
</component>
В DataSet переменные с типом count и start необходимы для работы с
компонентом Range, обеспечивающим частичное отображение данных на клиентской
стороне (страничное отображение).
Variable
Описание: Переменная источника данных.
Формат:
<component cmptype="Variable" name="…" get="…" src="…" type="…" srctype="…"
default="…"/>
Атрибут Обяз.
Описание
name
да
get
да
Значение любое – как будет переменная называться в GET-POST
запросах при её передаче.
Значит, что передаем данные на сервер и записываем их в
PDF created with pdfFactory Pro trial version www.pdffactory.com
12
переменную или контрол (зависит от параметра srctype)
put
да
Значение любое – как будет переменная называться в GET-POST
запросах при её передаче.
Значит, что получаем данные с сервера и записываем их в
переменную или контрол (зависит от параметра srctype)
src
Имя переменной или контрола
type
srctype
default
да
•
count
•
start
•
(по умолчанию)
Берет данные из
•
ctrl – значения контрола
•
var – из переменной
•
ctrlcaption – из заголовка переменной
•
const
Значение по умолчанию
Допустимые вложенные компоненты:
• нет
PDF created with pdfFactory Pro trial version www.pdffactory.com
13
2. “РЕПИТЕРЫ”
Описание:
Данный компонент позволяет организовывать повторяющиеся визуальные блоки
по содержимому источника данных (DataSet) для визуального представления
нескольких записей таблиц БД на экранной форме.
Атрибут
Обяз.
Описание
dataset
+
Источник данных
groupname
-
Имя для группы “клонируемых” элементов
keyfield
+
Первичный ключ (для связи мастер-детейл)
-
Признак того, что контейнер является детейлом к мастеру
detail
Принимает: true и false
parentfield
repeate
label
-
Обязательно для детейла, ссылается на родительский ключ
+
Количество вытаскиваемых строк из Источника данных. Если
repeat=”0”, то вытаскиваем все данные
-
Перед каким элементом вставлять копируемые данные
Функции для “репитеров”:
removeRepeaterClone ('Имя группы из клонируемых элементов (берётся из
groupname)',this);
Данная функция позволяет удалять группу элементов
addRepeaterClone(''Имя группы из клонируемых
элементов (берётся из
groupname)',{SURNAME(поле из датасета, используемое в группе):'test(значение,
присваиваемое полю)',ID(поле из датасета, используемое в группе):'(значение,
присваиваемое полю)'},this,'labelservice(название label, перед которым будем
вставлять клонируемый объект)');
Данная функция создаёт новую группу элементов с заданными значениями. В
функцию вторым параметром в {} скобках передаются все клонируемые поля в виде
объекта js. Формат: {‘имя1’:’значение1’,’имя2’:’значение2’}
DataSet для примеров:
<component cmptype="DataSet" name="DS_EMPLOYERS" mode="Range">
select t.SURNAME,
t.ID
from D_V_EMPLOYERS t
where rownum<7
</component>
<component cmptype="DataSet" name="DS_EMP_SERVICES" mode="Range">
select t.SERVICE,
PDF created with pdfFactory Pro trial version www.pdffactory.com
14
t.PID
from D_V_EMP_SERVICES t
where rownum<50
</component>
Пример простого “репитера”:
<div cmptype="test" dataset="DS_EMPLOYERS" repeate="0" groupname="employers"
keyfield="ID">
<component cmptype="Label" captionfield="SURNAME" style="color:red"/>
</div>
В результате получим следующее:
Т.е. мы вытаскиваем все строки из DataSet.
Рис. 1
Пример вложенного “репитера”:
<div cmptype="test_parent" dataset="DS_EMPLOYERS" repeate="0" keyfield="ID">
<component cmptype="Label" captionfield="SURNAME" style="color:red"/>
<div cmptype="test_child" dataset="DS_EMP_SERVICES" repeate="0" detail="true"
parentfield="PID">
<component cmptype="Edit" datafield="SERVICE" style="color:green"/>
<component cmptype="Edit" value="7657" style="color:green"/>
</div>
</div>
В результате мы получим:
Т.е. для каждой
родительской записи
получаем дочерние.
Рис. 2
PDF created with pdfFactory Pro trial version www.pdffactory.com
15
Пример функций клонирования и удаления для “репитеров”
<component cmptype="Label" captionfield="SURNAME" clone="base().testtt(this);"
style="color:red"/>
<div cmptype="test_child" dataset="DS_EMP_SERVICES" repeate="0" detail="true"
groupname="services" parentfield="PID">
<component cmptype="Edit" datafield="SERVICE" style="color:green"/>
<component cmptype="Edit" caption="7657" style="color:green"/>
<component cmptype="Button"
onclick="removeRepeaterClone('services',this);" caption="Удалить"/>
</div>
<component label="labelservice" cmptype="Button"
onclick="addRepeaterClone('services',{SERVICE:'test',ID:''},this,'labelservice');"
caption="Добавить"/>
</div>
До нажатия на кнопку добавить у нас
получится следующее:
Рис. 3
После нажатия на кнопку «Добавить»
получим следующее:
У
нас
добавилась
новая
строка,
обведённая на рисунке.
Рис. 4
PDF created with pdfFactory Pro trial version www.pdffactory.com
16
Теперь нажмём на кнопку «Удалить» в
первой строке, в результате получим:
Строка исчезла.
Рис. 5
Одним из примеров “репитера” является компонент Grid
2.1. SubAction
Описание
Служит для забора данных из сгенерированных или добавленных “репитеров” И в
дальнейшем для отправки на сервер на обработку, где для каждого клонируемого
объекта можно выполнить свою процедуру. SubAction всегда должен быть вложен в
Action
Атрибут
Обяз.
Описание
name
+
Имя SubAction
groupname
+
Имя клонируемой группы
Тип:
type
+
• upd для объектов, сгенерированных из DataSet
• add для объектов, добавленных пользователем
• del для объектов, удалённых пользователем
Допустимые вложенные компоненты:
• SubActionVar
2.1.1. SubActionVar
Описание:
Описывает переменную, вложенную в SubAction. ActionVar для обычного Action.
Атрибут
name
Обяз.
+
Описание
Имя SubActionVar
PDF created with pdfFactory Pro trial version www.pdffactory.com
17
get
Имя параметра, которое будет использоваться для передачи
значения переменной в запросе.
src
+
Имя компонента или переменной окна, в зависимости от значения
атрибута srctype, из которого брать значение для переменной.
srctype
+
Тип источника для переменной:
•
ctrl – компонент с именем, указанным в атрибуте src,
•
var – переменная с именем, указанным в атрибуте src,
•
parent - позволяет брать переменную из Action или
родительского SubAction.
Допустимые вложенные компоненты:
• нет
Пример работы SubAction:
После нажатия на Б1 вызовется
SubAction на удаление группы services,
при нажатии на Б2 вызовется
SubAction на добавление группы
services
Рис. 6
<component cmptype="Script">
Form.Post=function (){
executeAction('testACTION',function (){
alert('Ok');
},function (){
alert('no');
});
}
</component>
<div>
<component cmptype="Button" onclick="base().Post();" caption="POST"/> <!-- Кнопка
для вызова Action-->
</div>
PDF created with pdfFactory Pro trial version www.pdffactory.com
18
<div cmptype="test_parent" dataset="DS_EMPLOYERS" repeate="0"
groupname="employers" keyfield="ID">
<component cmptype="Label" name="lSURNAME" captionfield="SURNAME"
style="color:red"/>
<div cmptype="test_child" dataset="DS_EMP_SERVICES" repeate="0"
detail="true" groupname="services" parentfield="PID">
<component cmptype="Edit" name="eSERVICE" datafield="SERVICE"
style="color:green"/>
<component cmptype="Edit" name="eMyValue" value="7657"
style="color:green"/>
<component cmptype="Button"
onclick="removeRepeaterClone('services',this);" caption="Удалить"/>
</div>
<component label="labelservice" cmptype="Button"
onclick="addRepeaterClone('services',{SERVICE:'test',ID:''},this,'labelservice');"
caption="Добавить"/>
</div>
<!--Action с вложенными SubAction-->
<component cmptype="Action" name="testACTION" mode="post">
<component cmptype="SubAction" name="employersupd" groupname="employers"
type="upd"> <!--SubAction на автоматически сгенерированные данные в группе
employers -->
<component cmptype="SubActionVar" name="lSURNAME" get="lSURNAME"
src="lSURNAME" srctype="ctrlcaption"/>
<!--lSURNAME - Имя компонента в группе (в данном случае в группе employers)
-->
<component cmptype="SubAction" name="SERVadd" groupname="services"
type="add"> <!--SubAction на ручное добавление данных в группе services
(Активируется при нажатии кнопки Б2 на рисунке) -->
<component cmptype="SubActionVar" name="eSERVICE" get="eSERVICE"
src="eSERVICE" srctype="ctrl"/>
<!--eSERVICE - Имя компонента в группе (в данном случае в группе
services) -->
<component cmptype="SubActionVar" name="eMyValue" get="eMyValue"
src="eMyValue" srctype="ctrl"/>
</component>
<component cmptype="SubAction" name="SERVupd" groupname="services"
type="upd"> <!-- SubAction на автоматически сгенерированные данные в
группе services (Все данные, изображённые на рисунке)-->
<component cmptype="SubActionVar" name="eSERVICE" get="eSERVICE"
src="eSERVICE" srctype="ctrl"/>
<component cmptype="SubActionVar" name="eMyValue" get="eMyValue"
src="eMyValue" srctype="ctrl"/>
</component>
<component cmptype="SubAction" name="SERVdel" groupname="services"
type="del"> <!--SubAction на ручное удаление данных в группе services
(Активируется при нажатии кнопок Б2 или Б3) -->
<component cmptype="SubActionVar" name="eSERVICE" get="eSERVICE"
src="eSERVICE" srctype="ctrl"/>
<component cmptype="SubActionVar" name="eMyValue" get="eMyValue"
src="eMyValue" srctype="ctrl"/>
</component>
</component>
<component cmptype="SubAction" name="employersadd" groupname="employers"
type="add">
<component cmptype="SubActionVar" name="lSURNAME" get="lSURNAME"
src="lSURNAME" srctype="ctrlcaption"/>
<component cmptype="SubAction" name="SERVadd" groupname="services"
type="add">
<component cmptype="SubActionVar" name="eSERVICE" get="eSERVICE"
src="eSERVICE" srctype="ctrl"/>
<component cmptype="SubActionVar" name="eMyValue" get="eMyValue"
src="eMyValue" srctype="ctrl"/>
PDF created with pdfFactory Pro trial version www.pdffactory.com
19
</component>
</component>
<component cmptype="SubAction" name="employersdel" groupname="employers"
type="del">
<component cmptype="SubActionVar" name="lSURNAME" get="lSURNAME"
src="lSURNAME" srctype="ctrlcaption"/>
<component cmptype="SubAction" name="SERVdel" groupname="services"
type="del">
<component cmptype="SubActionVar" name="eSERVICE" get="eSERVICE"
src="eSERVICE" srctype="ctrl"/>
<component cmptype="SubActionVar" name="eMyValue" get="eMyValue"
src="eMyValue" srctype="ctrl"/>
</component>
</component>
</component>
2.2. Edit
Описание: Поле ввода.
Формат: <component cmptype="Edit" />
Атрибут
Обяз.
name
+
Имя
value
-
Значение
readonly
-
Доступен только для чтения
captionfield
-
Значение берётся из DataSet
disabled
-
Активность Edit
Описание
Все атрибуты HTML input
width
-
если размер указывается в пикселях, то px в конце указывать не
надо, т.е. width=”100” - правильно, width=”100px”-
неправильно
Если размер указывается в процентах, то знак % необходим, т.e.
width=”60%”
Допустимые вложенные компоненты:
• нет
Пример 1:
<component cmptype="Edit" width="150" name="PL_NAME" />
Пример 2 с DataSet:
<div cmptype="test" dataset="DS_TEST" repeate="1">
<component cmptype="Edit" captionfield="SURNAME" name="testedit" />
</div>
PDF created with pdfFactory Pro trial version www.pdffactory.com
20
2.3. Label
Описание: Просто текст.
Формат: <component cmptype="Label" name="…"/>
Атрибут
Обяз.
Описание
name
+
Имя
caption
-
Подпись
captionfield
-
Значение берётся из DataSet
enabled
-
Доступность компонента для изменения его значения и подписи
Допустимые вложенные компоненты:
• нет
Пример 1:
<component cmptype="Label" width="100" caption="FIO" name="lFIO" />
Пример 2 с dataset:
<div cmptype="test" dataset="DS_TEST" repeate="0">
<component cmptype="Label" captionfield="ID" />
</div>
2.4. Hyperlink
Описание: Ссылка.
Формат: <component cmptype="Hyperlink" captionfield="…" datafield="…" caption="…"
onclick="…"/>
Атрибут
Обяз.
Описание
name
+
Имя компонента
caption
-
Текст, отображаемый в компоненте
onclick
-
Действие, происходящее при нажатии на ссылку
datafield
-
Поле, которое запишется в value ссылки (берётся из DataSet)
captionfield
-
Поле, которое запишется в caption ссылки (берётся из DataSet)
Допустимые вложенные компоненты:
• нет.
Пример 1:
<component cmptype="HyperLink" value="23423" caption="test"
onclick="alert(getControlValue(this));"/>
PDF created with pdfFactory Pro trial version www.pdffactory.com
21
Пример 2 с Dataset:
<div cmptype="test" dataset="DS_TEST" repeate="0">
<component cmptype="HyperLink" datafield="ID" captionfield="SURNAME"
onclick="alert(getControlValue(this));"/>
</div>
2.5. Button
Описание: Кнопка.
Формат: <component cmptype="Button" name="…" caption="…" onclick="…" />
Атрибут
Обяз.
Описание
name
+
Имя компонента.
caption
-
Текст, который будет отображаться на кнопке.
onclick
+
Javascript-код, который будет выполнен при нажатии на кнопку.
Допустимые вложенные компоненты:
• нет
Пример:
<component cmptype="Button" name="ButtonOk" onclick="base().OnButtonOk();"
caption="OK"/>
2.6. ButtonEdit
Описание: Поле ввода с кнопкой.
Формат: <component cmptype="ButtonEdit" dataset="…" repeate="…" datafield="…"/>
Атрибут
Обяз.
Описание
name
+
Имя компонента.
value
-
Текст в поле ввода компонента
readonly
-
Принимает значения true или false. Доступ к компоненту только для
чтения.
enabled
-
Принимает значения true или false. Делает недоступным действия с
компонентом на форме.
dataset
-
Источник данных (DataSet)
datafield
-
Поле записывается в value компонента (берётся из DataSet)
captionfield
-
Поле записывается в Caption компонента (берётся из DataSet)
PDF created with pdfFactory Pro trial version www.pdffactory.com
22
repeate
-
Повторитель
buttononclick
-
Действие на нажатие кнопки ButtonEdit-а
onclick
-
Действие на нажатие на div, в которую вложены Input и Кнопка
компонента
unit
+
Необходим для корректного возвращения данных из открытого
модального окна (для записи в Caption и Value). В качестве
значения можно передавать любой не зарезервированный текст
cssstyle
-
Стиль button-edit. Доступные стили:
• по умолчанию: button-edit;
• галочка: activ;
• биноколь-поиск: search;
• деньги: price
onblur
-
Событие на потерю фокуса с поля для ввода
Допустимые вложенные компоненты:
• нет
Пример:
<component cmptype="ButtonEdit" unit="tmp" name="DISC_MARG"
buttononclick="base().DISC_MARG_CLICK();"/>
<component cmptype="Script">
Form.DISC_MARG_CLICK= function()
{
openWindow('PriceList/ServDiscmargs/serv_discmargs', true,750,550)
.addListener('onclose',
function(){
if (getVar('ModalResult', 1) == 1)
{setValue('DISC_MARG',getVar('return_id',1), 1);
setCaption('DISC_MARG',getVar('return',1), 1);
}
},
null,
false);
}
</component>
Причем на вызываемой форме переменные должны обязательно возвращаться в
переменные (var) 'return' и ‘return_id’
на форме должен быть JS скрипт заполнения
переменных:
setVar('return_id',значение переменной попадет в значение ctrl );
setVar('ModalResult',1,1);
setVar('return', значение переменной, которое попадет в св-во ctrlcaption);
closeWindow();
PDF created with pdfFactory Pro trial version www.pdffactory.com
23
2.7. CheckBox
Описание: Флажок-галочка.
Формат: <component cmptype="CheckBox” name=" " valuechecked="1"
valueunchecked="0" caption=" "/>
Атрибут
Обяз.
Описание
name
+
Имя компонента
activ
-
Принимает значения true или false. Состояние компонента
checked
valuechecked
+
Значение, передаваемое компонентом в активном состоянии
valueunchecked
+
Значение, передаваемое компонентом в не активном состоянии
caption
-
Текстовая подпись к CheckBox
Допустимые вложенные компоненты:
• нет
Пример:
<component cmptype="CheckBox” name=" IS_CITIZEN" valuechecked="1"
valueunchecked="0" caption="Городской житель"/>
2.8. RadioGroup
Описание: Группа переключателей.
Формат: <component cmptype="RadioGroup" name="…" mode="…"> … </component>
Атрибут
Обяз.
Описание
name
+
Имя
mode
-
vertical
horizontal (по умолчанию)
Допустимые вложенные компоненты:
• RadioItem
2.9. RadioItem
Описание: Элемент группы переключателей.
Формат: <component cmptype="RadioItem" value="…" caption="…" activ="…"/>
PDF created with pdfFactory Pro trial version www.pdffactory.com
24
Атрибут
Обяз.
Описание
value
Значение
caption
Заголовок
activ
-
Принимает значения true или false. Состояние компонента checked
captionfield
-
Поле записывается в Caption компонента (берётся из DataSet)
datafield
-
Поле записывается в Value компонента (берётся из DataSet)
dataset
-
Источник данных (DataSet)
repeat
-
Сколько строк доставать из DataSet (если repeat=0, то забираем все
строки)
Допустимые вложенные компоненты:
• нет
Пример 1:
<component cmptype="RadioGroup" name="RadioComp" onclick=" ">
<component cmptype="RadioItem" value="0" caption="False" activ="true"/>
<component cmptype="RadioItem" value="1" caption="True"/>
</component>
Пример 2 с Dataset:
<component cmptype="RadioGroup" name="RadioComp" onclick=" ">
<component cmptype="RadioItem" DataSet="DS_TEST" repeate="0" activ="true"
captionfield="SURNAME" datafield="ID"/>
<component cmptype="RadioItem" value="1" caption="True"/>
</component>
2.10. ComboBox
Описание: Выпадающий список.
Формат: <component cmptype="ComboBox" />
Атрибут
name
Обяз.
да
Описание
Имя компонента
caption
-
Заголовок первой пустой опции в выпадающем списке
readonly
-
Принимает значения true или false. Доступ к компоненту только
для чтения.
enabled
-
Принимает значения true или false. Делает недоступным
действия с компонентом на форме.
PDF created with pdfFactory Pro trial version www.pdffactory.com
25
width
-
Ширина в пикселях, значение должно быть указано без «px»
height
-
Высота компонента в пикселях, значение должно быть указано
без «px»
size
-
Количество опций видимых одновременно
Допустимые вложенные компоненты:
• ComboItem
2.11. ComboItem
Описание: Элемент выпадающего списка.
Формат: <component cmptype="ComboItem" />
Атрибут
Обяз.
Описание
value
+
Передаваемое значение
caption
+
Текст
activ
-
Принимает значения true или false. Состояние компонента
selected
dataset
-
Источник данных (DataSet)
captionfield
-
Поле записывается в Caption компонента (берётся из DataSet)
datafield
-
Поле записывается в Value компонента (берётся из DataSet)
repeate
-
Сколько строк доставать из DataSet (если repeat=0, то забираем
все строки)
Допустимые вложенные компоненты:
• нет
Пример 1:
<component cmptype="ComboBox" name="INABILITY_GROUP">
<component cmptype="ComboItem" caption="1" value="1"/>
<component cmptype="ComboItem" caption="2" value="2"/>
<component cmptype="ComboItem" caption="3" value="3"/>
</component>
Пример 2 c Dataset:
<component cmptype="ComboBox" name=" TEST">
<component cmptype="ComboItem" caption="" value="Все"/>
<component cmptype="ComboItem" datafield="ID" captionfield="SURNAME"
DataSet="DS_TEST" repeate="0"/>
PDF created with pdfFactory Pro trial version www.pdffactory.com
26
</component>
2.12. DateEdit
Описание: Поле выбора даты.
Формат: <component cmptype="DateEdit" name=”GoDate” />
Атрибут
Обяз.
Описание
name
+
value
-
Значение поля для ввода
onclick
-
Событие на нажатие иконки, кнопки с календарем
readonly
-
Принимает значения true или false. Доступ к компоненту
только для чтения.
enabled
-
Принимает значения true или false. Делает недоступным
действия с компонентом на форме.
width
-
Ширина в пикселях, значение должно быть указано без «px»
height
-
Высота компонента в пикселях, значение должно быть
указано без «px»
Допустимые вложенные компоненты:
• нет
Пример:
<component cmptype="DateEdit" name="BIRTHDATE">
2.13. Grid
Описание: Грид, таблица с колонками данных, в качестве источника данных
использует DataSet
Формат: <component cmptype="Grid" > … </component>
Атрибут
name
Обяз
+
Описание
Имя грида
grid_caption
Заголовок грида
dataset
Источник данных
field
Значение для keyvalue - возвращаемое значение активной
PDF created with pdfFactory Pro trial version www.pdffactory.com
27
записи для компонента Grid. Так же может быть доступно,
если вызвать через функцию getValue(‘Имя_Грида’);
onchange
Javasсript-код, который будет выполняться после смены
текущей строки в гриде.
afterrefresh
-
Javasсript-код, который будет выполняться после
обновления грида.
returnfield
-
Если атрибут field пустой, то значение для keyvalue берется
из данного атрибута(returnfield) Так же может быть
доступно, если вызвать через функцию
getCaption(‘Имя_Грида’);
height
-
Высота всего компонента может быть зафиксирована этим
атрибутом. Таблица данных с фиксированным заголовком
(заголовок таблицы, заголовки колонок и фильтры) и
подвалом (GridFooter). Значение атрибута должно быть в px!
Пример: 400px.
excel
-
Отображать с возможностью выгрузки в excel. Принимает
значение true или false
selectlist
-
Отображать записи как список для множественного выбора
с CheckBox напротив каждой строки данных таблицы.
Принимает значение true или false.
onclick
-
Событие на одинарный щелчок мыши на записи в гриде.
ondblclick
-
Событие на двойной щелчок мыши на записи в гриде.
width
-
Ширина в пикселях, значение должно быть указано с «px»
Например width=”200px”
height
-
Высота компонента в пикселях, значение должно быть
указано с «px»
Допустимые вложенные компоненты:
• Column
• GridFooter
PDF created with pdfFactory Pro trial version www.pdffactory.com
28
2.14. Column
Описание: Колонка в гриде.
Формат: <component cmptype="Column" />
Атрибут
Обяз
Описание
.
name
+
Название колонки
caption
+
Заголовок колонки
hint
-
Подсказка колонки
field
-
Поле для отображения данных в таблице
sort
-
Поле, по которому сортировать
sortorder
-
Порядок сортировки
excelfield
-
Поле, значение которого переходит в выгрузку excel
filter
-
Поле, по которому фильтровать фильтр
upper
-
Учитывать регистр в отборе. True – не учитывать,
false- учитывать
condition
-
Условие; принимаемые значения:
none |like |gt |lt |eq | neq |gteq |lteq
like
-
Сравнение по маске; принимаемые значения:
none |left |right |both
filter_kind
-
Вид фильтрации:
text – текстовое поле, в фильтре отображается как
обычное поле для ввода;
data – текстовое поле с календарем;
numb – отображается как обычное поле для ввода;
cmb[…любой код] – поле со списком (combobox) см.
fk_content,
В словарь можно добавлять любые свои такие поля
со списком, если оформить их таким образом:
cmb_unit – поле со списком, значение которого
заполняются из словаря.
unitedit – поле выбора из словаря с «тремя
точками».
PDF created with pdfFactory Pro trial version www.pdffactory.com
29
unitmulti – поле множественного выбора из
словаря, при таком выборе нужные пункты
отмечаются галочками (checkbox) напротив нужных
записей.
perioddate – для отбора периода дат. Отображается
как два поля выбора даты, первое устанавливает
начало и конец периода.
periodnumb – для отбора значений по числовому
промежутка. Отображается как два текстовых поля
ввода, первое устанавливает начало и конец
промежутка.
fk_content
-
Используется если вид фильтра (cmb[…любой код]).
В нем храниться формат выпадающего поля со
списком. Разбирается на сервере в формате:
Значение_Опции1|Подпись_Опции1;Значение_Опци
и2|Подпись_Опции2
fk_show_method_un
-
it,
Раздел метода показа и код метода показа
применяются для cmb_unit
fk_show_method_co
de
fk_composition_unit,
-
fk_composition_code
width
Раздел композиции и код композиции применяются
для вида фильтра: unitedit и unitmulti
-
Ширина колонки в пикселях. Значение должно быть
указано без «px» Например width=”200”
Допустимые вложенные компоненты:
• любой другой компонент.
Пример:
<component cmptype="Grid" width="100%" name="EMP_GRID" dataset="DS_EMPS"
field="ID">
<component cmptype="Column" caption = "Ф.И.О. сотрудника" upper="true"
filter="FIO" sort="FIO" sortorder="1" field="FIO"/>
<component cmptype="Column" caption = "Код врача" field="KOD_VRACHA"
filter="KOD_VRACHA" upper="true" sort="KOD_VRACHA" sortorder="2"/>
<component cmptype="Column" caption = "Оплачено" sort="IS_FULLY_PAID">
<component cmptype="CheckBox" valuechecked="1" valueunchecked="0"
datafield="IS_FULLY_PAID" onclick="alert(getControlValue(this));"/>
PDF created with pdfFactory Pro trial version www.pdffactory.com
30
</component>
</component>
2.15. GridFooter
Описание: "Подвал" в гриде. Добавляет строку с ячейкой, которая растягивается на
высоту 100% от свободного места занимаемого таблицей.
Формат: <component cmptype="GridFooter" >…<component/>
Атрибут
Обяз.
separate
Описание
true
false (по умолч.)
Допустимые вложенные компоненты:
• Range
Пример:
<component cmptype="Grid" style= "width:100%" name="CASH_GRID"
dataset="DS_CASH_GRID" field="CON_PAYS_ID" onchange="">
<component cmptype="Column" caption = "На какую дату запись"
field="REC_DATE"/>
<component cmptype="GridFooter">
<component count="10" cmptype="Range" id="range1" varstart="ds1start"
varcount="ds1count" valuecount="10" valuestart="1"/>
</component>
</component>
2.16. Range
Описание: Элемент для вывода данных постранично.
Формат: <component cmptype="Range" count="…" varstart="…" varcount="…"
valuecount="…" valuestart="…" insteadrefresh="…"/>
Атрибут
count
Обяз.
Описание
+
количество перемоток под гридом
+
переменные, используемые для управления источником данных
valuecount
+
по сколько строк перематывать
valuestart
+
с какой строки грида начать перемотку
varstart
varcount
Допустимые вложенные компоненты:
PDF created with pdfFactory Pro trial version www.pdffactory.com
31
• нет
Пример:
<component cmptype="Grid" style= "width:100%" name="CASH_GRID"
dataset="DS_CASH_GRID" field="CON_PAYS_ID" onchange="">
<component cmptype="Column" caption = "На какую дату запись"
field="REC_DATE"/>
<component cmptype="GridFooter" separate="false">
<component insteadrefresh="InsteadRefresh(this);" count="10"
cmptype="Range" id="range1" varstart="ds1start" varcount="ds1count"
valuecount="10" valuestart="1"/>
</component>
</component>
2.17. Filter
Описание: Фильтр отбора данных из DataSet.
Формат: <component cmptype="Filter" name="…" dataset="…">…</component>
Атрибут
Обяз.
Описание
name
+
Имя компонента.
dataset
+
Обновляемый им датасет
Допустимые вложенные компоненты:
• FilterItem
2.18. FilterItem
Описание: Элемент фильтра.
Формат: <component cmptype="FilterItem" name="…" field="…" caption="…"/>
Атрибут
Обяз.
Описание
name
+
Имя
field
+
Поле в датасет
caption
-
Заголовок в фильтре, печатается над полем для ввода
upper
-
Учитывать ли регистр при отборе.
Принимаемые значения: “true” (не учитывать) и “false”
condition
-
Условие
Принимаемые значения:
PDF created with pdfFactory Pro trial version www.pdffactory.com
32
none |like |gt |lt |eq | neq |gteq |lteq
like
-
Сравнение по маске
Принимаемые значения:
none |left |right |both
onkeypress
-
Событие на нажатие «Enter» или любой другой клавиши
в поле фильтра.
filter_kind
+
Вид фильтра, если не заполнено, то передается значение
filter_kind=”text”
text| numb| date| combo| periodnumb| perioddate |
unitedit| unitmulti| cmb_unit
fk_unit
-
Раздел для видов фильтра: unitedit| unitmulti| cmb_unit
fk_show_metho
-
Метод показа для вида фильтра: cmb_unit
fk_composition
-
Код композиции для видов фильтра: unitedit| unitmulti|
fk_content
-
Используется если вид фильтра (cmb[…любой код])
d
формат поля со списком разбирается на сервере:
Значение_Опции1|Подпись_Опции1;Значение_Опции2|П
одпись_Опции2
Допустимые вложенные компоненты:
• нет
Пример:
//DataSet:
<component cmptype=" DataSet " name="DS3" mode="Range">
select rownum rn, t.object_name, t.object_type, t.owner, t.timestamp
from all_objects t
where rownum <= :fff
<component cmptype="Variable" type="count" srctype="var" src="ds3count"
default="10"/>
<component cmptype="Variable" type="start" srctype="var" src="ds3start" default="1"/>
<component cmptype="Variable" srctype="var" get="fff" name="fff" src="aaaa"
default="1002"/>
</component>
//Grid:
<component cmptype="Grid" dataset="DS3" field="RN" afterrefresh="" onchange="">
PDF created with pdfFactory Pro trial version www.pdffactory.com
33
<component cmptype="Column" caption = "Имя" filter="RN"
sort="RN"><component buttononclick="alert(this.tagName);" style= "width:100%"
cmptype="ButtonEdit" datafield="RN"/></component>
<component cmptype="Column" caption = "Фамилия" field="OBJECT_TYPE"
sort="OBJECT_TYPE" sortorder="-1" onClick="alert(this.tagName);"/>
<component cmptype="Column" caption = "owner" sort="OWNER" filter="OWNER"
sortorder="2">
<component cmptype="HyperLink" captionfield="OWNER"
onclick="alert(this.tagName);"/></component>
<component cmptype="GridFooter"><td><!--component cmptype="FilterItem"
field="OBJECT_TYPE"/--></td><td>надпись</td><td>подпись</td></component>
<component cmptype="GridFooter" separate="true">
<component insteadrefresh="InsteadRefresh(this);" count="10" cmptype="Range"
id="range1" varstart="ds3start" varcount="ds3count" valuecount="10" valuestart="1"/>
</component>
</component>
//Filter:
<component cmptype="Filter" dataset="DS3">
<component cmptype="FilterItem" field="OBJECT_TYPE" name="FI_OBJECT_TYPE"
/>
<component cmptype="FilterItem" field="RN" name="FI_RN" caption="RNка"/>
</component>
Фильтр, как компонент грида - сверху. Фильтр, как отдельный компонент – внизу
грида.
2.19. PageControl
Описание: Панель с закладками.
Формат: <component cmptype="PageControl" name="…" id="…" mode="…"> …
</component>
Атрибут
Обяз.
Описание
name
+
mode
-
vertical (по умолчанию), horizontal
cssstyle
-
Стиль вкладок на форме. Стандартные стили:
• tab - -зеленый (по умолчанию);
• tab-level-1 - бледно-зеленый;
• tab-level-2 - ярко-зеленый;
PDF created with pdfFactory Pro trial version www.pdffactory.com
34
• tab-grey
- серый.
Пример использования в форме редактирования данных пациента
(persmedcard)
Допустимые вложенные компоненты:
• TabSheet
2.20. TabSheet
Описание: Один "лист" в PageControl'е.
Формат: <component cmptype="TabSheet" caption="…" activ="…"> … </component>
Атрибут
Обяз.
caption
hide
Описание
Подпись вкладки
-
Скрывать, если true. Если не установлено свойство ни для одной
вкладки на PageControl – то активная всегда первая
activ
Допустимые вложенные компоненты:
• Любые компоненты
Пример:
<component cmptype="PageControl" name="test" mode="gorizontal" >
<component cmptype="Tabsheet" caption="1">
<component cmptype="Label" caption="Вкладка1"/>
</component>
<component cmptype="Tabsheet" caption="2">
<component cmptype="Label" caption="Вкладка2"/>
</component>
</component>
Вкладки могут скрываться динамически:
setTabSheetVisibleByName ( /* имя вкладки*/, _flag/*0-невидимый;1-видимый;*/)
setTabSheetVisible ( _dom/* dom – объект вкладки*/, _flag/*0-невидимый;1-видимый;*/)
2.21. Popup
Описание
Контекстное меню, вызываемое правым щелчком мыши на объекте. Если меню
присоединено к основному (join_menu=”true”) – то необходимое условие: чтобы в коде
PDF created with pdfFactory Pro trial version www.pdffactory.com
35
присоединенное popup menu было ниже основного. Контекстное меню применяется к
компонентам грид и дерево, хотя объектом меню может быть любой из компонентов
формы
Формат: <component cmptype=" Popup " name="…" popupobject ="грид или дерево"
onpopup =””> … </component>
Атрибут
Обяз.
Описание
name
+
Имя
popupobject
+
Объект контекстного меню
is_show
-
Показывать/Скрыть меню
hasimages
-
Наличие картинок, по умолчанию true, если нужно отключить
показ картинок – ставим false
cid_object
-
Ссылка на каталог, права на действия могут быть ограничены по
каталогам. Просто переносится на все дочерние пункты меню,
потому что, как правило, одно контекстное меню относится к
одному объекту каталога.
onpopup
-
Действие перед показом меню
join_menu
-
Имя компонента присоединенного меню, если меню
присоединенное – то свойство popupobject=”” остается пустым.
Допустимые вложенные компоненты:
• PopupItem
2.22. PopupItem
Описание: Пункт контекстного меню. Используется только в компоненте Popup.
Формат: <component cmptype=" PopupItem" name="…" caption=”” image=””> …
</component>
Атрибут
Обяз.
Описание
name
+
Имя
caption
+
Подпись пункта меню, если подпись «-» значит это разделитель
image
-
Путь к картинке-иконке
onclick
+
Событие на одинарный щелчок мыши (выбор пункта меню)
onpopup
-
Действие перед показом данного пункта меню
disable
-
Доступность пункта меню, по умолчанию true. Если false – пункт
PDF created with pdfFactory Pro trial version www.pdffactory.com
36
закрашивается серым, и не показываются дочерние пункты данного
пункта
hide
-
Скрывать, если true.
unitbp
-
Код раздела UNITBPS – «Действия разделов», нужен для
предварительной проверки прав пользователя на данное действие в
Системе.
cid_object
-
Ссылка на каталог, права на действия могут быть ограничены по
каталогам.
Допустимые вложенные компоненты:
• PopupItem – если структура пунктов меню многоуровневая.
Пример:
<component cmptype="Popup" name="pAGENTS" popupobject="GRID_AGENTS"
onpopup="base().optionPopupAgent();">
<component cmptype="PopupItem" name="pREFRESH_AGENTS"
caption="Обновить" onclick="refreshDataSet('DS_AGENTS');"
image="Images/img/refresh.gif"/>
<component cmptype="PopupItem" name="pSEPARETE" caption="-"/>
<component cmptype="PopupItem" name="pEDIT_AGENT"
unitbp="AGENTS_UPDATE" caption="Редактировать" onclick="base().EDIT();"
image="Images/img/edit.gif"/>
<component cmptype="PopupItem" name="pADD_AGENT"
unitbp="AGENTS_ADD_FULL" caption="Добавить" onclick="base().ADD();"
image="Images/img/insert.gif"/>
<component cmptype="PopupItem" name="pADD_PMC_BY_AGENT"
caption="Добавить карту пациента" onclick="base().ADD_PERSMEDCARD();"
image="Images/person_add.png"/>
<component cmptype="PopupItem" name="CATALOGS_DEFAULT_popup_move"
unitbp="AGENTS_MOVE_OUT" caption="Переместить" onclick="base().MoveCatalog();"
image="Images/img/move.gif"/>
<component cmptype="PopupItem" name="pDEL_AGENT"
unitbp="AGENTS_DELETE" caption="Удалить" onclick="base().DEL();"
image="Images/img/delete.gif"/>
</component>
Действия отличаются от обычных. Например:
PopUpItem_SetDisable(Объект КонтекстноеМеню,ИмяПункта,_state /*true/false типа
boolean!!!*/)
Набор свойств:
Нет, т.к. доступ к пунктам меню организован не как к отдельным компонентам на
форме, а через js-объект основного контекстного меню
Функции:
PDF created with pdfFactory Pro trial version www.pdffactory.com
37
• Заголовок (подпись пункта меню)
PopUpItem_SetCaption(_domObject,_itemName,_caption)
PopUpItem_GetCaption(_domObject,_itemName)
• Картинка:
PopUpItem_SetImage(_domObject,_itemName,_src_image)
PopUpItem_GetImage(_domObject,_itemName)
• Действие:
PopUpItem_SetOnClick( _domObject,_itemName,_onclick)
•
Доступность:
PopUpItem_SetDisable(_domObject,_itemName,_state /*true/false типа boolean!!!*/)
PopUpItem_GetDisable(_domObject,_itemName)
•
Видимость:
PopUpItem_SetHide(_domObject,_itemName,_state /*true/false типа boolean!!!*/)
PopUpItem_GetHide(_domObject,_itemName)
Если изменен заголовок, картинка, видимость с помощью этих функций, то после
необходимо перегрузить все контекстное меню: PopUpMenu_Create(_domObject)
2.23. Tree
Описание: Таблица с древовидной иерархичной структурой. Дерево.
Формат: <component cmptype="Tree" dataset="…" keyfield="…" parentfield="…"
onrefresh="…" hide=””/>
Атрибут
name
Обяз.
+
Описание
Имя дерева
dataset
Источник данных
keyfield
Ключевое поле
parentvar
Прописываем переменную, указывающую на ветку дерева
(используется в DataSet для получения одного уровня дерева)
parentfield
Ключ иерархии
afterrefresh
Действие, происходящее после обновления дерева
onchange
Действие, происходящее при выборе ветки дерева
Допустимые вложенные компоненты:
PDF created with pdfFactory Pro trial version www.pdffactory.com
38
• TreeColumn
Пример:
<component cmptype="Tree" name="CabLabTree" dataset="DS_CABLABTREE"
keyfield="ID" parentfield="PID" parentvar="tree_parent" haschildrenfield="HC"
afterrefresh="" onchange="">
<component cmptype="TreeColumn" caption = "Наименование" field="NAME"/>
</component>
2.24. TreeColumn
Описание: Колонка в дереве
Формат: <component cmptype="TreeColumn" caption = "" field=" "/>
Атрибут
Обяз
Описание
caption
+
Название колонки
field
+
Поле колонки (со значениями)
Допустимые вложенные компоненты:
• Любой простой компонент
Пример:
<component cmptype="Tree" name="CabLabTree" dataset="DS_CABLABTREE"
keyfield="ID" parentfield="PID" parentvar="tree_parent" haschildrenfield="HC"
afterrefresh="" onchange="">
<component cmptype="TreeColumn" caption = "Наименование" field="NAME"/>
</component>
2.25. UnitEdit
Описание: "Провал" в справочник.
Формат: <component cmptype="UnitEdit" name="…" unit="…" composition="…"
parent_ctrl="…" onblur="…"/>
Атрибут
Обяз.
Описание
name
+
Имя компонента.
unit
+
Имя модуля, который должен отобразиться при "провале".
composition
+-
Имя композиции, которая указывает, как именно отображать
выбранный модуль. (Для отображения как ButtonEdit)
parent_ctrl
-
Имя компонента, в котором хранится идентификатор (id)
родительской записи. – Как ограничение на значения в
PDF created with pdfFactory Pro trial version www.pdffactory.com
39
композиции
parent_var
-
Имя переменной, в котором хранится идентификатор (id)
родительской записи. – Как ограничение на значения в
композиции
onblur
-
Javascript-код, который будет выполняться, когда текстовое поле
теряет фокус.
disabled
-
method
-+
Доступность компонента для ввода на форме
Метод показа раздела (d_show_metod )
Необходим для отображения как: ComboBox, RadioGroup,
FillingTextArea
type
-
ComboBox - для отображения в виде поля со списком
RadioGroup - группа переключателей
FillingTextArea – наполнение из словаря
Edit - текстовое поле
ButtonEdit - поле с кнопкой (выставляется по умолчанию если type
не указан)
addlistener
-
Прописываем ссылку на функцию, которая будет выполняться
после закрытия окна для выбора.
Допустимые вложенные компоненты:
• нет
Пример 1:
<component cmptype="UnitEdit" parent_ctrl="ButtonEdit_UNITLIST_Default"
unit="SHOW_METHOD" composition="Show_method_wtht_ul"/>
Пример 2 radio group:
<component cmptype="UnitEdit" unit="UNITLIST" method="LIST" type=" RadioGroup"/>
Пример 3 addlistener:
<component cmptype="UnitEdit" name="AGENT" width="150" unit="AGENTS" onchange=""
addlistener="base(0).Block_UNBLOCK" composition="DEFAULT"/>
PDF created with pdfFactory Pro trial version www.pdffactory.com
40
2.26. Script
Описание: JavaScript управления поведением формы, загрузок DataSet и Actions,
открытия новых окон и т.д.
Формат: <component cmptype=”Script”> … </component>
Атрибуты:
• нет
Допустимые вложенные компоненты:
• нет
Пример:
<component cmptype=”Script”>
Form.Test=function()
{
alert(‘Test’);
}
</component>
2.27. FillingTextArea
Описание
Множественный
Наполняемый
возможностью
выбор
список
ввода
значений
из
из
значений
вручную
словаря.
словаря
с
дополнительных
значений. Реализован как: левая колонка К1 – это
поле со списком, вторая колонка К2 – текстовая
область для ввода.
Колонка
К1
формируется
из
Источника
данных
(DataSet) и при двойном щелчке на строке (showfield) в
колонке К1 значение (returnfield) выбранной строки
переносится в колонку K2. Поле К2 является TextArea
Рис. 7
и в него можно вручную добавлять данные.
Формат: <component cmptype="FillingTextArea" name="" caption=””/>
Атрибут
Обяз
Описание
.
name
+
Наименование компонента
caption
-
Заголовок компонента
PDF created with pdfFactory Pro trial version www.pdffactory.com
41
fillingdataset
+
Источник данных для компонента
returnfield
+
Значение компонента (то, что перенесётся в колонку К2)
showfield
+
Значение, которое видим в колонке К1
Допустимые вложенные компоненты:
• нет
Пример:
<component cmptype="FillingTextArea" name="FL1" caption=”TEST”
fillingdataset="DS_TEST" returnfield="ID" showfield="SURNAME"/>
2.28. UnitView – создание зависимого словаря на форме
Описание: Отображение на форме словаря по настройкам методов показа.
Формат: <component cmptype="UnitView" unit=" " show_method=" "/>
Атрибут
Обяз.
Описание
unit
+
Имя модуля, который должен отобразиться
detaildataset
-
Зависимый раздел 'DS_<раздел>_<метод показа раздела>'
add_script
-
Скрипт на добавление
edit_script
-
Скрипт на редактирование
del_script
-
Скрипт на удаление
show_method
+
Метод показа описанный в базе гридом или деревом, где
фильтры, сортировки и т.п.
Пример:
<component cmptype="Script">
Form.ADD_AGENT_CONTACTS=function()
{
openWindow('Agents/agent_contacts/agent_contacts_edit', true, 500, 250)
.addListener('onclose',
function (){
if (getVar('ModalResult', 1) == 1) {
refreshDataSet('DS_AGENT_CONTACTS_DEFAULT',true,1);
}
},
null,
false);
}
Form.EDIT_AGENT_CONTACTS=function(_dom)
{
PDF created with pdfFactory Pro trial version www.pdffactory.com
42
setVar('AGENT_CONTACTS_ID', getControlValue(_dom));
openWindow('Agents/agent_contacts/agent_contacts_edit', true, 500, 250)
.addListener('onclose',
function (){
if (getVar('ModalResult', 1) == 1) {
refreshDataSet('DS_AGENT_CONTACTS_DEFAULT',true,1);
}
},
null,
false);
}
Form.DEL_AGENT_CONTACTS=function(_dom)
{
confirmWindow('Вы действительно хотите удалить запись?'),function(){
setVar('AGENT_CONTACTS_DEL_ID', getControlValue(_dom));
setVar('action', 'DELETE')
executeAction('AGENT_CONTACTS_DEL',
function(){refreshDataSet('DS_AGENT_CONTACTS_DEFAULT');}, null, null); },null);
}
</component>
<component cmptype="Action" name="AGENT_CONTACTS_DEL"
unit="AGENT_CONTACTS">
<component cmptype="ActionVar" name="pnID" src="AGENT_CONTACTS_DEL_ID"
get="var1" srctype="var" />
<component cmptype="ActionVar" name="pnLPU" src="LPU" srctype="session"/>
<component cmptype="ActionVar" name="action" src="action" get="var0"
srctype="var" />
</component>
<table class="form-table" style="height:300px; width:100%; table-layout: fixed;">
<tr style="height:100%;width:100%;">
<td>
<component
cmptype="UnitView"
unit="AGENT_CONTACTS"
show_method="DEFAULT"
add_script="base().ADD_AGENT_CONTACTS();"
edit_script="base().EDIT_AGENT_CONTACTS(this);"
del_script="base().DEL_AGENT_CONTACTS(this);"
/>
</td>
</tr>
</table>
Имя компонента составное и складывается из двух параметров: unit и show_method.
Т.е.
если
unit=”TEST”,
а
show_method=”DEFAULT”,
PDF created with pdfFactory Pro trial version www.pdffactory.com
то
имя
компонента
будет
43
TEST_DEFAULT,
имя же Источника данных, используемое компонентом получается
путём добавления в начало DS_, т.е имя датасета будет DS_TEST_DEFAULT
2.29. UnitView – описание как композиции раздела
На форме в примере три взаимосвязанных словаря:
Каталоги – Доп. словари – Значения доп. словаря
Чтобы описать зависимость с другим датасетом необходимо объявить его как
зависимый: свойство detaildataset 'DS_<раздел>_<метод показа раздела>'
Для автоматической генерации действий Добавления, Редактирования и Удаления в
соответствующие атрибуты необходимо вставить значение «auto» (add_script="auto"
edit_script="auto" del_script="auto").
<table cmptype="TMP" style="height:500px;width:100%; table-layout: fixed;">
<tbody style="height:100%">
<tr style="height:50%">
<td style="height:100%;width:30%" rowspan="2">
<component
cmptype="UnitView"
unit="CATALOGS"
show_method="DEFAULT"
detaildataset="DS_EXTRA_DICTS_DEFAULT"
catalog_unitcode="EXTRA_DICTS"
/>
</td>
<td>
<component
cmptype="UnitView"
unit="EXTRA_DICTS"
show_method="DEFAULT"
detaildataset="DS_EXTRA_DICT_VALUES_DEFAULT"
edit_script="base().EDIT(this);"
del_script="base().DEL(this);"
add_script="base().ADD();"
/>
</td>
</tr>
<tr style="height:50%">
<td>
<component
cmptype="UnitView"
unit="EXTRA_DICT_VALUES"
show_method="DEFAULT"
edit_script="base().EDIT_VALUE(this);"
del_script="base().DEL_VALUE(this);"
PDF created with pdfFactory Pro trial version www.pdffactory.com
44
add_script="base().ADD_VALUE();"
/>
</td>
</tr></tbody>
</table>
PDF created with pdfFactory Pro trial version www.pdffactory.com
45
3. РЕДАКТИРОВАНИЕ, ДОБАВЛЕНИЕ КАТАЛОГОВ
Описание
Для редактирования или добавления каталогов необходимо в модальное окно
передавать
ID
каталога
setVar('ID',
getValue('CATALOGS_DEFAULT'));
CATALOGS_DEFAULT - имя каталога, чью ID передаём.
Передать действие: добавления - setVar("act",'ADD');
или редактирования
setVar("act",'EDIT');
Пример:
Form.CAT_AddEdit=function(mod_act)
{
setVar('ID', getValue('CATALOGS_DEFAULT'));
if(mod_act=='edit')
{
setVar("act",'EDIT');
}
else
{
setVar("act",'ADD');
}
openWindow('CatalogEdit/catalog_edit', true, 300, 130)
.addListener('onclose',
function (){
if (getVar('ModalResult', 1) == 1) {
refreshDataSet('DS_CATALOGS_DEFAULT',true,1);
}
},
null,
false);
}
Выбор из каталога
Script:
Form.setValueAfterSelect_DontUseThisFunc = function()
{
getValueAfterSelect(this);
}
//Catalogs
Form.ShowCatalogs = function(_dom)
{
setVar("UNIT","AGENTS")
openWindow('Catalogs/catalogs', true,580,400)
.addListener('onclose',
base(0).setValueAfterSelect_DontUseThisFunc,
PDF created with pdfFactory Pro trial version www.pdffactory.com
46
}
Компонент на форме:
_dom,
false);
<component cmptype="ButtonEdit" name="CATALOG" readonly="true"
buttononclick="base().ShowCatalogs(this.parentNode);" width="500"/>
PDF created with pdfFactory Pro trial version www.pdffactory.com
47
4. ВЫБОР ИЗ КАТАЛОГА
Script:
Form.setValueAfterSelect_DontUseThisFunc = function()
{
getValueAfterSelect(this);
}
//Catalogs
Form.ShowCatalogs = function(_dom)
{
setVar("UNIT","AGENTS")
openWindow('Catalogs/catalogs', true,580,400)
.addListener('onclose',
base(0).setValueAfterSelect_DontUseThisFunc,
_dom,
false);
}
Компонент на форме:
<component cmptype="ButtonEdit" name="CATALOG" readonly="true"
buttononclick="base().ShowCatalogs(this.parentNode);" width="500"/>
PDF created with pdfFactory Pro trial version www.pdffactory.com
48
5. ФУНКЦИИ
5.1. Окна
5.1.1. openWindow
openWindow(formName, onCloseCallback, modal, width, height)
Открывает окно с указанным именем (путь к форме, где хранится окно*). Даже если
окно открыто "модально", функция не ждёт закрытия окна, а передаёт управление на
следующее действие,
• formName – имя окна, т.е. имя файла без расширения, в котором описано само
окно;
• onCloseCallback – функция, которая будет выполнена после закрытия
"модального" окна; выполняется в контексте открытого окна, т.е. внутри этой
функции вместо, например, refreshDataSet(DS, true) надо писать refreshDataSet(DS,
true, 1);
• modal – "модальность" окна: true, если нужно открыть окно как "модальное",
false – в противном случае; необязательный;
• width и height – ширина и высота для модального окна; необязательные.
5.1.2. closeWindow
closeWindow([skip=0])
Закрывает окно. Параметр skip указывает, какое именно окно в цепочке вызовов нужно
закрыть:
• 0 (по умолчанию) – текущее,
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
• 2 – предыдущее у предыдущего, и т.д.
*
обычно все окна лежат в директории сайта / Forms поэтому в путь к файлу нужно указывать без директории
Forms.
PDF created with pdfFactory Pro trial version www.pdffactory.com
49
5.1.3. reloadWindow
reloadWindow([skip=0])
Перезагружает выбранное окно. В результате все данные, введённые пользователем,
теряются, срабатывают все обработчики OnCreate и OnShow. Параметр skip указывает,
какое именно окно в цепочке вызовов нужно перезагрузить:
• 0 (по умолчанию) – текущее,
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
• 2 – предыдущее у предыдущего, и т.д.
5.1.4. setWindowCaption
setWindowCaption(_caption, [, skip=0])
Динамически устанавливает title (заголовок) страницы _caption, в зависимости от
параметра skip. Параметр skip указывает, на каком именно окне в цепочке вызовов
нужно установить заголовок:
• 0 (по умолчанию) – текущее,
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
• 2 – предыдущее у предыдущего и т.д.
5.1.5. getWindowCaption
getWindowCaption([,skip =0])
Возвращает текущий заголовок окна. Параметр skip указывает, на каком именно окне в
цепочке вызовов нужно установить заголовок:
• 0 (по умолчанию) – текущее,
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
• 2 – предыдущее у предыдущего и т.д.
•
PDF created with pdfFactory Pro trial version www.pdffactory.com
50
5.2. События
5.2.1. addEvend
Добавляет функцию - обработчик события.
addEvent(domElement, eventName, eventHandler);
• domElement – ссылка на контрол,
•
eventName – строка, название события без ‘on’ в начале. То есть, если хотим
повесить обработчик на событие OnChange, в качестве второго аргумента
отправляем строку 'change'.
•
eventHandler – функция обработчик.
5.2.2. removeEvent
5.2.3. dispatchEvent
5.3. Базовые функции
5.3.1. base
Возвращает объект окна.
base([skip=0]) - return [ACTIVE_PAGE]namespace
Возвращает контекст окна. Параметр skip указывает, на каком именно окне в цепочке
вызовов нужно обновлять источник данных:
• 0 (по умолчанию) – текущее,
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
• 2 – предыдущее у предыдущего и т.д.
5.3.2. getVar
getVar(name [, skip=0])
PDF created with pdfFactory Pro trial version www.pdffactory.com
51
Возвращает значение оконной переменной с именем name. Параметр skip указывает, на
каком именно окне в цепочке вызовов нужно брать переменную:
• 0 (по умолчанию) – текущее,
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
5.3.3. setVar
setVar(name, value [, skip=0])
Присваивает оконной переменной с именем name значение value. Параметр skip
указывает, на каком именно окне в цепочке вызовов нужно брать переменную:
• 0 (по умолчанию) – текущее,
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
• 2 – предыдущее у предыдущего и т.д.
5.3.4. empty
empty(arg)
Проверяет, является ли значение arg "пустым", т.е. равно null, undefined, пустой
строке ('') или строке, состоящей только из пробельных символов. Если значение
"пустое", то возвращает true, иначе – false.
5.3.5. executeAction
executeAction(actionName, onSuccessCallback, onFailCallback, obj [async, skip=0])
Выполняет действие, описанное компонентом Action.
• actionName – имя Action'а, который нужно выполнить,
• onSuccessCallback – ссылка на функцию, выполняемую при успешном завершении
Action'а,
• onFailCallback – ссылка на функцию, выполняемую при неудачном завершении
Action'а,
PDF created with pdfFactory Pro trial version www.pdffactory.com
52
• obj – объект, который будет доступен в функциях onSuccessCallback и
onFailCallback через оператор this.
• async – true (выполнять асинхронно), false (выполнять синхронно)
• skip
Примеры:
Неправильно:
executeAction('SomeAction', refreshDataSet('DS'), alert('Error'), this);
Правильно:
executeAction('SomeAction', function(){refreshDataSet('DS')}, function(){alert('Error');},
this);
Так как мы должны передавать указатель на функцию, а не выполнять её.
5.3.6. refreshDataSet
refreshDataSet(dataSetName, smth (bool) [, skip=0])
Обновляет источник данных с именем dataSetName. Параметр skip указывает, на каком
именно окне в цепочке вызовов нужно обновлять источник данных:
• 0 (по умолчанию) – текущее,
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
• 2 – предыдущее у предыдущего и т.д.
5.4. Работа со свойствами контролов на форме
5.4.1. getProperty
getProperty(domObject, propertyName, defaultValue) - return Variant
Возвращает значение свойства объекта domObject с названием свойства propertyName.
Если свойство с указанным именем не существует, то возвращается значение
defaultValue.
5.4.2. hasProperty
hasProperty(domObject, propertyName) - return bool
PDF created with pdfFactory Pro trial version www.pdffactory.com
53
Возвращает true, если у объекта domObject существует свойство с названием свойства
propertyName, иначе – false.
5.4.3. setControlProperty
setControlProperty(ObjectName, propertyName, Value)
Устанавливает значение Value в свойство контрола с именем ObjectName с названием
свойства propertyName.
5.4.4. getControlProperty
getControlProperty(ObjectName, propertyName, defaultValue) - return Variant
Возвращает значение свойства контрола с именем ObjectName с названием свойства
propertyName. Если свойство с указанным именем не существует, то возвращается
значение defaultValue.
5.4.5. setControlCaption
setControlCaption(_domObject,_caption)
5.4.6. getControlCaption
getControlCaption(_domObject) - return String
Возвращает "заголовок" компонента domObject (свойство caption).
5.4.7. setCaption
setCaption(controlName, caption [, skip=0])
Присваивает свойству Caption (заголовок) компонента с именем controlName значение
строки caption. Параметр skip указывает, с какого именно окна в цепочке вызовов
нужно брать компонент:
• 0 (по умолчанию) – текущее,
PDF created with pdfFactory Pro trial version www.pdffactory.com
54
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
• 2 – предыдущее у предыдущего и т.д.
5.4.8. getCaption
function getCaption(controlName [, skip=0]) - return String
Возвращает значение свойства Caption (заголовок) компонента с именем controlName.
Параметр skip указывает, с какого именно окна в цепочке вызовов нужно брать
компонент:
• 0 (по умолчанию) – текущее,
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
• 2 – предыдущее у предыдущего и т.д.
5.4.9. setControlValue
setControlValue(_domObject,_value)
Записывает значение в контрол свойство value
5.4.10. getControlValue
getControlValue(_domObject) - return Variant
Возвращает "значение" компонента domObject (свойство value).
5.4.11. setValue
setValue(controlName, value [, skip=0])
Создать
переменную
с
именем
controlName,
значением
Skip - через сколько окон создать переменную
5.4.12. getValue
getValue(controlName [, skip=0]) - return Variant
PDF created with pdfFactory Pro trial version www.pdffactory.com
value,
на
окне
skip.
55
Возвращает "значение" (свойство value) компонента с именем controlName. Параметр
skip указывает, с какого именно окна в цепочке вызовов нужно брать компонент:
• 0 (по умолчанию) – текущее,
• 1 – предыдущее (т.е. то, которое открыло текущее окно),
• 2 – предыдущее у предыдущего и т.д.
Замечание. При вызове getValue на гриде, в котором нет ни одной записи, она
возвращает пустое значение ('', не null). Поэтому, если возможна такая ситуация (нет
записей в гриде), то нужно перед кодом, который пытается получить значение из грида
(в т.ч. перед Action'ом, берущим из грида значение для какой-либо своей переменной),
использовать конструкцию:
if (empty(getValue('Grid1'))) {...
PDF created with pdfFactory Pro trial version www.pdffactory.com
56
6. НЕОЧЕВИДНЫЕ МОМЕНТЫ
6.1. Открытие модального окна
Все действия выполняются асинхронно. Функция openWindow не исключение:
после открытия модального окна, она не приостанавливает выполнение скрипта, а
сразу же возвращает управление. Поэтому для обработки "возвращаемых" окном
данных применяется такой приём: всё, что идёт после вызова функции openWindow,
оформляем в отдельную функцию и "навешиваем" её на открываемое окно, как
обработчик события onclose.
Пример:
openWindow('Employers/employers_edit', true, 750, 350)
.addListener('onclose',
function (){
if (getVar('ModalResult', 1) == 1) {
refreshDataSet('DS_EMPS',true,1);
}
},
null,
false);
PDF created with pdfFactory Pro trial version www.pdffactory.com
57
6.2. Что за "пространства имён" (namespace, контекст)
Структура пространства имен для одного открытого окна – средства просмотра*:
рис. 9
Здесь можно посмотреть данные загружаемых форм – текущей формы,
предыдущих форм. Директория каталога Form/ где лежит файл (name
“Agents/agents”), переменные созданные на форме (vars [] AGENTS_DAFAULT_count
“10” …) и список доступных функций на форме.
6.3. Специальные символы в XML
Ряд символов в
специальным образом:
языке
XML
зарезервирован
левая угловая скобка ("<")
<
правая угловая скобка (">")
>
неразрывный пробел ( )
 
*
и
должен
представляться
средства просмотра FireBug плагин Mozilla Firefox, вкладка DOM (Document Object Model) здесь можно
просмотреть все текущие данные и результат выполнения javascript –a
PDF created with pdfFactory Pro trial version www.pdffactory.com
58
амперсант ("&")
&
двойная кавычка (") в значениях атрибутов
"
одинарная кавычка (') в значениях атрибутов
'
При желании можно пользоваться числовой кодировкой символов в стандарте Unicode.
При этом символ может быть задан своим десятичным кодом (&#код;) или
шестнадцатеричным кодом (&#xкод;). Например © представляет символ
авторского права ©, а А – русскую букву А.
6.4. Часть 1. Как получить из компонента Grid или Tree еще одно
значение, кроме field (keyvalue)
Keyvalue (!не атрибут) – записывается в свойство value контрола. Значение,
передаваемое во внешние контролы и при активации записи в гриде (Grid) или дереве
(Tree). Оно скрытое и обязательно, если мы хотим связать компонент по значению с
другими. Keyvalue назначается атрибутом field!
Для того чтобы быстро получить доступ еще к какому-нибудь полю активной записи,
кроме того, что занесено атрибутом field, можно использовать атрибут returnvalue.
Returnvalue – записывается в свойство caption контрола. Оно скрытое, нигде не
отображается,
а
доступ
можно
получить
через
функцию getCaption(‘Имя грида или дерева’);
6.5. Часть 2. Получить всю строку активной записи грида или дерева
У компонентов Grid и Tree есть js-свойство .data – ассоциативный массив данных,
хранящий в себе информацию о полях выгружаемых датасетом в активную строку.
getControlProperty(‘Имя грида или дерева’,’data’);
PDF created with pdfFactory Pro trial version www.pdffactory.com
59
6.6. Пустые значения и NULL
Так как PHP не делает различия между пустой строкой ('') и null-значением, поэтому все
функции, которые могут вернуть null, возвращают его в виде пустой строки
PDF created with pdfFactory Pro trial version www.pdffactory.com
60
7. ТИПИЧНЫЕ ОШИБКИ
7.1. Xml
7.1.1. XML error: Empty document at line 1
Это означает, что первая строка xml содержит в начале пробелы.
Важно! Пробел в начале xml-документа ломает всю форму!
На самом деле речь идёт, скорее всего, не про пробел, а про сигнатуру,
которую могут вставлять некоторые редакторы, например MS VisualStudio, если задать
формат файла "XML с сигнатурой".
7.1.2. Пропущен или не закрыт тег
Незакрытый или лишний тег можно увидеть только с помощью xml-редакторов
или IE.
7.2. JavaScript
Замечание: для корректной работы javascript- кода в IE необходимо закрывать
все строки знаком: ;
PDF created with pdfFactory Pro trial version www.pdffactory.com
61
8. СЛОВАРЬ
Раздел (unit) – раздел системы, записанный в таблице d_units
Метод показа (отображение раздела, show method) – вид, в котором отображается
данный раздел: в виде дерева или таблицы с настраиваемыми колонками.
Описывается таблицами d_show_method и d_show_method_cols. Для каждого
раздела может быть заведено несколько методов показа.
Композиция (composition) – окно, состоящее из одного или нескольких методов
показа. Это окно отображается при "провале" в справочник. Описывается таблицами
d_composition и d_composition_method. Для каждого раздела может быть заведено
несколько композиций.
Переменная окна – переменная, связанная с контекстом окна.
PDF created with pdfFactory Pro trial version www.pdffactory.com
Download