دفتر کل تغییرناپذیر؛ چرا سند حسابداری را نباید پاک کرد و زنجیره هش چه میکند؟
قدرت یک دفتر کل فقط در درست جمع زدن نیست؛ در این است که بتوانید بگویید این عدد از کجا آمده و کسی بیخبر آن را عوض نکرده است. برای همین حسابداری خوب سند را پاک نمیکند، اصلاح میکند. زنجیره هش همین اصل قدیمی را با ابزار امروز قابل راستیآزمایی میکند.
محصول آماده کارن تکنولوژی
این را روی داده واقعی کسبوکار خودتان ببینید
آنچه در این مقاله میخوانید، در محصولات کارن پیادهسازی شده است. در جلسه دمو، همان را روی داده و فرآیند خودتان اجرا میکنیم.
درخواست دمو رایگان یا تماس بگیرید: ۰۲۱-۸۸۶۱۴۲۸۲در این صفحه
سه قاعده قدیمی که هنوز مهماند
- تراز: جمع بدهکار هر سند با جمع بستانکار آن برابر است.
- اصلاح با سند: سند ثبتشده پاک نمیشود؛ اثرش با سند معکوس یا اصلاحی برداشته میشود.
- قفل دوره: بعد از بستن دوره، کسی بیتأیید سندی در آن دوره ثبت نمیکند.
این قواعد بوروکراسی نیستند. گزارشی که ماه پیش به مدیر دادهاید، باید فردا هم قابل بازسازی باشد. اگر سندی پاک شود، آن گزارش دیگر توضیح ندارد.
قاعده باید کجا اجرا شود؟
خیلی از نرمافزارها کنترل تراز را در فرم ورود داده میگذارند. این کافی نیست؛ چون داده از راههای دیگری هم میآید: واردات از فایل، سرویسهای اتصال و حالا دستیار هوش مصنوعی. قاعدهای که فقط در صفحه نمایش است، با اولین مسیر تازه دور زده میشود.
هش چیست؟ توضیح بدون فرمول
هش اثر انگشت یک متن است. هر متنی را به یک تابع هش بدهید، یک رشته با طول ثابت میگیرید. دو ویژگی مهم دارد: با تغییر حتی یک رقم از متن، اثر انگشت کاملاً عوض میشود، و از روی اثر انگشت نمیشود متن را بازسازی کرد.
حالا تصور کنید اثر انگشت هر سند، از محتوای آن سند بهعلاوه اثر انگشت سند قبلی ساخته شود:
| سند | محتوا | اثر انگشت از چه ساخته میشود |
|---|---|---|
| ۱۲۴۷ | فاکتور فروش | محتوای ۱۲۴۷ + اثر ۱۲۴۶ |
| ۱۲۴۸ | دریافت از مشتری | محتوای ۱۲۴۸ + اثر ۱۲۴۷ |
| ۱۲۴۹ | سند معکوس برای اصلاح | محتوای ۱۲۴۹ + اثر ۱۲۴۸ |
اگر کسی مبلغ سند ۱۲۴۷ را مستقیم در پایگاه داده عوض کند، اثر انگشت آن تغییر میکند و دیگر با چیزی که سند ۱۲۴۸ به آن گره خورده است نمیخواند. یک فرمان بررسی یکپارچگی میتواند زنجیره را از ابتدا مرور کند و نقطه شکست را نشان دهد.
میخواهید این را روی سناریوی خودتان ببینید؟
دایاتل را در یک جلسه دمو با داده نمونه صنف خودتان ببینید.
زنجیره هش چه کاری نمیکند
- جلوی خطای انسانی را نمیگیرد. سند اشتباهی که درست ثبت شده، در زنجیره هم میماند.
- بهتنهایی جلوی دسترسی غیرمجاز را نمیگیرد؛ کارش آشکار کردن تغییر است. پس هنوز دسترسی نقشمحور و ممیزی لازم است.
- همهچیز را بلاکچین نمیکند. برای این کار شبکه توزیعشده لازم نیست؛ هدف فقط قابل راستیآزمایی بودن سوابق خود سازمان است.
برای اطمینان بیشتر، چکیده زنجیره را میشود بیرون از همان سیستم نگه داشت تا با آن مقایسه شود.
پرسشهایی برای انتخاب نرمافزار
- آیا سند ثبتشده حذف میشود یا فقط با سند معکوس اصلاح میشود؟
- قفل دوره در هسته اجرا میشود یا در فرم؟
- ممیزی مقدار قبل و بعد هر تغییر را نگه میدارد؟
- راهی برای بررسی یکپارچگی سوابق وجود دارد؟
- محاسبات با دقت کامل اعشاری انجام میشود یا خطای گرد کردن ممکن است؟
اصلاح درست یک سند با مثال
فرض کنید ۱۰۰ میلیون ریال هزینه اجاره را اشتباه در حساب هزینه تبلیغات ثبت کردهاید. بهجای ویرایش سند اصلی، دو سند میآید:
| سند | بدهکار | بستانکار | مبلغ (ریال) |
|---|---|---|---|
| ۱۰۰۰: سند اشتباه | هزینه تبلیغات | بانک | ۱۰۰٬۰۰۰٬۰۰۰ |
| ۱۰۲۵: سند معکوس | بانک | هزینه تبلیغات | ۱۰۰٬۰۰۰٬۰۰۰ |
| ۱۰۲۶: سند درست | هزینه اجاره | بانک | ۱۰۰٬۰۰۰٬۰۰۰ |
نتیجه نهایی همان است که میخواستید: هزینه اجاره درست شد و مانده بانک تغییری نکرد. ولی حالا تاریخچه هم میگوید چه چیزی اشتباه شد، کی اصلاح شد و توسط چه کسی. اگر گزارش تبلیغات پیش از این اصلاح برای مدیر فرستاده شده باشد، تفاوت عدد توضیح دارد.
ممیزی و زنجیره هش چه فرقی دارند؟
| ثبت ممیزی | زنجیره هش | |
|---|---|---|
| به چه سؤالی پاسخ میدهد | چه کسی، کی و چه چیزی را تغییر داد؟ | آیا این سوابق بیخبر دستکاری شدهاند؟ |
| چه زمانی کمک میکند | بررسی یک تغییر مشخص | راستیآزمایی کل تاریخچه |
| نقطه ضعف بدون دیگری | اگر خود ممیزی ویرایش شود، معلوم نیست | میگوید تغییری رخ داده، نه اینکه چرا |
این دو جای هم را نمیگیرند. ممیزی داستان را تعریف میکند و زنجیره هش نشان میدهد آن داستان دستکاری نشده است. برای همین خوب است خود دفتر ممیزی هم در زنجیره باشد.
دقت محاسبه؛ خطایی که ریالبهریال جمع میشود
بسیاری از زبانهای برنامهنویسی بهطور پیشفرض عدد اعشاری را به شکل دودویی و تقریبی نگه میدارند. نمونه معروفش این است که حاصل ۰٫۱ + ۰٫۲ دقیقاً ۰٫۳ نمیشود. در یک محاسبه شاید دیده نشود، اما در هزاران ردیف فاکتور، ارز و مالیات میتواند اختلافی بسازد که هیچکس نمیفهمد از کجا آمده است.
راه درست، استفاده از نوع داده اعشاری دقیق (مثل Decimal) در محاسبه و ذخیره است. نکته دوم، قاعده گرد کردن است: مالیات را روی هر ردیف گرد میکنید یا روی جمع فاکتور؟ هر دو ممکن است کمی متفاوت شوند. این قاعده باید یکسان و تعریفشده باشد، نه نتیجه تصادفی کد.
این کار در دایاتل چگونه انجام میشود
هسته حسابداری دایاتل همین اصول را اجرا میکند: ثبت دوطرفه، محاسبات اعشاری دقیق، منع سند نامتوازن، قفل دوره، ابطال فقط از راه سند معکوس و زنجیره هش با فرمان بررسی یکپارچگی. هیچ لایهای، حتی دایاتل هوشمند، مستقیم در دفاتر نمینویسد.

