Global 5.2

Изменения:

1 : Изменить вычисление составных логических выражений: отключить полное вычисление условий.

Если раньше в логическом выражении в паскаль операции вычислялись все операнды, то теперь будет наименьшее количество.

Пример:

if Assigned(sel) and SameText(sel.EntityName, 'SEL\_MYSelection') then
  //some code here

Второе условие теперь не будет вычисляться, если первое условие False, так как в этом нет необходимости для принятия решения в условии if. При старом поведелении при вычислении второго условия будет ошибка “Не найдено свойство EntityName в объекте” или AccessViolation. То же самое с оператором Or - если первый операнд True - в вычислении второго нет необходимости.

2 : Убрать лишние рамки вокруг карточек и фреймов

Убраны лишние рамки вокруг фильтров и фреймов.

3 : В 5.x клиенте в Pascal-скрипторе Блоб != Строка

В 5.x клиенте в методы скриптора принимающие на вход блоб, должен передаваться именно блоб, а не строка. Теперь блоб это массив байт и он не равносилен строке. В рамках задачи добавлено информативности сообщению об ошибке возникающей при передаче в метод вместо блоб значения строкового типа. К методам принимающим блоб относятся:

  • SaveBlobToFile
  • BlobToBase64
  • CertInfoBySign
  • CertInfoByBlob
  • DateFromSign
  • IsCRLOutOfDate
  • RefreshCRL
  • VerifyCertFromSignInCRL

Теперь вместо сообщения “Invalid Argument” будет сообщение “При вызове скриптового метода произошла ошибка при обработке аргумента “ABlob”. В качестве типа аргумена ожидается массив байт, но передан “UnicodeString”

Соответственно со строками надо работать как со строками. Пример: у нас есть код в BTK,  где для метода SaveBlobToFile аргументом ABlobData является динамически сформированная строка. В этом случае для сохранения строки в файл следует использовать метод SaveTextToFile:

Вместо:

sv := '';
for rvi := 1 to Selection.SelectedRecordsCount do
begin
  sv := sv + #13 + #13 + Selection.SelectedValuebyName('ClobScript', rvi);
end;
sv := sv + #13 + #13 + 'exit' + #13 + '/';
SaveBlobToFile(svFile, sv);

Надо писать:

script:= '';
for i := 1 to Selection.SelectedRecordsCount do
begin
  script := script + #13#10 + Selection.SelectedValuebyName('ClobScript', i);
end;
script := script + #13#10'exit'#13#10'/';
SaveTextToFileProc(svFile, 1251, script, false); //Сохраняем строку в файл в ANSI - кодировке

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

4 : Допускать дублирование SQL функций так же, как и Pascal, но при выполнении, а при проверке ругаться.

Изменено поведения при разборе/проверке операции, в случае, если, существует некая неоднозначность - в наличии два равнозначных блока: два блока Pascal или два SQL-блока с одинаковыми именами - два, или более.

В этом случае: существующие операции будут выполняться не выдавая ошибок - беря первый найденный из этих блоков. При проверке же синтаксиса операци - в обоих случаях будет выдаваться ошибка говорящая о такого рода неоднозначности.

Если блоки вызывающие коллизию нужны все, например, для истории.. - лишние/нерабочие следует комментировать:

<!-- <NotUsedCodeBlock>Block text</NotUsedCodeBlock> -->

5 : Фокус переходит на подузел при раскрытии узла дерева с частичной прогрузкой

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

6 : Заменить в клиенте растровый шрифт MS Sans Serif на векторный Tahoma

Выполнена замена шрифта.

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

1 : 5.2 подключить Clipbrd

Добавлена возможность в скрипторе подключить модуль Clipbrd для работы с буфером обмена средствами WinAPI.

2 : Панель фильтров: проблема с отображением - нет редакторов атрибутов.

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

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

3 : Неисправимая ошибка при вызове Refresh выборки у которой GST операция отмечена как Pascal

Прикладная ошибка заключается в том, что у GetSQLText выставлено свойство “Паскаль операция”. Теперь будет возбуждаться исключение, если GetSQLText операция отмечена в свойстве ScriptType как паскаль операция.  Иначе можно получить AV немного позже при выполнении Refresh.

4 : Ошибка вставки данных из Excel: копирование пустой области из Excel

В предыдцщей реализации работа с Sylk (формат буфера обмена используемый Excel) учитывала только наличие фактических данных, в следствии чего вставка копированного диапазона пустых ячеек(без единой заполненной ячейки) приводила к ошибке.

