29.08.2011, 11:23 | #1 |
Участник
|
Доброго дня!
Эта ф-ия отвечает за названия столбцов –дат в матричной форме ( кодюнит PeriodFormManagement). Заинтересовал меня выделенный кусок. Выполняется не засереный код. А тут идет присвоение, а потом поиск. Засеренный код не выполняется. и работает и без Calendar.SETRANGE("Period Type",PeriodType); FindDate(SearchString : Text[3];VAR Calendar : Record Date;PeriodType : 'Day,Week,Month,Quarter,Year,Accounting Period') : Boolean Calendar.SETRANGE("Period Type",PeriodType); // вот здесь! >> Calendar."Period Type" := PeriodType; IF Calendar."Period Start" = 0D THEN Calendar."Period Start" := WORKDATE; // вот здесь! << IF SearchString IN ['','=><'] THEN SearchString := '=<>'; IF PeriodType = PeriodType::"Accounting Period" THEN BEGIN SetAccountingPeriodFilter(Calendar); Found := AccountingPeriod.FIND(SearchString); IF Found THEN CopyAccountingPeriod(Calendar);END ELSE BEGIN Found := Calendar.FIND(SearchString); IF Found THEN Calendar."Period End" := NORMALDATE(Calendar."Period End"); END; EXIT(Found); Я не понимаю его логику. Предположительно выполняется присвоение ключевых полей делается для поиска FIND('=><'). Подскажите, пжл, кто глубже понимает Нав, в чем фишка? |
|
29.08.2011, 12:58 | #2 |
Участник
|
Думаю, что вы правы в своем предположении, это поиск записи с учетом ранее наложенного фильтра.
Причем в документации по функции FIND найдем "If this parameter contains '=', '>' or '<', then you must assign value to all fields of the current and primary keys before you call FIND." Так что без присваивания значения она работать в данном случае и не может)) |
|
29.08.2011, 13:19 | #3 |
Участник
|
Спасибо большое, prefreitor!
Теперь все до конца ясно. Только не получается сразу привязать документацию к коду. Талант нужен. |
|