Global 5.1

Изменения:

1 : Ругаться на незакрытые теги при компиляции операции

Изменено поведение проверки текста опреации - поиск паскаль блока. Если раньше при выполнении компиляции опреации наличие закрывающего тега </PASCAL> было не обязательным, то сейчас он обязан присутствовать. Нередко встречаются операции закрытые чем-то вроде “

Реализованная заявка:

1 : Доработки OLAP отчета: копировать в буфер обмена из OLAP-таблицы

Реализовано по стандартному сочетанию клавиш копирование данных выделенной области Olap-таблици в буфер обмена

2 : Global как COM-объект: завершаать работу приложения без вопроса о закрытии всех окон.

Для приложения Global запущенного как COM-объект по умолчанию не выводятся никакие диалоги связанные с закрытием приложения при завершении работы с COM-объектом (зануляется последняя ссылка). Если в инициализации передан параметр “/visible” - то приложение работает как обычно, в том числе выводятся диалоги при закрытии.

3 : Время прерывания и возможность копирования для окна, информирующем о возникновении блокировки

Добавлена возможность копировать текст из окна с информацией о длительных запросах и блокировке. Для копирования используется сочетание клавиш “Ctrl+C”

Добавлено свойство операции “AbortLatency”, устанавливающее время удерживания “Ctrl+X” для отмены запроса.

Свойство “AbortLatency” будет выпущено в модуле BTK 1.4.111.0.

4 : Доработки OLAP отчета: запоминать раскрытие узлов в OLAP-таблице

В результате этого изменения OLAP будет запоминать состояние “развёрнутости” узлов, в том числе и в случае “развернуть все”.

5 : Добавить возможность отслеживать текущее состояние окружения во время отладки операции (Watches)

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

  • выражение “a”, при условии наличия такой локальной переменной,- не сделает ничего срашного - просто отобразится её текущее значение.
  • выражение “GetVar(‘A’)” - тоже не сделает ничего страшного, просто чуть более трудоёмкое.
  • а вот “SetVar(‘A’, 5)” - также будет выполнено как и два предыдущих примера, но изменит состояние окружения.

Также можно по сочетанию клавиш Ctrl+F7 вызвать диалог для выполнения вычислений - тот же самый принцип, что описан выше.

6 : OLAP фрейм: при настройке сводной таблицы не отображать поля помеченные как не видимые в выборке

Реализовано.

7 : Зарегистрировать новый тип шаблона отчётов FastReport.Mono (*.frx)

Реализована работа с шаблонами отчетов FastReport.Mono (*.frx)

Некоторые особенности реализации.

  • Если вызывать CreateReportEx с параметром rvmDesign, то выполняется поиск FastReportDesigner.exe в той же папке в которой расположено главное приложение. Если найден то запускается и имя отчета передается как параметр. Если не найден, то вызывается ShellExecute с шаблоном и система пытается открыть файл по его раширению.
  • При использовании параметра rvmSave, формат сохраняемого файла определяется исходя из расширения имени файла переданного в параметре FileName. Допустимы следующие форматы: {имя_файла.расширение}, {*.расширение}, {.расширение}, {расширение}
  • Для параметров rvmShow, rvmSave, rvmPrint функция CreateReportEx открывает баузер по умолчанию

8 : Добавить в ресурсы приложения дату сборки

В ресурсы приложения добавлена дата сборки.

Пример:
BuildYear: 2014
BuildMonth: 11
BuildDay: 20

9 : Если ошибка произошла при обработке асинхронной команды добавлять тип асинхронной команды в отчет об ошибке

Реализован механизм вывода информации о типе обрабатываемой асинхронной команды, при возникновении исключения, если таковая имела место быть.

Теперь в сообщении об ошибке, возникшей в результате выполнения или валидации асинхронной команды, добавляется информация о типе команды.

10 : Ошибка “Field “Не активна” must have a value” сразу после Selection.ClientInsert