Работа с фоматом Sylk переработана в ключе наличия полностью пустых строк, или ячеек(равно как и полностью пустого диапазона). Если раньше они игнорировались и не включались в результирующий набор данных силк, то теперь размерность диапазона идентична тому, что можно наблюдать при вставке данных из буфера обмена в текстовом формате(таблица форматированная табуляцией). Этот функционал работает за счёт необязательного параметра D(размер области копирования. Параметр всегда включается в формат Excel-ем, но не обязательно будет присутствовать в выдаче каких-либо иных приложений генерирующих Sylk) Sylk-директивы B(максимальный из возможных диапазонов данных  источника).

Также: внесены изменения в логику получения значения Sylk - если значение не определено в ячейке, то результирующим значеним Sylk будет Null, а не пустая строка. Таким образом значения Excel “(кавычка. обозначение пустой строки в формате Excel) и отсутствие значения в ячейке будут отличаться в результирующей выдаче - пустая строка и Null соответственно.

В свете нового функционала у скриптового класса TbtkMicrosoftSYLKHelper появились новые свойства:

  • SourceSizeDefinedBoolean - размер области источника данных определён - в Sylk** задан параметр **D директивы B.
  • EmptyColCountBeforeDataInteger - количество колонок где не определо ни одного значения, в начале диапазона индексов колонок.
  • EmptyColCountAfterDataInteger - количество колонок где не определо ни одного значения, в конце диапазона индексов колонок.
  • EmptyRowCountBeforeDataInteger - количество строк где не определо ни одного значения, в начале диапазона индексов строк.
  • EmptyRowCountAfterDataInteger - количество строк где не определо ни одного значения, в конце диапазона индексов строк.
пример обработки только заполненных/заданных значений Sylk-буффера
<PASCAL>
  var
    a: TbtkMicrosoftSYLKHelper;
  begin
    a := CreateSYLKBufHelper;
    for col := a.EmptyColCountBeforeData to a.ColCount - a.EmptyColCountAfterData do
      for row := a.EmptyRowCountBeforeData to a.RowCount - a.EmptyRowCountAfterData do
      begin
        if a.CellFormat(col, row) <> msfNoData then
          ShowMessage('sop: col ' + IntToStr(col) + '; row = ' + IntToStr(row) + '; val = ' + VarToStr(a.CellValue(col, row)));
      end;
  end
</PASCAL>

5 : Реализовать оповещение в DBMonitor в случае рекурсивного вызова SetActive для древовидного списка.

Рекурсивные вызовы открытия/закрытия выборки как правило говорят об ошибке в прикладной архитектуре. Для облегчения нахождения ошибки реализовано оповещение в ДБ монитор.

6 : Ускорить открытие выборки

Ускорено открытие выборок. Ускорение в зависимости от выборки разное, но в среднем от 10%  до 30%. Ускорение может быть больше заметно на выборках с размножаемыми операциями, невидимыми панелями инструментов, а также если в паскаль операциях во время открытия менялась видимость и доступность паскаль операций.

7 : Реализовать комментарии для паскаль операций

В тексте паскаль-операций теперь можно использовать стандартный xml-комментарий для того чтобы выключать блоки и оставлять текстовые пометки. синтаксис комментария:  <!-- Текст Комментария -->

Пример:
<SQL>
  <sqlBlock1>
    --some code
  </sqlBlock1>
  <!-- </sqlBlock1> -->
</SQL>

<Pascal>
  //some code
</Pascal>

8 : Некорректно зарегистрированы скриптовые методы LoadTextFromFile и SaveTextToFile

Методы LoadTextFromFileProc и SaveTextToFileProc заменены на LoadTextFromFile и SaveTextToFile. При этом методы под старым наименованием сохранены, но помечены устаревшими (будут извещения в DBMonitor при их использовании о том, что они устарели)

9 : Перейти на windows диалог выбора каталога

Выполнен переход на windows диалог открытия каталога при вызове метода AskFolderName. В метод добавлены два новых необязательных параметра:

procedure AskFolderName (
  var Dir: string;
  const Description: string = 'Выберите каталог'; // Описание действия, например 'Выберите каталог для сохранения отчетов'
  const Root: string = '' // Максимально доступный корневой каталог. Ограничивает область выбора каталога. Например, 'C:\Temp\'
  ): boolean;

Главное преимущество Windows диалога это поддержка сетевых путей и вывод в дереве каталогов стандартных каталогов, таких как документы пользователя.

