6. Конфликты совместимости Oracle решения с Global 1#
Формы AS через
super$
могут получить доступ только к главной выборке приложения. Формы приложения Global 1, могут быть связаны друг с другомsuper$
параметрами. Многие карточки обращаются к вызывающим формам черезsuper$
.В
AS
строгая типизация. При несовпадении типов вызывается исключение конвертации типов. АGlobal 1
позволяет записывать в параметры значения с не согласованными типами данных.Например, этот код выполнится в
Global 1
и вызовет исключение вAS
<pascal> AddVar('Param', 'Какая-то строчка', ftFloat); </pascal>
В
Global 1
:GetVar('MyDate')
вернёт дату, поскольку значение хранится какVariant
и не конвертируется. ВAS
:GetVar('MyDate')
вернёт строковое представления числа, поскольку даты черезJavaScript
передаются какdouble
и на этапе добавления параметра произойдёт конвертирование double в строку.<pascal> AddVar('MyDate', GetVar('dDate'), ftString); </pascal>
Методы работы с длиной строки
<pascal> a := 's'; setLength(a, 25); // Метод задания длины строки. Не реализован для AS, применение приведет к ошибке. length(a); // в Global 1 вернет 25; в AS вернет 1 strlen(a); // вернет 1 для Global 1 и AS </pascal>
Результат условия
null = 0
дляGlobal 1
будетtrue
, дляAS
будетfalse
. В паскале (вGlobal 1
) происходит преобразование к number, иnull
приравнивается к0
. В JavaScrit (вAS
)null
- объект, из-за этого идет преобразование к строкам.Массивы объектов/массивов. При присвоении массива в качестве элемента другого массива, при выполнении в
Global 1
, передается значение; вAS
– ссылка.<pascal> avResult := CreateArray(); avTmp := CreateArray(); // создается объект for i := 1 to 2 do begin avTmp[1] := someData[i]; //объект получает значение avResult[i] := avTmp; // в ``AS`` передается ссылка на один и тот же объект end; </pascal>
Загрузка файлов в базу. В приложении
Global 1
, обычно сначала открывается диалог выбора файла, после чего выполняетсяBlobOpen('поле', 'имя файла')
. ДляAS
данный способ не подходит. Процессы выбора файла и загрузки файла на сервер должны выполняться одновременно. Для этого предлагается сделать методBlobOpen()
функцией, возвращающей имя загруженного файла.Формировать в сеттере BLOB поля вызов API.SetxxxLOB() метода.
Разделение элементов в фиксированном выпадающем списке. Если в задающей строке будут подстроки и перед символом
"
или'
будут символы, отличные от разделителя, вGlobal 1
происходит игнорирование подстроки.- Пример 1:
Исходная строка
123"A,B"321
В
Global 1
элементами будут123"A
,B"321
В
AS
элементами будут123
,A,B
,321
- Пример 2:
Исходная строка
"A,B"123
В
Global 1
и вAS
элементами будутA,B
,123
В
AS
недоступно обращение к детальным выборкам в момент открытия мастера. ВGlobal 1
это работает, поскольку, сначала простраивается вся форма, а потом открывается гл. выборка. ВAS
форма простраивается последовательно (что ускоряет ответ системы), из-за чего в операцииbeforeFirstOpen
главной выборки детали ещё не доступны и параметры в детали не добавляются.В
AS
добавлены свойства атрибутаView.Representation.Attributes.Attribute.Style.highlightLang
иView.Representation.Attributes.Attribute.Style.highlightCol
, хранящие язык, выделяемый в тексте, и цвет выделения этого языка соответственно.-
В
AS
поддерживает размеры строк и колонок, указанные в процентах и какauto
. Но поддерживает размеры, указанные в пикселах.Global 1
не поддерживаются значения размеровv
(они вычисляются относительно полного размера гридпанели).AS
учитывает изменения свойствах, влияющих на содержимое и его отображение при рефреше выборки фрейма.Global 1
не поддерживает изменения в метаданных.