Показать сообщение отдельно
Старый 05.10.2004, 18:20   #7  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Почему на первый взгляд?
Вот. Получилось за 7 минут

Код:
VAR
 Log: Record 405;

PROCEDURE GetPeriodicValue(Date:Date; TableNo:Integer; FieldNo:Integer) : Text[250];
    BEGIN
      // Функция получения значения периодического реквизита
      // Вход:
      //        Date  - дата, на которую требуется получить значение
      //        TableNo - номер таблицы
      //        FieldNo - номер поля
      // Выход - значение

      Log.RESET;
      Log.SETRANGE("Table No.",TableNo);
      Log.SETRANGE("Field No.",FieldNo);
      //Log.SETFILTER("Primary Key Field 1 Value",Value);
      IF Log.FIND('+') THEN
      REPEAT
         IF DT2DATE(Log."Date and Time")<=Date THEN EXIT(Log."New Value")
      UNTIL Log.NEXT(-1) = 0;
      EXIT('');
    END;
Жалющие могут дополнить фильтрацию по нужному ключу (закомментировано), а также выходное значение при пустой таблице. Алгоритм реализован в лоб. Я уже сейчас вижу как можно его упростить.