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 - уровень важности.
- mkDefault - по-умолчанию, нормальный.
- mkNormal - обычное сообщение.
- mkHigh - приоритетное сообщение.
- 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 не вызван, то приложение выдаст сообщение по истечению интерывала ожидания установки настроек.
<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 в список набора строк.