9 нояб. 2010 г.

Шажок к MVC

С выходом версии 2.5.7 с форм стандартных бухгалтерских отчетов и складской карточки исчезли компоненты xdeStart и xdeFinish. Их заменил компонент ввода периода gsDatePeriod. Но, не спешите с заменами по тексту скрипт-функций. Модель MVC запрещает обращение к визуальным контролам из кода прикладной логики. В интерфейсы классов Tgdv_frmG, Tgdc_frmInvCard добавлены свойства DateBegin, DateEnd. Их (и только их!) следует использовать для считывания и установки периода построения отчета.

Код, который обращался напрямую к удаленным компонентам работать не будет. В процессе апгрейда БД, Гедымин ищет в исходных текстах обращение к xdeStart, xdeFinish и меняет на работу со свойствами. Естественно, что трудно создать абсолютно универсальный алгоритм. Поэтому, после апгрейда следует открыть редактор скрипт-объектов и поискать в текстах функций строки "xdeStart", "xdeFinish". Если что найдется — исправлять вручную.

В эталоне присутствует код, который проверяет наличие компонента xdeStart или gsDatePeriod и обращается или к одному, или ко второму.
if Assigned(OwnerForm.FindComponent("xdeStart")) then
  ...
elseif Assigned(_
  OwnerForm.FindComponent("gsPeriodEdit")) then
  ...
end if
Я думаю, стоит пройтись по исходникам и заменить на обращение к свойствам формы без всяких проверок.
Other.FieldByName("Period").AsString = _
  "за период с " & OwnerForm.DateBegin & _
  " по " & OwnerForm.DateEnd
На эталоне одна пользовательская форма содержит компоненты xdeStart, xdeFinish. Это Книга покупок. Найти ее можно в Глобальном хранилище, по вхождению строки xdeStart в значения параметров. Форма книги покупок наследуется от Tgdv_frmG поэтому с нее компоненты надо удалить вручную. Для этого открываем в окне Хранилища просмотр текста DFM формы и удаляем из него описание объектов xdeStart, xdeFinish, а заодно и метки к ним: Label1, Label2.

Клиентам, которые работают с Книгой покупок, после установки версии 2.5.7 следует или проделать операции ручного удаления компонентов из DFM или загрузить новые версии настроек.

Комментариев нет:

Отправить комментарий