تاریخ هجری شمسی در MS Project بدون مشکل در سال 1400 و بعد از آن

به همراه وارد کردن تعطیلات روز جمعه و تعطیلات سال در تقویم

سلام!

دوستانی که با MS Project کار میکنن میدونن یا باید فارسی سازهای شرکت ها رو خریداری کنن یا از نسخه های قدیمی استفاده کنن. توی اینترنت یک راهکاری وجود داره که میشه ستونی ایجاد کرد که برگردان تاریخ فارسی برای شروع و پایان هر ردیف باشه، اما مشکلی که این کد داره اینه که از تاریخ 1400به بعد به مشکل میخوره و تاریخ رو عدد 100نشون میده، چون سال رو دو رقمی گرفته بودن… مشکلاتی مثل بهم ریختن تاریخ 1399 و 1400 به بعد در MS Project، نمایش دو صفر بجای 1400 در MS Project و…

با یه تغییر کوچیک این مشکل رو حل کردم و در اختیار بقیه میذارم.

پروژه خود را باز کنید و در Tabهای بالا، روی تب Project کلیک کرده و از گزینه های پایین، روی Custom Fields کلیک کنید.

 

در صفحه باز شده روی یکی از فیلدهای متنی، مثلا Text1 انتخاب کرده و سپس روی دکمه Formula… کلیک کنید.

چنانچه که پیغامی نمایش داده شد، OK را انتخاب نمایید.

کد مربوط به تاریخ شروع را از صفحه گیت هاب من دانلود و محتوای آن را کپی و در این بخش قرار دهید:

پس از آن روی دکمه OK کلیک کرده و در پیغامی که نمایش داده میشود نیز دکمه OK را انتخاب نمایید.

شما در همین پنجره اگر روی همون فیلد انتخابیتون یکبار کلیک کنید، میتونید نام فیلد را عوض کنید و به دلخواه انتخاب کنید، مثلا:

HijriShamsi-StartDate

خب! همین مراحل را برای تاریخ پایان هم انجام بدهید. یعنی روی فیلد متنی مورد نظرتون کلیک کنید (مثلا Text2) و سپس روی دکمه Formula… کلیک کنید.

چنانچه که پیغامی نمایش داده شد، دکمه OK را انتخاب نمایید.

مجددا کد مربوط به تاریخ پایان را از صفحه گیت هاب من دانلود و محتوای آن را کپی و در این بخش قرار دهید:

پس از آن روی دکمه OK کلیک کرده و در پیغامی که نمایش داده میشود نیز دکمه OK را انتخاب نمایید.

چنانچه که دوست دارید، نام فیلد دوم هم به دلخواه تغییر بدهید.

نام فیلدی که اینجا انتخاب میکنید، در سرستون پروژه شما و در پرینت ها نمایش داده میشود، پس بهتر است نام مختصر و مفیدی انتخاب کنید…

در نهایت روی دکمه OK در همین پنجره کلیک نمایید.

پس از OK کردن پنجره Custom Fields، به صفحه اصلی پروژه خود برمیگردید. در این صفحه در بخش “گانت چارت” (که پیش فرض در سمت چپ نمایش داده میشود) ستون هایی نمایش داده شده است که میتوانید نسبت به نیاز آنها را Hide و یا مانند الان Add New Column نمایید. برای اینکار به آخرین ستون رفته و روی دکمه مثلثی شکل کلیک کنید، و در لیستی که نمایش داده میشود، فیلد خود را انتخاب نمایید. در مثال ما Text1 و Text2 خواهد بود.

همانگونه که در عکس مشخص شده است، هر دو ستون تاریخ شروع و تاریخ پایان بصورت هجری شمسی وارد شده است.

نکته اول اینکه همانطور که در عکس مشخص شده است، این کد هم با سالهای 1399 و قبلتر کار میکند (مانند کدی که قبلا دوست دیگری زحمتش را کشیده بودن)، و هم سالهای 1400 و 1410 و…

نکته دوم اینکه شما حتما باید تاریخ را به میلادی انتخاب نمایید تا تبدیل آن به هجری شمسی انجام شود.

خب! مشکل اول برطرف شد، اما بریم سراغ مشکل دوم!

مشکل دوم اینه که روزهای کاری تقویم پیش فرض روزهای یکشنبه بوده و طبعا تعطیلات هجری شمسی نیز لحاظ نشده است. اما نگران نباشید! در ادامه این مشکل هم برطرف خواهید کرد.