Особенностью является то, что теперь после вызова AskFolderName не будет меняться текущей каталог(CurrentDir).

10 : Отключить срабатывание автофильтра при выполнении операции RefreshItem

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

11 : унифицировать в 5.Х клиенте работу возвращаемого результата doLookupEx относительно главной и подчинённых выборок

  • TbtkLookupData (результат возвращаемый методом DoLookupEx содержащий информацию об основной выборке) ведёт себя идентично TbtkLookupSelectionData (описание выборок упомянутых в результирующем наборе атрибутов). Что касается значений Data и RecCount - возможно одновременне использование значений выделенных записей как подчинённых выборок, так и их мастер-выборки.
  • А также метод Data принимает первым параметром(поле) как число(номер поля в результирующем наборе для заданной выборки), так и строку - системное имя поля.

Получить результат выполнения DoLookup:

doLookupResult.LookupResult

Получить количество выбранных(select) строк в мастер-выборке:

doLookupResult.RecCount

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

doLookupResult.Data(0 , 1); //значение первого указанно в результирующем наборе поля мастер-выборки, в первой выделенной строке
doLookupResult.Data('ID' , 1); //значение поля ID в мастер-выборки, в первой выделенной строке

Получить колчество выделенных записей в подчинённой выборке:

doLookupResult.SelectData('SEL\_SubSelction').RecCount

Таким образом мы получаем возможность реализовать выбор из подчинённый выборок невыбрав не имея ни одной записи в масте

Получить значение поля выбранной строки подчинённой выборки:

doLookupResult.SelectData('SEL\_SubSelction').Data(0 , 1);
doLookupResult.SelectData('SEL\_SubSelction').Data('ID' , 1)

12 : Динамическая высота записи

Реализовано новое свойство атрибута выборки - “Участвует в подборе высоты”(Row.AutoHeightMode). Свойство позволяет не учитывать размеры контента заданных атрибутов при рассчёте высоты строки данных Табличного представления, или Древовидного (при включеном свойстве “Динамическая высота записи”).

  • “стандартная высота” (ahmDefaultHeight) - атрибут не участвует в подборе высоты записи
  • “подбор высоты” (ahmAutoHeight) - атрибут участвует в подборе высоты
  • “поведение по-умолчанию” (ahmDefault) - поведение GuiController-а представления не изменяется - “как раньше”.

Свойство выйдет в релизе BTK 1.4.115.0

13 : Реализовать TbtkLookUpTileControlFrame

Добавлен новый тип фрейма TbtkLookUpTileFrame. Фрейм реализует плиточный интерфейс.

Более подробно см. Плиточный (Tile) фрейм с интерфейсом живые плитки (TbtkLookUpTileFrame)

14 : Реализовать подтягивание значений по умолчанию с сервера для зарегистрированных свойств

Дефолтные значения свойств загружаются один раз при запуске приложения. На данный момент реализована установка значений для свойств фрейма, атрибута и операции. Данный функционал исправляет ряд багов:

  1. Значение по умолчанию на сервере и на клиенте могли отличаться. В результате поведение выборки можгло отличаться от ожидаемого.
  2. Вторая проблема является следствием первой и той особенности, что на клиент в метаданных приходят только те свойства, значения которых отличаются от значений по умолчанию. В результате могла получится ситуация, когда не было никакой возможности изменить значение свойства на клиенте. Например. Пусть какое то свойство в БТК имеет значение “1”, а его умолчательное значение в БТК равно “1”. А на клиенте умолчательное значение свойства равно “0”. В этом случае не было никакой возможности сменить значение у свойства на “1”. Так как “1” с сервера в метаданных не приходит, так как совпадает со значением по умолчанию на сервере.

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

1 : 5.2 Детальные фреймы сами заполняют свои фильтры из мастера, если наименование фильтра в детали совпадает с мастером

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

2 : Ошибки при вставке данных: дробные числа из Excel (если формат ячейки не числовой), не вставляются в колонку атрибута с типом ftFloat, только целые

Excel хранит дробные числа, в том числе и в “Общем формате”, с разделителем точка(.), что не соответствует разделителю дробной части Русской локали. При выводе на экран Excel заменяет эту внутреннюю точку на разделитель определённый для текущей локали.

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

Решение: в момент получения значения Sylk мы также приводим разделитель дробной части внутреннего значения к значению установленному в текущей локали.

То же верно и для скриптового объекта TbtkMicrosoftSYLKHelper: в изначальной реализации для ячейки в общем или строковом формате со значением 0,25 CellValue вернул бы 0.25(для текстового формата - зависит от порядка вода, тонкости работы самого Excel), а если ячейке задать формат числовой - 0,25. В новой реализации он вернёт в обоих случаях 0,25.

