Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Рассмотрим подробно назначение каждого параметра.

В колонку “Код” заносится уникальный код, разрабатываемой формы. Для удобства по дальнейшему сопровождению задачи коды формам давайте так, чтобы они группировались по каким-либо признакам. Например, коды форм, которые отражают справочную информацию прикладной задачи можно нумеровать начиная с 90000, основные рабочие формы можно нумеровать с 1 и т. п..

В колонке “Вид” задается вид пользовательской формы grid – табличный, tree – древовидный.

Колонка “Наименование меню”. Сюда вносится краткое наименование формы. Этот текст используется затем для вывода в название кнопок, соответствующих данной форме (панель кнопок в верхней части формы).

Колонка “Наименование формы”. Здесь хранится наименование формы, которое затем выводится в заголовке формы

Колонка “IconSQL”. В ней может задаваться SELECT-оператор, который должен вернуть из базы одну запись с единственной колонкой, содержащей изображение в формате ICO. Это изображение выводится в левой части заголовка формы. Изображения можно создать в таблице TypeObjects(поле “Image”) через форму “Типы объектов” или в таблице Map_Actions через пункт меню “Действия”. Например, в конфигурации “Распоряжение бухгалтерии” для этой цели созданы типы “Иконки”. В действительности объекты этих типов никогда не используются, единственная их цель – хранить изображение.

Колонка “TabContrFields” и первый элемент MEMO “Image-скрипт”. Они взаимосвязаны между собой. Используются по разному для табличных и древовидных форм:

НЕ нашли? Не то? Что вы ищете?

·  Табличные. Заполняются в тех случаях, когда планируется использовать в форме закладки, чтобы группировать данные по каким-то признакам. В элементе “Image-скрипт” задается SELECT – оператор. Оператор возвращает определенное количество записей. Такое же количество закладок будет создано в форме. Не стоит составлять запросы, которые возвращают большое кол-во записей. В этом случае не все закладки уместятся в видимой части формы. Чтобы осуществить доступ к остальным закладкам, придется их прокручивать кнопками, которые появятся в этом случае с правой стороны. При этом теряется наглядность формы. В колонке “TabContrFields” необходимо указать сначала название поля возвращаемое оператором SELECT, значение которого для каждой записи будет выносится в название закладки и затем через “;” , если вы это предусмотрели, название поля, которое содержит для каждой записи свое изображение. Это изображение появится в закладке перед ее названием.

·  Древовидные. “TabContrFields” требует обязательного заполнения для правильного построения стуктуры. В ней через “;” необходимо указать для трех параметров имена полей из главного SQL-скрипта: 1-й “ID” указывать на уникальный код объекта в дереве, 2-й “Parent” должен указывать уникальный код объекта-предка, 3-й “ Name” содержит наименование объекта, которое будет отображено. Пример, ID=ObjID;Parent=ParentType;Name=Name_ID. В элементе “Image-скрипт” задается SELECT – оператор, возвращающий одну запись с одним полем-картинкой для каждого элемента дерева. SELECT может иметь параметр с тем же именем, что и какое-либо поле из главного SQL-скрипта.

Пример запроса для табличной формы 13 “Распоряжения”:

select cast(0 as smallint) as Pr_Y_N,

cast('Сформированные' as char(20)) as Name,

(select "Image" from TypeObjects where ID_TYPE='ICO01') as "Image"

union

select cast(1 as smallint) as Pr_Y_N,

cast('Отправленные' as char(20)) as Name,

(select "Image" from TypeObjects where ID_TYPE='ICO02') as "Image"

union

select cast(2 as smallint) as Pr_Y_N,

cast('Оплаченные' as char(20)) as Name,

(select "Image" from TypeObjects where ID_TYPE='ICO03') as "Image"

order by 1

Этот запрос возвращает три записи, соответствующие одному из трех состояний распоряжения (поле Pr_Y_N): сформированные, отправленные, оплаченные. В колонку “TabContrFields” записываем “Name;Image”. Поле Name соответствует наименованию состояния, а поле Image – это выбранное из таблицы TypeObjects для этого состояния изображение. Результат можно увидеть на рисунке из раздела “Пользовательские формы – обзор”.

