ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

}

}


//в случае, если чего-то не хватило, сообщаем об этом пользователю

if (errStr != string.Empty)

{

throw new Exception(errStr);

}


//если всё нормально, то возвращаем массив объектов, которые надо обновить

ret = new DataObject[retObjs.Count];

retObjs.CopyTo(ret,0);


}

return ret;

// *** End programmer edit section *** (OnUpdateЗаказ)

}


Блокирование заказа, после перехода в состояние Оплачен

Чтобы избежать такой ситуации, когда количество товара на складе вычитается несколько раз, сделаем блокирование статуса заказа, если заказ уже оплачен. Перепишем метод Edit в зависимой форме:

// *** Start programmer edit section *** (WinformС_ЗаказE CustomMembers)

public override void Edit(ICSSoft.STORMNET.DataObject dataobject, string contpath, string propertyname, object tag)

{

base.Edit (dataobject, contpath, propertyname, tag);


if (dataobject!= null)

{

EditManager.SetReadonlyFlagProperties(true, new string[]{"Цена"});

СтрокаЗаказа.EditManager.AfterChangeProperty -=new ICSSoft.STORMNET.Windows.Forms.Binders.AfterChangePropertyDelegate(EditManager_AfterChangeProperty);

СтрокаЗаказа.EditManager.AfterChangeProperty +=new ICSSoft.STORMNET.Windows.Forms.Binders.AfterChangePropertyDelegate(EditManager_AfterChangeProperty);

if (((Заказ)dataobject).Статус == СостояниеЗаказа.Оплаченный)

{

EditManager.SetReadonlyFlagProperties(true, new string[]{"Статус"});

}

}

}

Контрольные вопросы

  1. Какие проекты генерируются с помощью CASEBERRY в рамках одной разрабатываемой системы?

  2. Что такое вычислимый атрибут?

  3. Что такое бизнес-сервер?

  4. Как получить сервис данных?


Темы для самостоятельной работы

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

  1. В накладной сделать вычислимые атрибуты сумма и т.д. на примере заказа и написать соответствующие обработчики.

  2. Исправить сгенерированную форму таким образом, чтобы элементы управления располагались более рационально.

  3. Сделать фильтрацию по кладовщикам для лукапа на форме редактирования для объектов класса Склад.

Перспективы развития АСУ_Склад

Чтобы разрабатываемая система была пригодна для использования в «боевых условиях», нужно учесть и обработать следующие моменты:

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

  2. Документы должны выводиться на печать.

  3. Срок оплаты заказа должен контролироваться.

  4. Номера документов должны использоваться и как-то быть упорядочены


1 В действительности понятие представления значительно шире — это некоторое подмножество всех атрибутов, включая атрибуты связанных классов. В общем, смысл представления проистекает из простого вопроса: допустим, необходимо прочитать некоторый объект из базы данных: какие атрибуты должны быть прочитаны? Ну, не все же подряд читать. Аналогичные задачи указания множества атрибуты возникают и во многих пользовательском интерфейсе.

2 Менеджер редактирования (EditManager) специальный класс, ответственный за связывание свойств объектов данных и элементов пользовательского интерфейса (контролов)