Цитата:
Сообщение от
tyrex
Почему на первый взгляд?
Вот. Получилось за 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;
Жалющие могут дополнить фильтрацию по нужному ключу (закомментировано), а также выходное значение при пустой таблице. Алгоритм реализован в лоб. Я уже сейчас вижу как можно его упростить.
спасибо конечно за грамотный исходный код, но Вы забываете, что надо, во первых, перелопатить весь функционал в системе, который отвечает за подтягивание необходимых периодических реквизитов, а это не только отчёты, но по всей вероятности и все остальные обьекты, во вторых, подумайте, если сотрудник уволился а нового нет, скажем неделя выпадает, а документы должен подписывать кто-то, кто исполняет обязанности (временно) этого лица.
Как тут быть?
Реализовать-то можно быстро, а потом всё равно придёться дописывать...
Спасибо всё равно.