Колонка “GridFieldsDisplay” и второй элемент MEMO “SQL-скрипт для Grid”. Они также взаимосвязаны между собой. В элементе “SQL-скрипт для Grid” задается SELECT–оператор, возвращающий набор данных для таблицы. А в колонке “GridFieldsDisplay” через “;” название полей из этого набора, которые будут отображены в таблице. Правила задание полей в колонке следующие. Сначала задается название поля, каким оно возвращается оператором SELECT, затем через “~”, как это поле будет озаглавлено (название колонки). И затем, если вы желаете, через “~” для числовых полей и полей дат - формат, в котором значение поля будет отображено на экране. Например:

“RaspN~Номер;DateRasp~Дата;NameRasp~Тип перечисления;Osnov~Основание; Mon~Сумма~#,##0”

Примеры форматов для числовых полей :

Формат

Число

987654.321

-987654.321

0.27

-0.27

0

0

987654

-987654

0

0

0

0.00

987654.32

-987654.32

0.27

0

0.00

#

987654

-987654

#.##

987654.32

-987654.32

.27

-.27

#,##0.00

987,654.32

-987,654.32

0.27

-0.27

0.00

#,##0.00;(#,##0.00)

987,654.32

(987,654.32)

0.27

-0.27

0.00

#,##0.00;;Нолик

987,654.32

-987,654.32

0.27

-0.27

Нолик

0.000E+00

9.877E+05

-9.877E+05

2.700E-01

-2.700E-01

0.000E+0

#.###E-0

9.877E5

-9.877E5

2.7E-1

-2.7E-1

0E0

А вообще, если вы знакомы со средой разработки Delphi, форматы для числовых полей и полей дат составляются точно таким же образом.

Колонка “Alias_Name” содержит название БД, из которой будет осуществляться выборка данных. Если значение не указано, данные будут извлекаться из “родной” базы.

Секция “Прямое редактирование”.

Используется только для табличных форм.

Параметр “Разрешено редактировать Grid” позволяет разрешить изменение данных непосредственно в таблице. При этом в параметре “Поля для редактирования” через “;” необходимо указать названия колонок таблицы, которые можно изменять. Необходимо помнить, что редактирование данных в таблице не приведет к изменению данных в базе. Для каких случаев нужно такое поведение пользовательской формы уже говорилось выше.

Секция “Панели кнопок”.

Параметры “Панель O”, “Панель R”, “Панель E” предназначены для перечисления в них через “;” кодов действий, которые доступны в данной форме. При этом в форме будет создана для каждого заданного параметра панель с кнопками, каждая из которых соответствует перечисленным выше кодам. Т. е. нажатием на определенную кнопку будет совершено соответствующее ей действие: выполнена операция, отчет или скрипт. Колонка “ListFrm” предназначена для перечисления в ней через “;” кодов форм, которые являются подчиненными данной форме. В этом случае при открытии этой формы также будут открыты и все подчиненные ей формы.

Для табличных форм предусмотрена полезная возможность – выделять записи определенным цветом в зависимости от выполнения каких-либо условий. Например, выделить те записи в форме, у которых значения поля “Money” меньше или равно 0. Для этого после того, как форма корректно описана, на соответствующей записи необходимо дважды щелкнуть левой кнопкой мыши. Появится специальная форма для настройки цветовой палитры. Смотрите рисунок. Если цвета подобрать удачно, то это сделает данные в таблице более наглядными.


В левой части задается одно или несколько условных выражений, при выполнении которых запись будет отображена тем цветом, который задан в правой части. Отметка флага “Нечувств. к регистру” имеет смысл только, если в условном выражении используется текстовые значения. Например, Name = ‘вася’. Если для такого выражения этот флаг задан, то соответствующим цветом будут отображены все записи, в значении поля “Name” которых стоит ‘вася’, ‘Вася’, ‘вАСЯ’ и т. д.. В условном выражении можно использовать имена полей, возвращаемых оператором SELECT, а также следующие логические операторы: =, <>, <=, >=, <, >, and, or, not, is null, is not null, in. Т. е. можно задавать довольно сложные выражения, например:

(Name = ‘Вася’ and Name = ‘Петя’) or (Name is null)

Но сильно не злоупотребляйте сложностью выражений и их количеством. На слабых компьютерах это может замедлить скорость перерисовки формы.

Необходимо отметить еще один важный момент при создании форм. Это запросы с параметрами. Такие запросы могут возвращать в зависимости от значения параметра разные наборы данных, структура набора (количество полей, их название и тип) при этом остаются неизменными. Параметр должен находится в секции WHERE оператора SELECT, и его наличие определяется по знаку “:” перед названием. Для примера возьмем оператор из “SQL-скрипт для Grid” формы 13.

select FKObject. Inv_N as RaspID, FKObject. DateRecieve as DateRasp,

A1.ValString as RaspN, A3.ValString as Osnov,

A4.ValMoney as Mon, O3.Name as NameRasp,

A5.ValInt as State, FKObject. ID_Type as TRasp

from Objects FKObject

KEY LEFT OUTER JOIN Objects_Attr as A1 on A1.Attr='Номер документа'

KEY LEFT OUTER JOIN Objects_Attr as A2 on A2.Attr='Отдел'

KEY LEFT OUTER JOIN Objects_Attr as A3 on A3.Attr='Основание перечисления'

KEY LEFT OUTER JOIN Objects_Attr as A4 on A4.Attr='Сумма '

KEY LEFT OUTER JOIN Objects_Attr as A5 on A5.Attr='Состояние распоряжения'

KEY LEFT OUTER JOIN Objects_Attr as A8 on A8.Attr='Тип перечисления'

LEFT OUTER JOIN Objects as O3 on O3.Inv_N=A8.ValObject

where FKObject. ID_Type in ('11','12') and Statе =:Pr_Y_N

order by DateRasp

Здесь присутствует параметр с именем “Pr_Y_N” (выделен жирным шрифтом). Смысл его для данного запроса заключается в выборке распоряжений в зависимости от состояния (поле State). Если, например, значение параметра равно 0, то будут возвращены сформированные распоряжения, если 1, то – отправленные и т. д.. Запросы с параметрами можно использовать и для закладок (в элементе “SQL-скрипт для TabControl”).

Теперь возникает естественный вопрос: откуда берется значения для параметра? Если вы обратили внимание, то название параметра “Pr_Y_N” такое же, как и название поля оператора SELECT для TabControl той же 13 формы. Поэтому, когда выбирается одна из закладок пользовательской формы 13 в этот параметр подставляется значение из поля “Pr_Y_N” оператора SELECT для TabControl соответствующей записи. Алгоритм подстановки значений в параметры следующий:

1.  Запрос с параметром для TabControl(закладки). В наборе данных сетки родительской формы ищется поле с таким же названием, как и параметр. Если такое поле найдено, то в параметр подставляется значение из этого поля текущей записи. Если поле не найдено, значение параметра остается пустым.

2.  Запрос с параметром для Grid(сетка данных). Если в форме имеются закладки, то в наборе данных, возвращаемых запросом для TabControl этой же формы, ищется поле с таким же названием, как и параметр. Если такое поле найдено, то в параметр подставляется значение из этого поля записи, соответствующей выбранной закладке. Если поле не найдено, значение параметра остается пустым. Если в форме отсутствуют закладки, то поле с таким же названием, как и параметр, ищется в наборе данных сетки родительской формы. Если поле не найдено, значение параметра остается пустым.

Существует также возможность заполнения значения параметра сетки из скрипта действия. Но на этом я остановлюсь подробнее в разделе, посвященном составлению скриптов на VBScript и JScript.

В данной системной форме имеется кнопка “Выгрузить”. Она предназначена для выгрузки разработанных форм в файлы в рабочий каталог настройки каталог \UNLOAD\FORMS\. Их можно затем загрузить, например, в другую конфигурацию у конечного пользователя.