Изменен допустимый набор параметров для функции TbtkScriptSelectionObject.ClientInsert. Теперь можно установить значения списку параметров.

Возможны следующие варианты:
Selection.ClientInsert('id', 8599654000);
Selection.ClientInsert('id, sText, nNumber', [8599654000, 'Текст текст текст', 555]);
Selection.ClientInsert('', []); // ни одно поле не задано

11 : Сделать возможность открывать файлы Word на предпросмотр ReadOnly

Фрейму TbtkLookUpTextViewFrame добавлено новое свойство EditMode, которое указывает, работает ли фрейм в режиме редактирования или в одном из двух режимов “только для чтения”.

  • emEidt = 0 - редактирование
  • emReadSelect = 1 - чтение и выделение текста
  • emRead = 2 - только чтение, выделение запрещено

12 : сделать EventBus.AsyncSend

Реализована возможность асинхронной отправки сообщений по EventBus-у. Для отправки сообщения асинхронно необходимо вызывать метод EventBus.Post.

Пример:
<pascal>
  EventBus.Post('TopicName', 'EventName');//отправка события без аргументов
  EventBus.Post('TopicName', 'EventName',
  CreateArgs(['Arg1','Value1','Arg2','Value2']));//отправка события с аргументами
</pascal>

13 : Сделать вывод обработанного сообщения об ошибке при асинхронном вызове операции

Сделан вывод обработанного сообщения об ошибке при асинхронном вызове операции.

14 : Реализовать отладчик для паскаль операций

В отладчике реализована возможность отладить\трассировать выполнение Pascal-операций, интерфейс расположен на закладке “Операции”.

Для начала отладки необходимо получить остановленный стек:

  • поймать выполнение операции Breakpoint’ом (на закладке “Операции”, в редакторе текста операции - F5) - выполнение операции будет остановленно на первой же инструкции соответствующей строки(строки где установлен BreakPoint)
  • либо можно без точек останова - поставить стек на паузу (соответствующая кнопка на панели инструментов). Это значит, что как только будет выполняться какая-либо операция - она сразу остановится. К примеру: ставим на паузу и нажимаем некоторую кнопку в интерфесе открывающую выборку - первая же операция в открытии будет остановлена.

После остановки выполнения можно приступать к трассировке, доступные действия:

  • на следующую строку - F8. Если это была строка последняя - подняться на уровеньвыше. Если это последняя операция в стеке, то стек встанет на паузу - ожидание начала выполнения операции, чтобы продолжить трассировку с первой её команды.
  • войти в выполнение кода этой строки(если это возможно, если нет - то работает как F8) - F7. Поддерживается вход как во внутренние процедуры/функции данной операции, так и в вызванные вложенные операции. К примеру, если нажать на F7 находясь на строке “Selection.ExecOpScript(‘OtherOperation7’);” - вы попадёте в трассировку выполнения операции OtherOperation7, в окне “стек операций” при этом появится новая запись - “Selection.Representation->OtherOperation7”
  • выйти из текущей рутинной операции (процедура/функция/операция выборки) - Shift+F8. Действие противоположное действию F7. Если это последняя операция в стеке, то аналогично случаю с F8.
  • Продолжить выполнение - F9. Прекратить трассировку - приложение продолжает свою работу в штатном режиме.

15 : Текст сообщения при создании ЭД из открытого файла

Выполнен перевод большого количества строковых ресурсов базовых библиотек языка разработки.

16 : Требуется улучшение юзабельности подсказчика кода

Доработана выпадающая подсказка (список автодополнения кода) редактора скрипта:

  • если вставка шаблона происходит в результате нажатия точки, точки с запятой, открывающей, или закрывающей скобочки, а также пробела - эти символы будут также вставлены вместе с шаблоном, пример ~
    • шаблон: “Selection” ввод завершён точкой -> “Selection.”
    • шаблон: “Selection” ввод завершён точкой с запятой -> “Selection;”
    • шаблон: “Selection”. ввод завершён открывающей скобочкой -> “Selection()”
    • шаблон: “Selection”. ввод завершён закрывающей скобочкой -> “Selection)”
  • при вводе точки раскрывается список автодополнения, в том числе, если точка является частью шаблона.
  • размерам списка подсказщика (автодополнения) не скачет из стороны в сторону, запоминается установленный  ползователем размер.