از تب Project، روی Change Working Time کلیک کنید.

در پنجره باز شده، روی Create New Calendar… کلیک کنید.

در پنجره بعدی برای تقویمتون یک اسم به انگلیسی یا فارسی انتخاب کنید و گزینه Create new base calendar را انتخاب و سپس روی OK کلیک کنید.

حالا تقویمی که ساختید را انتخاب کنید، از تب های پایین روی Work Weeks کلیک کرده، سپس [Default] را انتخاب و روی دکمه Details… کلیک کنید.

به این قسمت با دقت توجه کنید:

در این پنجره Details میبایست روی تک به تک روزهای هفته کلیک کنید و وضعیت آن را مشخص کنید.

بطور مثال: روز و ساعات کاری شرکتی بدین صورت میباشد:

  • شنبه الی چهارشنبه: 8 الی 15
  • پنجشنبه: 8 الی 12
  • جمعه: تعطیل

برای تعریف این روزها و ساعات:

  • روز Saturday الی Wednesday کلیک کرده، گزینه سوم را انتخاب کرده و ساعت 8 الی 15 را در کادر پایین وارد کنید (جدا جدا به ازای هرکدام)
  • روز Thursday را انتخاب کرده، گزینه سوم را انتخاب نموده و ساعت 8 الی 12 را وارد کنید
  • روز جمعه را انتخاب کرده، و روی گزینه دوم یعنی nonworking time را انتخاب کنید.

سپس روی OK کلیک کنید.

با توجه به مثال شما امکان تعریف انواع ساعات و روزهای کاری را خواهید داشت.

اگر مراحل را به درستی انجام داده باشید، با چنین تقویمی مواجه شوید که فقط روزهای تعطیلی که مشخصص کردید (در مثال ما روز جمعه فقط خاکستری شده باشد.)

از طریق یک تقویم مانند سایت http://time.ir تاریخ های تعطیلی را به میلادی پیدا کنید.در صفحه Change Working Time اینبار روی تب Exception کلیک کنید و در ستون های پایین آن نام روز تعطیلی را وارد کنید. در مثال 14 اردیبهشت انتخاب شده است. پس از آن روی دکمه Details کلیک کرده و در پنجره جدید در قسمت بالای آن Nonworking را انتخاب کرده و در قسمت پایینی تاریخ میلادی را انتخاب کنید. چون تعطیلی تنها یک روز میباشد عدد End after نیز 1 خواهد بود، بطور مثال برای وارد کردن تعطیلات عید نوروز که چند روز متوالی میباشد میتوانید تنها تاریخ شروع آن را به میلادی وارد کرده و تعداد روز تعطیلات را بعد از End after وارد کنید.

سپس روی OK کلیک کنید.

توجه فرمایید که باید هر تاریخ را زمانی که وارد میکنید همانموقع هم دکمه Details آن را بزنید که در ادامه با پیغام خطای احتمالی (به منظور تکراری بودن تاریخ) مواجه نشوید.

اگر مراحل را به درستی انجام داده باشید، با چنین تقویمی مواجه شوید که روزهای تعطیلی Exception بصورت آبی (و یا قرمز رنگ) خواهد بود.

خب! تقویم هم درست شد. حالا نوبت آن رسیده است که تقویم پروژه را به تقویم خودتان تغییر بدید.

برای این کار از تب Project روی Project Information کلیک کنید.

در این پنجره، از قسمت Calendar تقویم خودتان را انتخاب کنید و روی OK کلیک کنید.

همانطور که ملاحظه خواهید کرد، روزهای جمعه و روزهای تعطیل بعنوان روز کاری محاسبه نخواهد شد.

آپدیت 1400/06/30: برطرف کردن مشکل طول زمان پروژه

برخی از دوستان اطلاع دادن که Duration تسک و پروژه و همچنین تاریخ ها اشتباه میفته

به این نکان توجه کنید:

اول اینکه زمانیکه Working Time مشخص میکنید نسبت به زمان خودتون وارد کنید، من برای مثال گفتم از ساعت 8 صبح الی 3 بعد از ظهر، اما ممکنه یک شرکت یا یک پروژه ساعتش تا 5 بعد از ظهر باشه و…

نکته دوم اینکه طبق تصویر در صفحه Change Working Time روی Options بزنید، و در صفحه باز شده (Project Options – Schedule) سه بخش رو تغییر بدید:

1- تقویم پروژه رو به درستی انتخاب کنید