Советы по составлению запросов.

Как я уже упоминал выше, чтобы запросы обрабатывались SQL-сервером быстро, они должны быть составлены грамотно. Общее правило при составлении запросов состоит в следующем: всегда используйте, если это возможно, при задании каких-то условий выборки в секции WHERE поля, по которым составлен ключ или индекс. А какие это поля, можно увидеть на рисунке в гл. II 2-раздела. Ключевыми являются также поля, по которым построены внешние ключи. (Это поля, ссылающиеся на записи из связанных таблиц.) В секции ORDER BY также старайтесь использовать только ключевые поля.

В общем все запросы для базы STOCK имеют почти стандартную структуру. Это найти в таблице Objects объекты определенного типа и вывести из таблицы Objects_Attr их атрибуты. Запрос из предыдущей секции как раз и демонстрирует это. Атрибуты выбираются оператором LEFT JOIN. При этом если перед ним стоит ключевое слово KEY, то выборка будет происходить быстрее. Чтобы стало возможно использовать KEY, необходимо таблице Objects дать псевдоним FKObject, который является также и названием внешнего ключа из таблицы Objects_Attr по колонке Inv_N. Эта возможность не является стандартом SQL, а есть дополнительное расширение стандарта в сервере Sybase SQL Anywhere.

Разработка операций и отчетов.

В “STOCK” операция – это действие, составленное с помощью SQL – оператора или SQL - скрипта, которое приводит к изменению данных в базе данных. Отчет – это действие, составленное с помощью SQL – оператора или SQL - скрипта, которое извлекает из БД данные в виде одного или нескольких наборов данных, и затем выводит их в требуемом виде на экран или на принтер. Их разработка осуществляется в специальных системных формах, вызываемых в пунктах меню “Настройка” – “Операции” и “Настройка” – “Отчеты” соответственно. Эти формы, за некоторыми исключениями, почти похожи друг на друга. Поэтому я сначала опишу те моменты по созданию операций и отчетов, которые являются общими для них, а затем остановлюсь на отличиях.

В обоих системных формах имеется кнопка “Выгрузить”. Она предназначена для выгрузки разработанных операций и отчетов в файлы в рабочий каталог настройки (каталоги \UNLOAD\OPERS\ и \UNLOAD\REPORTS\ соответственно). Их можно затем загрузить, например, в другую конфигурацию у конечного пользователя. Также формы имеют две общие закладки. (Смотрите рисунок). На первой закладке отображаются записи соответствующие операциям или отчетам. Колонка “Код” соответствует коду операции (отчета). Текст из колонки “Краткое наименование” используется для выбора при составлении схемы действий, соответствующих данному отчету или операции (пункт меню “Настройка” – “Действия”). Колонка “Полное название” - этот текст используется для вывода в название формочки с параметрами данной операции или отчета. Если в качестве операции или отчета используется хранимая процедура на сервере, то в колонку “proc_name” вносится ее имя. Тогда элемент MEMO “SQL-скрипт” остается пустым. Хранимые процедуры могут использоваться вместо SQL-скриптов в тех случаях, когда те получается достаточно сложными, т. к. скорость выполнения хранимой процедуры всегда выше, чем обычного скрипта. Колонка “Дата версии” необходима для фиксирования даты, когда операция (отчет) была составлена или изменена. Колонка “sort” не используется. Колонка “Alias_Name” (только для отчетов) содержит название БД, из которой будет осуществляться выборка данных. Если значение не указано, данные будут извлекаться из “родной” базы.


В правой части формы находятся флаги, влияющие на то, как операция или отчет будут выполняться. Их назначение следующее:

-  “Создавать форму для операции”. Если флаг выставлен, то перед выполнением операции на экран выводится форма для заполнения параметров операции. Если у операции нет параметров, форма будет содержать только две кнопки “Выполнить” и “Отменить”. У отчетов этот флаг отсутствует и форма для заполнения параметров отчета появится только тогда, если у отчета имеются отображаемые параметры. Наличие флага у ответственных операций по изменению данных заставляет пользователя подтвердить свои действия.

-  “Операция – хранимая процедура” (“Отчет – хранимая процедура”). Выставляется, если операция или отчет являются хранимой процедурой.

Остальные флаги, применяющихся для отчетов, будут рассмотрены позднее.

В нижней части формы располагается элемент MEMO “SQL-скрипт”, в котором (если операция или отчет не являются хранимой процедурой) хранится скрипт операции или отчета. Скрипт может состоять или из одного оператора, например:

insert into Objects (Inv_N, ID_Type, Name, DateRecieve, User_ID)

Values (:Kod, '90005', :Name, TODAY(*), :Usr)

,или из нескольких. В этом случае скрипт должен быть заключен в операторные скобки BEGIN–END. Например:

BEGIN

declare Kod int;

declare Name varchar(127);

declare Usr int;

set Kod=:Kod;

set Name=:Name;

set Usr=:Usr;

insert into Objects (Inv_N, ID_Type, Name, DateRecieve, User_ID)

Values (Kod, '90005', Name, TODAY(*), Usr);

END

Наличие параметров в SQL-скрипте операции или отчета определяется по знаку “:” перед названием параметра. Например, в предыдущих примерах имеются следующие параметры: Kod, Name, Usr. При чем параметр должен встречаться в скрипте только один раз. И рекомендую, если операция или отчет состоят из более одного оператора, объявлять в нем переменные для каждого параметра и затем через оператор SET присваивать им значения соответствующих параметров (смотрите последний пример). В этом случае скрипт будет более читабельным.

Наличие входных параметров в хранимой процедуре операции или отчета определяется по ключевому слову знаку “IN” перед названием параметра. Например, в следующем примере у процедуры имеются следующие параметры: Usr, PrvdkID.

opr_del_prvdk(in Usr smallint, in PrvdkID char(15), out Res varchar(255)

Необходимо отметить, если в хранимой процедуре операции имеется выходной параметр типа varchar(255) с именем ResMsg, то его содержание будет выведено в специальном окошке после выполнения операции. Эту возможность можно использовать для информирования пользователя об окончании операции.

И еще один важный момент. Операция всегда выполняется в одной транзакции. Это означает, что если скрипт состоит из нескольких операторов, то в случае успеха они все будут выполнены, а в случае возникновения ошибки ни один из них не выполнится.

Все параметры, присутствующие в скрипте операции или отчета должны быть описаны на второй закладке. Возьмем для примера операцию 212 - Добавить распоряжение(смотрите рисунок). Каждому параметру должна соответствовать отдельная


запись. Рассмотрим назначение каждой колонки.

§  “N”. Обозначает номер параметра. Номер параметра – это произвольное число, не зависящее от того, где параметр появился в скрипте. От нумерации параметров зависит только, в какой последовательности они появятся в форме операции или отчета.

§  “Name”. Имя параметра. Должно быть точно таким же, каким оно написано в скрипте.

§  “Ins_in_Form”. Может принимать три значения: 0 – параметр не отображается в форме, 1 – параметр отображается в форме, 2 – параметр видимый, но нередактируемый. Рекомендую неотображаемые параметры ставить в начале списка.

§  “Label”. Текст, который отображается в форме перед параметром.

§  “TypeValue”. Содержит тип значения параметра и может принимать строго определенные значения: string, integer, smallint, date, float, money.

§  “Size”. Размер в пикселях визуального элемента, представляющего данный параметр.

§  “TypeInput”. Содержит название визуального элемента, в виде которого будет представлен параметр. Может принимать строго определенные значения: Form, DropList, ComboBox, DateEdit, MoneyEdit, Edit, FileEdit, Memo.

§  “FormName”. Если в качестве визуального элемента для параметра выбран “Form”, то в эту колонку вносится название формы, из которой будет выбираться значение параметра.

§  “FieldValue”. Если в качестве визуального элемента для параметра выбраны “Form” или “ComboBox” или “DropList”, в эту колонку вносится название поля из набора данных этих элементов, которое используется для подстановки значения в параметр.

§  “FieldDisplay”. Эта колонка связана с предыдущей. Для визуальных элементов “Form”, “ComboBox”, “DropList” здесь прописываются через “;” название полей из набора данных этих элементов, значения которых будут отображаться в элементе для выбранного значения параметра. Это нужно для большей наглядности. Например, значение параметра должно указывать на объект в базе. Пусть это будет какой-то банк с кодом “SprBank001” и он выбирается и формы, в которой есть поля это ID (код), Name(название банка), MFO(МФО банка). Тогда, если в колонке “FieldValue” мы поставим ID, а в колонке “FieldDisplay” - MFO;Name, то выбрав соответствующую запись из справочника банков, мы присвоим параметру значение “SprBank001”, а в визуальном элементе отобразится текст “795 Беларусбанк г. Минск”.

§  “DirectInput”. Может принимать только два значения: 1 – в визуальный элемент параметра можно вносить значение как с клавиатуры, так и через кнопку в правой части элемента и 0 – значение параметра нельзя набрать на клавиатуре, а можно только выбрать, нажав кнопку в правой части элемента. Значение этой колонки имеет смысл только для визуальных элементов ComboBox и DateEdit.

§  “TypeIni”. Содержит вид инициализации параметра начальным значением, когда форма операции или отчета появляется на экране. Может принимать строго определенные значения. 0 – параметр не имеет начального значения, т. е. при запуске операции или отчета значение параметра останется пустым, а если он является отображаемым, то в визуальном компоненте параметра будет отсутствовать текст. 1 - при запуске операции или отчета параметр инициализируется значением(или через зарезервированную функцию), прописанным в соответствующем элементе MEMO системной формы и, если он является отображаемым, то в визуальном компоненте параметра будет соответствующий текст. 2 - при запуске операции или отчета параметр инициализируется значением, возвращаемым SQL-скриптом, который также должен быть прописан в элементе MEMO.

§  “Refresh”. В эту колонку можно вносить через “;” номера параметров, которые должны инициализироваться новыми значениями при изменении значения данного параметра. Часто бывает полезно, когда параметры логически связаны между собой. Например, если для первого параметра сначала выбран один отдел, то второй параметр – “номер последнего распоряжения” должен иметь определенное значение. А если для первого параметра затем выбран другой отдел, то второй параметр – также должен изменить свое начальное значение.

§  Если в качестве визуального элемента для параметра выбран “ComboBox” или “DropList”, то в первом элементе MEMO “SQL запрос с …” необходимо задать один SQL-оператор, возвращающий набор данных, записи из которого будут появляться в выпадающем списке этих элементов для выбора нужного значения.

Теперь необходимо более подробно остановиться на некоторых моментах при описании параметров на второй закладке.

Если параметр является неотображаемым, то заполнять колонки “Label”, “Size”, “TypeInput”, “FormName”, “FieldValue”, “FieldDisplay”, “DirectInput” не требуется.

Особенности визуальных элементов для параметров. У некоторых из них в правой части имеется кнопка для выбора значения параметра из списка. Кнопка срабатывает помимо щелчка мыши и по нажатию клавишь Alt + стрелка вниз.

Form


Если для параметра выбран данный элемент (в колонке “TypeInput” стоит ключевое слово “Form”), то в колонке “Form” необходимо указать, какая форма соответствует данному параметру. Тогда по кнопке в правой части элемента вызывается подключенная к нему форма. Это может быть одна из пользовательских форм, разработанных вами и тогда здесь должен стоять ее код. Или это может быть одна из двух системных форм. В этом случае здесь должно быть ее название: objtreefrm для выбора типа объекта или attributesfrm для выбора атрибута. В колонке “FieldValue” необходимо указать имя поля подключенной формы(для системных форм – это поля из таблиц Attributes и TypeObjects), из которого берется значение для параметра. А в колонке “FieldValue” необходимо указать через “;” имена полей, значения из которых будут отображаться в элементе. В этом элементе ввод значения с клавиатуры заблокирован.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3