17 : Доработка выпадающего списка методов/свойств объектов в скриптере.

Механизм автодополнения кода (CodeAutocomplete)  для Pascal-блока дополнен возможностью использовать в анализе выражения классы зарегистрированные непосредственно в самом клиенте. Также классы и члены классов скриптера попадают в список автодополнения.

18 : скорость загрузки классов для подсказки

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

Реализована раздельная загрузка списков классов для разных языков\блоков (Pascal, Sql, и т.д.) - список загружается только при непосредственном запросе из блока данного языка.

19 : Global 4.30.38: Ошибка при печати отчета формата *.doc

Улучшено сообщение при ошибке преобразование типа varDate к строке. Вмсесто сообщения Invalid Argument ‘Аргумент типа TDateTime имеет недопустимое значение: %s (%g).’ + #13#10 + ‘Допустимое значение от 01.01.1900 00:00:00 до 31.12.9999.’#13#10 + ‘Исходное сообщение: %s’.

20 : Ограничение подсказки по ctrl+пробел

Внесены изменения в структуру BDN:

  • Выборка SEL_BDN_MethodAndProp, представление “AutoCompleatList” - возвращает дополнительное поле “sLang”
  • “SEL_BDN_MethodAndProp.AutoCompleatList” в операции GST учитывает возможность начилия парметра “FilterLang” - наименование запрашиваемого языка. Таким образом реализовано, что в старых клиентах, где не задаётся этот параметр - будет загружаться только содержимое языка “PASCAL”.
  • Выборка SEL_BDN_Language - появилось представление “AutoCompleatList”. Служит, как и “SEL_BDN_MethodAndProp.AutoCompleatList”, для загрузки подсказщика кода.
  • Класс BDN_Language - добавлен атрибут idMainClassPopup - ссылается на класс данного языка. Содержимое этого класса отображается на начальном этапе подсказщика (Ctrl+Пробел на пустой строке). Представление AutoCompleatList возвращет не значение самого этого атрибута, а наименование указанного класса - поле sMainClassPopup.

Изменения выйдут в составе релиза BDN 1.5.0.0

Данные перечисленные изменения учтены в клиенте, и подсказщик кода показывает список отфильтрованным по конкретному языку - блок в котором находится ввод:

  • блок PASCAL - язык PASCAL
  • блок SQL - язык PLSQL (исключение, наименование блока и языка не совпадают)
  • также возможно использование блоков и других наименований ~ фильтрация также будет работать

21 : Минимизировать возможность западания модальных окон

Переработано взоимодействие с окнами сообщений операционной системы, MessageBox.

Реализован механизм автоматичского возврата “окна ошибки” на передний план, если окно уходит с него.

22 : Дебагер не понимает тип данных ftArray и ftVariant, валит ошибку при открытии закладки “Параметры выборки”

Дебагер обучен понимать массивы в параметрах (ftVariant, ftArray) и не ругаться на неудачное приведение типов.

В версии 5.0 и выше поддерживаются вложенные массивы.

23 : Реализовать интерфейс сообщений на ТСД

Добавлена возможность задать операцию выборки для обработки входящих сообщений Службы Оповещения (Alerter/IM).

Пример:
<PASCAL>
  messageHandlerOperation := Selection.OperationByName('OnAlerterMessage');
  Application.Messanger.SetHandler(messageHandlerOperation);
</PASCAL>

Операция-обработчик имеет 5 входящих параметров:

  • Text: String - Тело сообщения

  • UserName: String - Пользователь-отправитель

  • Time: String - время отправки, строкой

  • Nickname: String - псевдони, актуально для IM

  • CriticalLevel: Integer - уровень важности.

    1. mkDefault - по-умолчанию, нормальный.
    2. mkNormal - обычное сообщение.
    3. mkHigh - приоритетное сообщение.
    4. mkCritical - важное.
Пример опреации обработчика:
 <PASCAL Text, UserName, Time, Login, CriticalyLevel>
   ShowMessage(Text + ' ' + UserName + ' ' + Time + ' ' + Login + ' ' + IntToStr(CriticalyLevel));
 </PASCAL>

Note

Когда в системе задан обработчик входящих сообщений Службы Оповещения - новые окна оповещения не открываются, но если есть открытые - в них тоже приходит сообщение.

24 : Сделать возможность работы с com портом, чей номер превышает 9

Для портом номером выше 9-го функциями API операционной системы предполается использование другого наименования, а именно: с префиксом “\\.\”.

Таким образом, чтобы обратиться, даже на старом клиенте, к порту №11 - следует использовать наименование “\\.\COM11”. В данном клиенте реализована автоматическая корректировка наимнования, если на вход подаётся порт с новером превышающим 9 - префикс дописывается автоматически.

Исправленная ошибка:

1 : Global как COM-объект: Вызванный объект был отключен от клиентов.

Вызванный объект был отключен от клиентов. - Значит, что приложение Global запущенное как COM-объект завершилось по какой-либо причине кроме обнуления ссылок на объект.

В частности, в тестовом случае: приложение завершалось по причине некорректной инициализации - в некоторых случаех загрузка начиналась до того как скрипт (пользователь COM-объекта) передал всё, что собирался, а именно наименование выборки приложения.

Время отведённое на передачу параметров было увеличено, но чтоб загрузка происходила быстрее - следует вызывать метод COM-объекта Inilialize. Также внесено изменение - вызов метода Initialize - обязателен; если Initialize не вызван, то приложение выдаст сообщение по истечению интерывала ожидания установки настроек.

Пример как следует создавать COM-объект:
<code>
  GlobalApp := CreateOleObject('btkRuntime.GlobalApplication')
  GlobalApp.CmdLine := 'user/password@database_tns#btk';
  GlobalApp.ApplicationName := 'SEL_ConfiguratorMainMenu';
  GlobalApp.Initialize;
</code>

2 : AV При построении сводной таблицы по УО

Исправлена ошибка AV при показе диалога настройки схемы измерений в OLAP фрейме.

3 : 5.1n Не проверяется транзакция при удалении задачи из ДП

Восстановлена проверка транзакций после вызова SQL блоков в паскаль операциях выборки.

4 : 5.0 OLAP ошибки

  • Переведён на Русский
  • Восстановлено сохранение настроек куба
  • Восстановлено наследование настроек куба при бурении
  • Восстановлено открытие таблицы фактов
  • Устранена ошибка AV при разворачивании измерений куба

5 : TbtkDataSetOperation.UpdateAction : release code for this action

Исправлена ошибка возникающая при попытке проверить разрешена ли (Enable) операция BeforeOpen.

6 : Не работает “Выравнивание заголовка” полей “По центру” для TbtkLookUpGridTabDynamicFrame

Исправлено выравнивание заголовка полей. Долгое время этот параметр просто игнорировался.

7 : Ошибка в работе приложения в полноэкранном режиме

Исправлена ошибка выхода границ приложения за границы экрана в полноэкранном режиме работы приложения.

8 : 5.0 клиент закрывается если попытаться открыть ДП 37193

Исправлено возможное закрытие приложения при открытии фрейма с HTML редактором.

9 : Не работает подтверждение сортировки.

Изменена логика выдачи запроса на подтверждение сортировки в гриде. Раньше, запрос на подтверждение сортировки в частично прогружаеммом гриде не выдавался, если данные были полностью прогружены. Теперь запрос не выдаётся если включена полная прогрузка, а прогруженность не анализируется. Т.е., даже если данные полностью прогружены, но в настройках не установлен флаг “Загрузить данные полностью”, при включении сортировки будет выдаваться запрос пользователю.

10 : Сообщения об ошибке отладочной версии, “Assert”, не всплывают и не показывается сообщение об ошибке.

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

Теперь в отчёт об ошибке попадает информация обо всех обработанных исключениях, которые привели, или могли привести, к текущему необработанному.

11 : Для чекбокса не работает свойство “Не выполнять BeforeEdit перед началом редактирования”

Исправлена работа свойства “Не выполнять BeforeEdit перед началом редактирования” для чекбокса. Раньше, чекбокс игнорировал эту настройку, и операция BeforeEdit вызывалась не зависимо от неё.

12 : Пропадает текст из редактора текста операции

Убрана проблема вызова отмены транзакции при смене записи в  древовидном списке. Для повторение ошибки надо было в списке операций создать новую операцию, написать текст, операцию не сохранять, перейти на другую операцию - все, текст операции потерян.

13 : не работает обработка ошибки DRG-51030: wildcard query expansion resulted in too many terms

Исправлдена ситуация с неудачей повторной отправки запроса на ошибку DRG-51030 при извлечении данных, в случае открытия/полного переоткрытия выборки, а не перезапроса данных.

Исправлено.

14 : OLAP “Перейти к фактическим данным” и “бурение” не работает, если одно из изменений содержит пустое значение

При открытии детализации OLAP, будь то “таблица фактов”, или “бурение” - набор фактических данных детализации отсекается фильтром. При построении фильтра не учитывался тот факт, что некоторые значения измерений соответствуют также и значению Null в БД:  для строковых полей - пустая строка; для числовых - ноль.

Исправлено. Теперь при постоении учитывается эта особенность измерений Olap-куба.

15 : Ошибка otAttrSetter и затем AV при отображении фото в гриде

Проблема имела место быть при использовании “Блоба файловой ссылки” не укомплектованного сеттером, при загрузке его значения сеттер срабатывал. Исправлено.

16 : 4.30+ Размножаемые атрибуты в отчете XLSX

Исправлены размножаемые атрибуты в отчетах XLSX.

17 : клиент 5.1.0 ms 1 - ошибка при открытии печатной формы в excel

Исправлено зависание Excel’a при открытии печатных форм.

18 : Закрывается клиент при ошибке на beforeedit в html фрейме

Исправлена ошибка приводящая к закрытию клиента при возникновении исключения в BeforeEdit HTML редатора.

19 : Ошибки по работе функционала по предпросмотру

Исправлена отрисовка PDF-документа.

20 : В дебагере перестало заполняться дерево фреймов

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

21 : Ошибка добавления значений в свернутых окнах «Универсальный фильтр», «Настройки измерений регистра оборотов и остатков для построения отчетов» и «Показатели».

Исправлена ошибка пропадания отцепленного фрейма при закрытии модального окна открытого из отцепленного фрейма.

22 : Реестр договоров в отчетах ОФК (неправильно сохраняются значения стандартного фильтра)

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

23 : При вызове проектной операции по отправке письма электронной почту возникает ошибка

Исправлена ошибка “Ошибка открытия почтового клиента. Код ошибки: 3” при  вызове метода SendMail.

24 : Не работают кнопки CloseFormOk и CloseFormCancel

Восстановлена работа кнопок на панели инструментов в модальных окнах создаваемых с помощью метода CreateForm с параметром fsMDI.

25 : DoLookUp. LookUpResult возращает lrCancel вместо lrOk. (4.30.37, 5.0.0.37)

Исправлен DoLookUp. Теперь LookUpResult возращает lrOk или lrCancel в не зависимости от количества выделенных записей, а только в зависимости от нажатых кнопок. RecCount - возвращает суммарное число выделенных записей по всем выборкам. RecCount вернет 0 если в параметре ResultFieldNames передать пустой массив.

26 : 5.1n Range check error

Исправлена ошибка Range check error при вставке из Excel  в список набора строк.