نزول وقت اوتوماتيكيا علي سطر

Viewed 12

كيف يمكن للنظام أن يقوم تلقائيًا بتعبئة حقل الوقت في سطر معين عند تحديد حقل Boolean، بحيث يتم تسجيل وقت التحديد عند الحفظ؟
اللي تم تجربته الاتي

detailedTasks.fromTime=mlsql(
SELECT CASE WHEN {detailedTasks.b1} = 1
THEN FORMAT(GETDATE(), 'HH:mm')
ELSE ''
END)endmlsql

1 Answers

منطقك سليم والـ post action بتتنفّذ صح وقت ما الـ Boolean يتغيّر — خريطتك كان المفروض تشتغل، لكنها ما اشتغلتش بسبب bug في تحويل النص لحقل الوقت.

⚠️ مهم — لازم تحدّث النسخة الأول: الـ bug ده اتصلّح في إصدار 2026-06-09. لازم تعمل تحديث للإصدار ده (أو أحدث) قبل ما تجرّب الحل. على النسخ الأقدم خريطتك مش هتشتغل بسبب الـ bug.

السبب

حقل الوقت في النظام (TimeDF) مخزَّن داخليًا كـ عدد مللي ثانية من بداية اليوم (رقم صحيح)، مش كنص. يعني الساعة 14:30 بتتخزن كرقم 52200000.

في النسخ القديمة كان مسار تحويل القيمة في الـ field map بيتوقّع رقم المللي ثانية بس، فلمّا كودك بيرجّع FORMAT(GETDATE(), 'HH:mm') = النص "14:30"، التحويل كان بيفشل بسبب علامة : وما بينزلش أي قيمة في الحقل.

الحل (بعد التحديث لإصدار 2026-06-09)

تم تعديل النظام بحيث إن تحويل القيمة لحقل وقت بقى يفهم النص اللي فيه : (أو .) ويحوّله صح. يعني خريطتك الأصلية هتشتغل زي ما هي بدون أي تغيير:

detailedTasks.fromTime=mlsql(
    select case when {detailedTasks.b1} = 1
        then format(getdate(), 'HH:mm')
        else null
    end
)endmlsql

نقطة على else null

دلوقتي لو الـ Boolean اتشال، الكود بيرجّع null فبيمسح الوقت. لو عايز الوقت يفضل متسجّل حتى بعد ما تشيل العلامة، رجّع القيمة الحالية بدل null:

        else {detailedTasks.fromTime.$toStringNormal}

خلي بالك إنك ترجّع نص في الحالتين (format(...) و $toStringNormal) عشان SQL Server بيلخبط لو الـ case when رجّع نص في فرع ورقم في فرع تاني.