3 : К заголовкам древовидного и списочного представления не применяются стили

Проблема проявлялась при использовании темы приложения. Теперь стили применяются согласно настройкам указанным в свойствах аттрибутов(для заголовков отдельных столбцов) и фрейма(для всех заголовков).

4 : Ошибка при отмене действия, роллбеке и закрытии справочника

Исправлена ошибка из-за которой после закрытия некоторых модальных окон фокус не возвращался на предыдущий активный контрол. А если сразу после закрытия модальной формы нажать на кнопку закрытия MDI формы, то можно было получить исключение EAssert.

5 : Нельзя отключить аудит открытия выборки

Аудит можно было раньше отключить только для модальных окон. Теперь с помощью контекста сессии аудит будет отключаться для всех окон.

6 : Проблема с навигацией по атрибутам с помощью клавиатуры

Устранены проблемы перехода к редактированию следующей ячейки в древовидном списке по клавише Enter.

В древовидном фрейме с группировкой колонок переход происходил не по порядку - теперь происходит в порядке визуального следования колонок друг-за-другом.

7 : 5.2 Argument out of range при смене приложения.

Исправлена ошибка “Argument out of range” при смене приложения.

8 : Ускорение клиента 5.x

Ускорено открытие карточных и списочных фреймов на 30-50%. Производительность 5.2 клиента теперь близка производительности 4.30 клиента.

9 : Не применяется стиль приложения к панели инструментов html фрейма

Теперь к панели инструментов html фрейма тоже применяется стиль приложения.

10 : Мерцание mdi-окон при создании нового окна и переключении между ними

При создании нового окна и переключении межу уже созданными mdi-окнами была заметна их перерисовка с разными размерами. Проблема проявлялась если mdi-окна были максимизированы.

11 : Клиент 5.1.4: не прорисовываются и исчезают элементы на фрейме OLAP

Исправлена отрисовка OLAP фрейма.

12 : При открытии дерева параметры SQL заменяются на null

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

13 : 5.2n Лишние вызывы Refresh если AddVar параметра используемого в GST был выполнен после открытия выборки

Исправлена ошибка при которой выполнялся Refresh зависимой выборки на любое изменение параметров  в мастере. Такая ситуация возникала, если AddVar параметра на который цепляется параметр из GST происходил после выполнения GetSQLText.

14 : 5.2n Медленное обноление курсорного дерева без макроса Select

Ошибка проявлялась в древовидном списке после выполнение обновления набора данных. Обновление набора данных в древовидном списке завершается восстановлением раскрытых узлов. При раскрытии узла выполнялся запрос данных на загрузку подузлов. Необходимым условиями проявления ошибки было наличие курсорного запроса возвращающего сразу все данные. Теперь подузлы не загружаем, если у раскрываемого узла уже есть хотя бы один узел и не используется макрос “Select”, т.е. предпологаем, что первый запрос вернул сразу все записи.

15 : AV при закрытии выборки курсорного дерева

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

16 : Устранить мерцание и лишние перерисовки

При создании новых фреймов, и изменении размеров уже созданных, происходило множество лишних действий, которые приводили к мерцанию и снижению производительности.

Были выявлены и устранены следующие проблемы:

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

17 : Не показывается в фрейме оповещения новый фрейм отправки сообщений на основе выборки из BTK

Восстановлен фрейм на основе выборки “SEL_BTK_SENDMESSAGE.CARD” вместо предкомпиленного фрейма.

18 : Некорректный внешний вид полей карточного представления “только для чтения” в темах GlobalWithe

Раньше доступные только для чтения поля выглядели так же, как и доступные для редактирования. Теперь фон таких полей темнее, и их легко можно отличить.

Эта проблема присутствовала в темах оформления GlobalWitheBlue2015 и GlobalWitheYellow2015.

19 : 5.2 Расколбас в дереве при завершение редактирования ячейки по Enter

Исправлен переход к следующей редактируемой ячейке по Enter в дереве. Раньше он доходил до конца записи, переходил на новую запись и не возвращался вначало записи - следующая ячейка не редактируемая, что и приводило к зациливанию и переходу на последнюю запись датасета.

20 : 5.2n “Операция не может быть выполнена” при закрытии убитого окна

Исправлена ошибка Assertion failure при убийстве активной сессии выполняющей запрос данных.