جزئیات فنی در معماری و امنیت دایاتل آمده است. قیمت دایاتل بسته به ابعاد سازمان، ماژولها و مدل استقرار تعیین میشود.
پرسشهای متداول
چون گزارشهای قبلی به آن تکیه داشتهاند و حذف آن ردپای تغییر را از بین میبرد. سند معکوس هم خطا را اصلاح میکند و هم تاریخچه را نگه میدارد.
نه. از یک ایده مشترک استفاده میکند، اما به شبکه توزیعشده و توکن نیازی ندارد. هدفش فقط آشکار کردن تغییر در سوابق است.
اگر زنجیره و بررسی یکپارچگی فعال باشد، تغییر مستقیم در بررسی بعدی آشکار میشود. نگهداری چکیده در بیرون این اطمینان را بیشتر میکند.
محاسبه هش معمولاً کار سبکی است. سرعت نهایی به طراحی سیستم و حجم داده بستگی دارد و بهتر است روی داده نمونه سنجیده شود.
کمی. ولی میشود در گزارش مدیریتی اسناد معکوس را جمع کرد و همچنان جزئیات را برای حسابرس نگه داشت. این بهای کمی برای داشتن تاریخچه واقعی است.
این یک تصمیم سازمانی است. باز کردن قفل باید سطح تأیید مشخص داشته باشد و در ممیزی ثبت شود.
میتواند با اطمینان بیشتری به تاریخچه تغییرها نگاه کند. با این حال حسابرسی هنوز به بررسی ماهیت و مستندات سند نیاز دارد.





