Конфликты совместимости Oracle решения с Global 1 ======================================================== * Формы :term:`AS` через ``super$`` могут получить доступ только к главной выборке приложения. Формы приложения :term:`Global 1`, могут быть связаны друг с другом ``super$`` параметрами. Многие карточки обращаются к вызывающим формам через ``super$``. * В ``AS`` строгая типизация. При несовпадении типов вызывается исключение конвертации типов. А ``Global 1`` позволяет записывать в параметры значения с не согласованными типами данных. Например, этот код выполнится в ``Global 1`` и вызовет исключение в ``AS`` .. code-block:: pascal :force: AddVar('Param', 'Какая-то строчка', ftFloat); В ``Global 1``: ``GetVar('MyDate')`` вернёт дату, поскольку значение хранится как ``Variant`` и не конвертируется. В ``AS``: ``GetVar('MyDate')`` вернёт строковое представления числа, поскольку даты через ``JavaScript`` передаются как ``double`` и на этапе добавления параметра произойдёт конвертирование double в строку. .. code-block:: pascal :force: AddVar('MyDate', GetVar('dDate'), ftString); * Методы работы с длиной строки .. code-block:: pascal :force: a := 's'; setLength(a, 25); // Метод задания длины строки. Не реализован для AS, применение приведет к ошибке. length(a); // в Global 1 вернет 25; в AS вернет 1 strlen(a); // вернет 1 для Global 1 и AS * Результат условия ``null = 0`` для ``Global 1`` будет ``true``, для ``AS`` будет ``false``. В паскале (в ``Global 1``) происходит преобразование к number, и ``null`` приравнивается к ``0``. В JavaScrit (в ``AS``) ``null`` - объект, из-за этого идет преобразование к строкам. * Массивы объектов/массивов. При присвоении массива в качестве элемента другого массива, при выполнении в ``Global 1``, передается значение; в ``AS`` – ссылка. .. code-block:: pascal :force: :caption: В данном примере, при выполнении в ``AS``, все элементы массива ``avResult`` будут содержать ссылку на последний элемент массива ``someData`` avResult := CreateArray(); avTmp := CreateArray(); // создается объект for i := 1 to 2 do begin avTmp[1] := someData[i]; //объект получает значение avResult[i] := avTmp; // в ``AS`` передается ссылка на один и тот же объект end; * Загрузка файлов в базу. В приложении ``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`` форма простраивается последовательно (что ускоряет ответ системы), из-за чего в операции :btk:event:`beforeFirstOpen` главной выборки детали ещё не доступны и параметры в детали не добавляются. * В ``AS`` добавлены свойства атрибута :xsd:attr:`View.Representation.Attributes.Attribute.Style.highlightLang` и :xsd:attr:`View.Representation.Attributes.Attribute.Style.highlightCol`, хранящие язык, выделяемый в тексте, и цвет выделения этого языка соответственно. * :class:`btkFrame.TbtkGridPanelFrame` * В ``AS`` поддерживает размеры строк и колонок, указанные в процентах и как ``auto``. Но поддерживает размеры, указанные в пикселах. * ``Global 1`` не поддерживаются значения размеров ``v`` (они вычисляются относительно полного размера гридпанели). * ``AS`` учитывает изменения свойствах, влияющих на содержимое и его отображение при рефреше выборки фрейма. ``Global 1`` не поддерживает изменения в метаданных. * :class:`btkFrame.TbtkLookUpGanttTreeTabFrame` * :term:`AS` поддерживает свойство :btk:frameprop:`CaptionWordWrap`. В :term:`Global 1` это свойство не обрабатывается * :class:`TbtkScriptSerialPortObject` * Метод :pas:meth:`TbtkScriptSerialPortObject.RegisterHandler`. В :term:`AS` указанная операция выполнится на чтение из устройства только в том случае, если выборка, в которой определена эта операция, не закрыта. * :term:`AS` поддерживает свойство :pas:attr:`TbtkScriptSerialPortObject.Busy`. В :term:`Global 1` это свойство не обрабатывается * :class:`btkFrame.TbtkLookUpPDFViewFrame` * В ``Global 1`` в атрибуте из свойства фрейма **FileNameField** указывается имя файла или блоб для отображения, в :term:`AS` возможно только указание блоба