21 : Восстановление позиций бандов при переоткрытии древовидных фреймов

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

22 : Не работает Selection.CloseNode (5й и 4й клиенты)

Исправлена/расширена работа метода Selection.CloseNode. Теперь можно закрыть узлы в не курсорном древовидном списке без удаления узлов и рекурсивно закрыть в курсорном.  Раньше игнорировались следующие сочетания:

  • Selection.CloseNode(GetVar(‘id’), false, false) для некурсорного дерева.
  • CloseNode(GetVar(‘id’), false, true) для курсорного дерева.

23 : 5.2n Could not convert variant of type (Null) into type (OleStr).

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

24 : 5.2n Рефреш дерева приводит к двум вызовам CheckWorkability

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

25 : HTML-фрейм пишет в юникоде после создания ДП от обращения.

Устранена ошибка самовольной перекодировки в юникод HTML-фреймом документа содержащего пустую разметку.

26 : Сплиттер можно перетащить на другой фрейм

Закрыть возможность перетащить сплиттер на другой контрол, в результате чего сам сплиттер и контрол которому меняли размер может оказаться под/над другим контролом.

27 : Ошибка при вводе данных в фильтр на клиенте 5.2.1

Исправлена ошибка из-за которой не закрывалась выборка закладок списочного фрейма при закрытии выборки фрейма. Как результат, ошибка приводила к тому, что не переоткрывались и не пересоздавались выборки закладок.

28 : 5.2n В дебагере на закладке данных транс грида пусто.

Восстановлено отображение составляющих транспонированной выборки в отладочном окне на вкладке “Транспонирование”.

29 : AV если в свойстве атрибута с редактором etIcon указать не существующий ImageList

Исправлено. Поведение приведено к поведению версии клиента 4.30 - просто не будут выводиться изображения.

30 : Не выгружается последняя запись датасета в MDB файл

Исправлена ошибка из-за которой терялась последняя запись при экспорте выборки в файл Access (Selection.ExportToAccess). В таблице Access после экспорта всегда отсутствовала последняя запись выборки.

31 : 4.30.41 Проверяется транзакция при переходе между строка грида

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

32 : Вложенность прерываемых(Ctrl+X) задач не поддерживается V2

Исправлено.

33 : Не вставляется значение в грид из Excel

При некоторых конфигурациях файла XLS в буфер попадают данные ранее вызывавшие исключение разбора Sylk-формата, в результате чего вставка не осуществлялась.

Добавлена обработка директивы “E” при разборе формата Sylk

34 : Не правильно вставляются значения из Excel в грид(и CreateSYLKBufHelper), если есть двойная кавычка

Исправлено неправильное извлечение строк содержащих двойную кавычку(“) при обработке Sylk и табулированного текстового диапазона (два наиболее широко используемых формата буфера обмена Excel)

35 : 4.30.43 При закрытии выборки по кнопке ESC выполняется getsqltext, в то время как закрытие через нажатие closeformcancel - нет

При нажатии любой клавиши её код заносится в параметр выборки #KeyChar. Соответственно, если это первое нажатие - параметр создаётся, со всеми вытекающими отсюда последствиясми - обновлением параметров. В обычной ситуации такое поведение не вызывает никаких труднойстей или проблем, но, если имеются неприменённые значения параметров GTS - выборка обновится, вне зависимости от того какой именно параметр был добавлен(входящий в GST, или нет), даже если он никаким образом не был связан с изменённым параметро(ожидающим применения - Refresh).

Поведение изменено: при добавлении параметра выборки всё так же происходит полный поиск параметров, но, если найденный для параметра GST параметр выборки тот же что и до обновления - это не справоцирует Refresh, даже если его значение и отличается от применённго на данный момент. Значение такого параметра может примениться только в случаях: его значение изменяется(снова), происходит Refresh.

Изменения поведения внесены только в мастер (5.2 ms) имогут быть применены к более ранним версиям только по обоснованному требованию.

36 : Оформление некоторых элементов в диалоговых окнах не соответствуют стилю приложения

Исправления коснулись диалоговых окон вызываемых с помощью следующих методов скриптора:

  1. ShowMessage и ShowMessageEx - исправлено оформление надписи.
  2. MessageDlg и MesssageDlgEx - исправлено оформление надписи.
  3. InputBox и InputQuery - исправлено оформление надписи и поля ввода.
  4. ShowButtonsDialog - исправлено оформление надписи и кнопок.
  5. ShowInfoform - исправлено оформление надписи.
  6. ExecSQLWithProgress и ExecSQLExWithProgress - исправлено оформление надписи.

