Цитата:
Сообщение от
Ardak
Спасибо всем!!! получился вариант с Mark,MarkedOnly
вот код:
OnPreDataItem()
REPEAT
IF ("Starting Action Date">=StartDate) AND ("Starting Action Date"<=EndDate) THEN MARK(TRUE);
IF ("Ending Action Date">=StartDate) AND ("Ending Action Date"<=EndDate) THEN MARK(TRUE);
UNTIL NEXT = 0;
MARKEDONLY(TRUE);

Я бы убрал точку с запятой после первой строки и поставил else перед второй, а если по "Starting Action Date" и по "Ending Action Date" есть ключи (не обязательно один ключ на оба поля), где эти поля находятся относительно не далеко от начала ключа, то пользовался бы фильтрами.
Т.е.
REPEAT
IF ("Starting Action Date">=StartDate) AND ("Starting Action Date"<=EndDate) THEN
MARK(TRUE)
ELSE IF ("Ending Action Date">=StartDate) AND ("Ending Action Date"<=EndDate) THEN
MARK(TRUE);
UNTIL NEXT = 0;
MARKEDONLY(TRUE);
или если с ключами
SETCURRENTKEY(..., "Starting Action Date", ...); //чем меньше полей до "Starting Action Date", тем лучше
SETRANGE("Starting Action Date", StartDate, EndDate);
IF FIND('-') THEN REPEAT
MARK(TRUE);
UNTIL NEXT = 0;
SETRANGE("Starting Action Date");
SETCURRENTKEY(..., "Ending Action Date", ...); //чем меньше полей до "Ending Action Date", тем лучше
SETRANGE("Ending Action Date", StartDate, EndDate);
IF FIND('-') THEN REPEAT
MARK(TRUE);
UNTIL NEXT = 0;
MARKEDONLY(TRUE);