Прежде всего, ссылки должны быть в отдельных параграфах, чтобы ими можно было управлять отдельно.
Во-вторых, у вас должно быть представление, в котором отсортирован первый столбец и содержит имя пользователя, за которым следует дата изполя в ваших ежедневных документах посещаемости.Например, он должен быть в таком формате, как "Joe User / Org-01-01-12".Второй столбец в представлении должен иметь статус из документов.Ради этого ответа давайте назовем это представление «DailyAttendance».
В-третьих, у вас есть три случая: документ посещаемости для пользователя в этот день не существует, он существует, и статус «есть»Checked In ", или он существует и имеет статус" Checked Out ".Может быть и четвертый случай, когда документ существует, но статус не «зарегистрирован» или «извлечен», но ваша логика, вероятно, должна попытаться избежать этого, и в любом случае я собираюсь написать формулы скрытия когдатак что в этом случае обе ссылки будут скрыты.
Теперь, в большинстве случаев, на самом деле, немного проще думать с точки зрения Видения-Когда, а не Скрытия-Когда, поэтому я собираюсь переформулировать вашитребования как видят когда.Ваши правила See-WHen:
- См. Точку регистрации, когда нет документа о ежедневном посещении для текущего пользователя и текущего дня.
- См. Точку выхода из системыесли для текущего пользователя и текущего дня существует документ о ежедневном посещении, а поле «Статус» в документе «Зарегистрировано».
Чтобы использовать логику «видеть когда» в формуле «скрыть когда», выпросто напишите свою формулу, основанную на правилах «видеть когда», а затем поставьте перед ней логический смысл, чтобы получить конечный результат.
Ваше скрытое время для абзаца, содержащего точку входа "Регистрация", будет выглядеть следующим образом:
key := @Name([CN];@Username) + "-" + @Text(@Today);
status := @DbLookup("Notes":"NoCache";"":"";"DailyAttendance";key;2);
notFound := @IsError(status);
seeWhen = notFound;
!(seeWHen);
Большинство опытных программистов Notes сведут это в более короткую формулу.Я оставил его в пошаговом формате, чтобы сделать его как можно более очевидным.
Ваше время скрытия для абзаца, содержащего точку доступа «Извлечение», будет выглядеть следующим образом:
key := @Name([CN];@Username) + "-" + @Text(@Today);
status := @DbLookup("Notes":"NoCache";"":"";"DailyAttendance";key;2);
found := !(@IsError(status));
seeWhen = found & (status = "Checked In");
!(seeWhen)