37 : Свойство “Формат отображения значений числовых атрибутов” не работает для атрибутов карточного списка

Исправлена работа свойства. Раньше вместо отображаемого значения атрибута(редактируемое значение работало без ошибок) в карточном списке отображалось значение маски.

38 : Отладчик. Просмотр значений в отлаживаемой операции(Ctrl+F7) - не работает, если нет активных “вотчей”.

Восстановлена возможность по CTRL + F7 в момент отладки операции посмотреть результат выполнения выражения.  При ошибке результат всегда был <нет значения>.

39 : Ошибка при вызове Selection.ResetFilter

Исправлена ошибка “Field not found” при вызове Selection.ResetFilter.

40 : Исправить ошибку IO123 (при недостаточных правах на просмотр папки) в работе метода AskFolderName

Ошибка заключается в том, что текущий диалог выбора каталога(AskFolderName) не поддерживает сетевые пути. И при попытке вызова диалога из клиента расположенного в сетевом каталоге к которому нет прав доступа у пользователя возникала ошибка “IO 123”. Ошибку нельзя было обойти передав в AskFolderName параметром пользовательский каталог. При передачи пользовательского каталога через параметр всё равно возбуждалось исключение. Исправление решает последнию проблему.

41 : После прерывания запроса GST запрос повторяется

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

Реализованное решение: Если какое-то действие при активации фрейма было отменено пользователем, то дальнейшая активация прекращается.

42 : Ошибка при выполнении операции “Показать группировку” в справочнике ТМЦ

Исправлена ошибка AV при обновлении выборки. Ошибка проявлялась если перед вызовом Refresh изменить значение переменной IsGrouping#. В этом случае мог измениться макрос группировки GroupMacros, что приводило к закрытию выборки. Refresh не расчитан на закрытие выборки в момент его выполнения. Теперь, вместо продолжения обновления данных будет переоткрыта выборка, в том случае если макрос был изменен во время выполнения обновления.

43 : Детальная выборка не обновляется на изменение значения в фильтре (связь по суперу).

Исправлено.

44 : 5.2n Попытка уничтожения выборки у которой есть выполняемые операции.

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

45 : 5.2n не работает паскаль скрипт в окне сообщений мессенджера

Восстановлена работоспособность паскаль скриптов в гиперссылках внутри HTML страницы в HTML фреймах.

46 : 5.2n Обновлять список филдовых параметров в детали после изменения набора филдов в мастере

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

47 : AV при вводе в автофильтре в карточном списке

Исправлено.

48 : Не работает поиск записи гриде при вводе текста с клавиатуры

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

49 : AV если операция-разделитель содержит под операции

Исправлена ошибка. Тем не менее не приветсвуется для операций являющихся разделителями делать подоперации. Сейчас такие подоперации будут попадать в корень панели инструментов.

50 : На тулбаре не отображаются разделители (операции с наименованием “-“)

Не отображались разделители в панели инструментов.  Ошибка исправлена.

51 : Ошибка AV в редаторе с автосеттером

Устранена ошибка которая ранее могла приводить к AccessViolation при срабатывании авто-сеттера в редакторе.

52 : ParamValueByName fastReport4.

Общее описание: параметры запроса в шаблонах отчётов FastReport4 (*.fr3) при выполнении перетирались значениями из выборки откуда был открыт отчёт. Это происходило с теми параметрами для которых существует праобраз в выборке (их имени соответствует имени поля выборки). Значение поля берётся из набора данных (DataSet-а) выставленного в шаблоне отчёта как Master. Если Master не задан, то мастером считается выборка откуда открыт отчёт.

Изменено поведение: в первую очередь в качестве значения берётся значение заданной формулы в шаблоне отчёта для данного параметра запроса, если формула пуста - значение мастера. Если мастер - выборка отчёта - значение контекста (значение выборки, фильтров, мастер-выборок); если мастер - запрос из шаблона отчёта - значение поля запроса.

53 : Медленная отрисовка форм со стилем интерфейса “Стиль ОС”

Ускорена отрисовка элементов карточного представления.

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

Проблема была хорошо заметна только при работе через RDP, но теоретически при большом количестве элементов на карточке могла быть заметна и без RDP.

Теперь отрисовка карточки происходит быстро и все её элементы отображаются одновременно, без задержек.

54 : Не меняет свой тип редактор управляемый атрибутом

Исправлено. Всплывающий редактор в древовидном списке не менял свой тип при переходе от одной записи к другой.