ООО «БАРС ГРУП» РУКОВОДСТВО РАЗРАБОТЧИКА 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, по одному на каждую используемую в скрипте переменную. Символы "<" и ">" внутри скрипта недопустимы и должны быть заменены на "&lt;" и "&gt;" соответственно. Формат: <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 &lt;= :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&lt;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&lt;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 &lt;= :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 зарезервирован левая угловая скобка ("<") &lt; правая угловая скобка (">") &gt; неразрывный пробел (&nbsp;) &#160; * и должен представляться средства просмотра FireBug плагин Mozilla Firefox, вкладка DOM (Document Object Model) здесь можно просмотреть все текущие данные и результат выполнения javascript –a PDF created with pdfFactory Pro trial version www.pdffactory.com 58 амперсант ("&") &amp; двойная кавычка (") в значениях атрибутов &quot; одинарная кавычка (') в значениях атрибутов &apos; При желании можно пользоваться числовой кодировкой символов в стандарте Unicode. При этом символ может быть задан своим десятичным кодом (&#код;) или шестнадцатеричным кодом (&#xкод;). Например &#169; представляет символ авторского права ©, а &#x410; – русскую букву А. 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