2- روزهای شروع هفته را روی Saturday تنظیم نمایید و ماه اول هم روی January

3- نسبت به ساعات کاری شرکت یا پروژه، ساعات کاری را تنظیم کنید و مشخص کنید در روز چند ساعت کاری وجود دارد، در هفته چند ساعت کاری وجود دارد، در ماه چند روزکاری وجود دارد

مثلا من برای شنبه الی چهارشنبه ساعت 8 صبح الی 5 بعد از ظهر، و پنجشنبه 8 صبح الی 1 بعد از ظهر، و جمعه ها تعطیل، 9 ساعت کاری در روز، 50 ساعت کاری در هفته و 26 روز کاری در ماه را تنظیم کرده ام.

این تغییر همچنین باعث میشه که Duration شما بصورت اعشاری در نیاد.

آپدیت 1400/11/18: برطرف کردن خلاصه تاریخ ها

یکی از عزیزان پیام دادند که ردیف های Summary تاریخ هجری شمسی نمیگیرند…

کلا در MS Project برای اینکه یک ستون شما، فرمول را در ردیف های Summary اعمال بکنه، میبایست اول Field مورد نظر را انتخاب کنید (که در اینجا فیلدهای تبدیل تاریخ شروع و پایان به هجری شمسی مورد نظرمان میباشد) و سپس از بخش Calculation for task and group summary rows، گزینه User formula (طبق تصویر) انتخاب نمایید.

آپدیت 1401/02/10: تاریخ پروژه

یکی از عزیزان تماس گرفتند و در خصوص تاریخ شروع و پایان پروژه سوال کردند که در Reportها و Informationهای پروژه مورد استفاده قرار میگیرند.

به همان ترتیب قبلی دو فیلد جدید بسازید و کدهای زیر را قرار بدید (تفاوتی زیادی هم ندارد، خودتان هم میتوانید تغییر بدهید)

سپس در جاهای مختلفی مانند Project Overview در قسمت Reportها، روی فیلد تاریخ پروژه کلیک کرده و تیک فیلد پیش فرض را برداشته و فیلد مورد نظر را در زیر شاخه Custom پیدا کنید و تیک بزنید.

 

آپدیت 1401/02/11: تاریخ فارسی در گانت

یکی از عزیزان کامنت گذاشتن در خصوص تاریخ هجری شمسی در گانت MS Project که در این بخش اضافه شد.

من تا الان این بخش را فارسی و هجری شمسی نکردم، اما راهکاری وجود دارد که میتواند نیاز شما را برطرف نماید.

وارد Gantt شوید و در فضای خالی کلیک راست نمایید.

از منو نمایش داده شده روی Show/Hide Bar Style رفته و گزینه Bar Styles را انتخاب کنید.


در پنجره باز شده به شما امکانی داده میشود که نوار یا متنی را به گانت ام اس پراجکت اضافه کنید.

خب! یکی از مواردی که میتوانید اضافه کنید همان فیلد تاریخ شروع و پایان می باشد.

برای این کار طبق عکس در پنجره Bar Styles در بخش پایین روی Tab مربوط به Text کلیک کنید (برای بزرگنمایی عکس روی عکس کلیک کنید). در این Tab برای شما بخش های مختلف Bar نمایش داده میشود که میتوانید به آن Field یا Resource اضافه کنید.


در مثال ما در سمت چپ، فیلد تاریخ شروع و در سمت راست، فیلد تاریخ پایان را انتخاب شده است.

نتیجه به این صورت خواهد بود که در کنار هر Bar از وظایف (Tasks) تاریخ شروع و پایانش را مشاهده خواهید کرد.

و اما نکته آخر، نکته ای که در خصوص تنظیم و تغییر فرمت Separator میباشد.

موضوع از این قرار است که در بعضی کدنویسی ها (مانند کدهای MS Project، اکسل و برخی نرم افزارهای CRM و حسابداری و… فارسی و کلا کدهایی که به نوعی عملیاتی روی طول متن/عددی انجام میدهد) از Separator استفاده میکنند که معمولا از کاراکترهای , و ; میباشد.

با توجه به اینکه در زبان فارسی این کارکترها به ، و ؛ تبدیل شده اند، ممکن است در برنامه های اکسل گزارش های بهم ریخته داشته باشید، برنامه فارسی شرکت شما به درستی کار نکند، و یا در آموزش اینجا، در وارد کردن کدهای شروع و پایان با پیغام خطا مواجه شوید.

