public override List <Error> Validate(List <Error> errors)
        {
            RequireString(this, x => x.TaskID, 14, errors, "A");
            ValidateString(this, x => x.TaskDesignator, 32, errors, "B");
            ValidateString(this, x => x.CustomerIdRef, 14, errors, "C");
            ValidateString(this, x => x.FarmIdRef, 14, errors, "D");
            ValidateString(this, x => x.PartFieldIdRef, 14, errors, "E");
            ValidateString(this, x => x.ResponsibleWorkerIdRef, 14, errors, "F");
            ValidateEnumerationValue(typeof(ISOTaskStatus), TaskStatusInt, errors);
            if (DefaultTreatmentZoneCode.HasValue)
            {
                ValidateRange(this, x => x.DefaultTreatmentZoneCode.Value, 0, 254, errors, "H");
            }
            if (PositionLostTreatmentZoneCode.HasValue)
            {
                ValidateRange(this, x => x.PositionLostTreatmentZoneCode.Value, 0, 254, errors, "I");
            }
            if (OutOfFieldTreatmentZoneCode.HasValue)
            {
                ValidateRange(this, x => x.OutOfFieldTreatmentZoneCode.Value, 0, 254, errors, "J");
            }
            TreatmentZones.ForEach(i => i.Validate(errors));
            Times.ForEach(i => i.Validate(errors));
            if (OperationTechPractice != null)
            {
                OperationTechPractice.Validate(errors);
            }
            WorkerAllocations.ForEach(i => i.Validate(errors));
            DeviceAllocations.ForEach(i => i.Validate(errors));
            Connections.ForEach(i => i.Validate(errors));
            ProductAllocations.ForEach(i => i.Validate(errors));
            DataLogTriggers.ForEach(i => i.Validate(errors));
            CommentAllocations.ForEach(i => i.Validate(errors));
            TimeLogs.ForEach(i => i.Validate(errors));
            if (Grid != null)
            {
                Grid.Validate(errors);
            }
            GuidanceAllocations.ForEach(i => i.Validate(errors));

            return(errors);
        }