// *** Start programmer edit section *** (ЭлектроннаяЗачётка CustomMembers)
        private bool MarkExist(IEnumerable marksCollection, NewPlatform.RecordBookBL.Оценка оценка, bool searchAmongDetails)
        {
            var marksCollectionForQuery = marksCollection.Cast <NewPlatform.RecordBookBL.Оценка>();
            var count = searchAmongDetails ? 1 : 0;
            var названиеДисциплины = оценка.Предмет.Дисциплина.Название;
            var фиоСтудента        = оценка.Студент.ФИО;
            var названиеСеместра   = оценка.Предмет.Семестр.Название;

            return(marksCollectionForQuery.Count(m =>
                                                 m.Предмет.Дисциплина.Название == названиеДисциплины &&
                                                 m.Студент.ФИО == фиоСтудента &&
                                                 m.Предмет.Семестр.Название == названиеСеместра) > count);
        }
        // *** End programmer edit section *** (ЭлектроннаяЗачётка CustomMembers)


        // *** Start programmer edit section *** (OnUpdateОценка CustomAttributes)

        // *** End programmer edit section *** (OnUpdateОценка CustomAttributes)
        public virtual ICSSoft.STORMNET.DataObject[] OnUpdateОценка(NewPlatform.RecordBookBL.Оценка UpdatedObject)
        {
            // *** Start programmer edit section *** (OnUpdateОценка)
            var monthOfExam = UpdatedObject.Дата.Month;

            if (monthOfExam != 1 && monthOfExam != 6)
            {
                throw new Exception("Экзамены и зачеты могут быть сданы только в январе или в июне!");
            }

            if (UpdatedObject.GetStatus() == ObjectStatus.Created)
            {
                var markQuery = ((SQLDataService)DataService).Query <Оценка>(Оценка.Views.ОценкаE);
                var markExist = MarkExist(markQuery, UpdatedObject, false) || MarkExist(UpdatedObject.Предмет.Оценка, UpdatedObject, true);

                if (markExist)
                {
                    throw new Exception($"У студента '{UpdatedObject.Студент.ФИО}' уже выставлена оценка по предмету '{UpdatedObject.Предмет.Дисциплина.Название}' в семестре '{UpdatedObject.Предмет.Семестр.Название}'");
                }

                if (UpdatedObject.Значение == ЗначениеОценки.НетОценки)
                {
                    UpdatedObject.Состояние = СостояниеОценки.ОценкаНеВыставлена;
                }
                else
                {
                    UpdatedObject.Состояние = СостояниеОценки.ОценкаВыставлена;
                }
            }
            else if (UpdatedObject.GetStatus() == ObjectStatus.Altered)
            {
                if (UpdatedObject.Состояние == СостояниеОценки.ОценкаНеВыставлена && UpdatedObject.Значение != ЗначениеОценки.НетОценки)
                {
                    UpdatedObject.Состояние = СостояниеОценки.ОценкаВыставлена;
                }
                else if (UpdatedObject.Состояние == СостояниеОценки.ОценкаВыставлена && UpdatedObject.Значение != ((Оценка)UpdatedObject.GetDataCopy()).Значение)
                {
                    UpdatedObject.Состояние = СостояниеОценки.ОценкаИсправлена;
                }
            }

            return(new ICSSoft.STORMNET.DataObject[0]);
            // *** End programmer edit section *** (OnUpdateОценка)
        }
 public virtual void Add(NewPlatform.RecordBookBL.Оценка dataobject)
 {
     this.AddObject(((ICSSoft.STORMNET.DataObject)(dataobject)));
 }