اما نگران نباشید! طبق راهنمای تصویری زیر عمل کنید:

طبق تصویر برای تغییر Separator خود در هر ویندوزی (چه از طریق Settings و یا Control Panel) به پنجره Region وارد شوید. در تب Formats روی دکمه پایین به نام Additional settings کلیک کرده و در پنجره جدید در تب Numbers، رد بخش List separator، کاراکتر مورد نظر را انتخاب و یا تایپ کنید (به فارسی یا انگلیسی) سپس تمامی پنجره ها را OK کنید.

خب! امیدوارم این آموزش چندوجهی کارا بوده باشه. امتیاز، اشتراک گذاری و دنبال کردن در شبکه هایی که در انتهای صفحه هست فراموش نشه، طبعا به من انرژی خواهد داد، اگر سوالی داشتید هم بپرسید. موفق باشید./محمد، 22 اسفند 1399، آپدیت اول 6 اردیبهشت 1400

27 دیدگاه

  1. درود بیپایان بر شما و سپاس بیکران بابت کمک بی دریغ به افراد . مشکلی که دارم اینه که تاریخ کل ACTIVITY ها تبدیل شدن ولی هدر آنها تاریخش خالیه. یعنی اگه یه ردیف 5 تا فعالیت زیر مجموعه داره ، فقط عالیتهاش تاریخ دارن و خودش نداره . همینطور تا level های بالاتر

  2. جناب عبداللهي سلام، تاريخ Milestoneها فارسي نميشه. چکار بايد کرد؟

    1. سلام و عرض ادب
      چون متوجه نمیشم کدوم بخش رو میگید (ابتدا، انتها، عنوان یا…)
      برای همین لطفا واتزاپ یا تلگرام برام تصویرش رو بفرستید
      شماره ام توی سایت هست

  3. سلام. تاریخ فعالیت ها عوض میشه ولی تاریخ سر گروه ها نه

  4. سلام و خسته نباشید
    ممنون از توضیحات عالیتون
    ایا میشود تاریخ گانت چارت هم شمسی کرد؟

    1. سلام و درود
      خود گانت چارت رو من نتونستم هجری شمسی کنم
      اما امکان اینکه توش تاریخ هجری شمسی رو اضافه کرد هست که توی همین آموزش اضافه میکنم

  5. با عرض سلام و احترام
    اگر لطف کنید و کد مربوط به بیس لاین ها رو هم بگذارید خیلی ممنون می شم ، چون اینجوری فقط تاریخ شروع و پایان شمسی هست و اگر بخوان مقایسه ای بشه امکان نداره
    با تشکر

    1. سلام و درود
      در خصوص تغییر بیس لاین ها من اطلاعی ندارم و فکر میکنم فارسی سازهایی که در سورس کد برنامه تغییر داده باشند بتونن این کار رو انجام بدن

      ولی یک موضوع رو در نظر بگیرید
      در این روشی که گذاشتم، تاریخ میلادی عوض نمیشه بلکه فقط یک فیلد مترجم بهش اضافه میکنیم و شما بهرحال با تاریخ میلادی کار میکنید

  6. سلام وقت بخیر. با وارد کردن تاریخ میلادی, تاریخ شمسی نیز وارد میشود اما ناریخ شروع همه برنامه ها به میلادی یکسان نیست ولی در شمسی همه را یک تاریخ شروع میزند. باید چکار کنم؟

  7. سلام. تشکر از مطالب مفیدتون. آیا امکان اضافه کردن ساعت در کنار تاریخ فارسی وجود داره؟؟

    1. سلام و درود
      بصورت پیشفرض که نه
      چون خوده اون ستونی که به هجری شمسی تبدیل میشه فقط تاریخ داره
      فیلد زمان و ساعت جدا هست که اون نیازی به فاری شدن نداره چون همه جا یکسانه

  8. باسلام.چطور میشه در کدی کخ نوشتین تاریخ های روزهای تعطیل مثل جمعه غیر فعال بشن(روز جمعه هم به روزهای کاری اضافه بشود بطور مثال)

    1. سلام و درود
      کد رو در حقیقت من ننوشتم من فقط بروزش کردم و مشکلش رو برطرف کردم
      برای اون موردی که میفرمایید باید از جای دیگه ای این کارو بکنید که در آموزش هم گذاشتم
      اگه باز مشکلتون برطرف نشد بهم بگید

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *