protected ResultMonad.Result <PositionEvaluateSource, string> BuildItem(TargetPart part, ResultItem resultTerm, ResultItem resultWork)
                {
                    ArticleGeneralResult termResult = resultTerm as ArticleGeneralResult;
                    ArticleGeneralResult workResult = resultWork as ArticleGeneralResult;

                    if (MaybeMonadUtils.HaveAnyResultNullValue(termResult, workResult))
                    {
                        return(Result.Fail <PositionEvaluateSource, string>(CONCEPT_RESULT_INVALID_TEXT));
                    }

                    Maybe <PositionFromStopValue> termValues = termResult.ReturnPositionTermFromStopValue();
                    Maybe <MonthFromStopValue>    daysValues = termResult.ReturnMonthFromStopValue();
                    Maybe <MonthScheduleValue>    realValues = workResult.ReturnRealMonthValue();
                    Maybe <MonthScheduleValue>    restValues = workResult.ReturnTermMonthValue();

                    if (MaybeMonadUtils.HaveAnyResultNoValues(termValues, daysValues, realValues, restValues))
                    {
                        return(Result.Fail <PositionEvaluateSource, string>(CONCEPT_RESULT_INVALID_TEXT));
                    }

                    PositionFromStopValue termPosition = termValues.Value;
                    MonthFromStopValue    daysPosition = daysValues.Value;
                    MonthScheduleValue    realSchedule = realValues.Value;
                    MonthScheduleValue    restSchedule = restValues.Value;

                    PositionEvaluateSource buildResult = new PositionEvaluateSource
                    {
                        PositionPart  = part,
                        DateFrom      = termPosition.DateFrom,
                        DayPeriodFrom = daysPosition.PeriodDayFrom,
                        DateStop      = termPosition.DateStop,
                        DayPeriodStop = daysPosition.PeriodDayStop,
                        PositionType  = termPosition.PositionType,
                        ScheduleMonth = realSchedule.HoursMonth,
                        ScheduleLimit = restSchedule.HoursMonth
                    };

                    return(Result.Ok <PositionEvaluateSource, string>(buildResult));
                }