Global Change در Primavera P6؛ دستیار خاموشِ برنامه‌ریز

اگر از MSP به P6 آمده باشید، اولین چیزی که کمتان می‌آید «پرکردن چند سلول به‌صورت گروهی» است. P6 همین‌جا یک سلاح دارد که کمتر کسی تا تهش می‌رود: Global Change (مسیر: Tools ← Global Change) — یک موتور If/Then/Else روی کل دیتابیسِ فعالیت‌ها که می‌تواند در چند ثانیه کاری را بکند که دستی چند روز وقت می‌برد. این پست پنج سناریوی واقعی از پروژه‌های صنعتی را با دقیق‌ترین جزئیات می‌نویسد، به‌علاوهٔ قواعد امنیتی که فایل شما را نجات می‌دهد.

منطق Global Change در ۳۰ ثانیه

هر Global Change سه بخش دارد:

قبل از اجرا، P6 دکمهٔ Change Preview دارد: سطرهای انتخاب‌شده را با مقدار «قبل و بعد» نشان می‌دهد. این پیش‌نمایش همان چیزی است که تفاوت بین یک برنامه‌ریز حرفه‌ای و یک کاربر خطرناک است — همیشه Preview را کامل بخوانید.

i
قاعدهٔ طلایی: قبل از هر Global Change یک Export XER بگیرید. Global Change «Undo» ندارد؛ Ctrl+Z کار نمی‌کند. XER همان حکم فایل بکاپ در بایگانی پروژه است.

سناریو ۱ — اصلاح گروهی مدت‌ها بر اساس ردهٔ فعالیت

موقعیت: برنامهٔ تفصیلی P6 می‌خواهد بازبینی شود و طبق دستورالعمل جدید، تمام فعالیت‌های ردهٔ قراردادکار باید سقف مدت ۱۵ روزه داشته باشند و بقیه ۳۰ روزه.

پیاده‌سازی:

  1. If: Activity Code «رده» = قراردادکار
  2. Then: Original Duration = 15d
  3. Else: Original Duration = 30d

همین. P6 مدت‌ها را بازنویسی می‌کند و schedule بعدی، تاریخ‌های تازه را می‌ریزد. نکتهٔ حرفه‌ای: اگر می‌خواهید فقط مدت‌های بزرگ‌تر از سقف اصلاح شود (نه کوتاه‌تر)، شرط را دوخطی کنید: If Activity Status = Not Started and Original Duration > 15d → Then 15d. این‌طوری برنامهٔ خودتان که زیر سقف است دست نمی‌خورد.

سناریو ۲ — تخصیص خودکار تقویم به فعالیت‌های مشکل‌دار

واردات از MSP یا Excel معمولاً تقویم‌ها را به‌هم می‌ریزد: چند فعالیت «۲۴ Hours» که باید شیفت‌بندی کارگاه باشند. سناریو:

  1. If: Activity Type = Task Dependent and Calendar = 24 Hours
  2. Then: Calendar = Shift 8h (تقویم سفارشی خودتان)

این سناریو را ذخیره کنید (Save As با نام «CalFix») — بعد از هر Import دوباره اجرایش کنید. Global Change ذخیره‌شده مثل یک اسکریپت همیشگی کار می‌کند و ریتم کاری «Import → پاک‌سازی → Schedule» را قابل تکرار نگه می‌دارد.

سناریو ۳ — Activity Code ترکیبی برای گزارش‌های چندلایه

کارفرما گزارشی می‌خواهد که هم بر اساس سیستم (سیویل/مکانیک/برق) و هم بر اساس منطقه (Zone A/B) باشد. دو Activity Code دارید ولی کد ترکیبی ندارید. Global Change می‌سازد:

  1. یک Activity Code جدید به نام «SysZone» تعریف کنید.
  2. Global Change: Then: SysZone = System & "-" & Zone

عملگر & رشته‌ها را می‌چسباند. حالا در Layoutها و Reportها یک بُعد مرتبهٔ بالاتر دارید. این ترفند در فایل‌های بزرگ (بیش از ۱۰هزار فعالیت) تفاوت زمین تا آسمان می‌سازد چون P6 گزارش‌گیری کدترکیبی را از خودش ندارد.

سناریو ۴ — خنثی‌سازی لَگ‌های قایم‌شده قبل از تحلیل تأخیر

وقتی برنامه برای تحلیل تأخیر یا بروزرسانی مصوبه می‌رود، لَگ‌های داخل رابط‌ها (SS + 7d) مدام نتیجه را می‌چرخانند. یک Global Change امن نمی‌تواند «لَگ» را صفر کند (لَگ فیلد مستقیمی در If/Then ندارد)، ولی می‌تواند نقش‌های مشابه را فاش کند: فیلدی به نام «Lag Ref» بسازید و دستی مقدار لَگ هر رابط را همان‌جا مستند کنید؛ بعد با Global Change مقدار «Lag Ref» را به‌عنوان یادداشت فعالیت (Notebook) بنویسید تا در گزارش‌ها دیده شود. مسیر حرفه‌ای‌تر: از خود Scheduler Options، مسیر Multiple Float Paths را فعال کنید تا وابستگی‌های پشت انحراف‌ها را ببینید.

سناریو ۵ — محاسبهٔ Remaining Duration از درصد پیشرفت واقعی

وضعیت رایج: کارگاه درصد پیشرفت فیزیکی را گزارش کرده (مثلاً ۴۰٪) ولی Remaining Duration را پر نکرده. با فرمول‌دار کردن یک فیلد عددی و Global Change می‌شود هم‌خوانی ساخت — وگرنه P6 با درصد و مدت ناسازگار، مبنای EVM را خراب می‌کند:

If: Physical % Complete > 0 and Remaining Duration != 0
Then: Remaining Duration = Original Duration * (1 - Physical % Complete / 100)

پس از اجرا، مقایسه کنید: ستون‌های Remaining Duration و Physical % باید با هم بخوانند. این هم‌خوانی شرط لازم برای داشبورد EVM است — همان چیزی که در داشبورد EVM سایت و پست داشبورد Power BI روی دادهٔ P6 سراغش را گرفته‌ایم.

Global Change در برابر راه‌های دیگر — جدول تصمیم

وقتی قانون «تکرارشونده» دارید: تخصیص تقویم، کدترکیبی، هم‌خوان‌سازی درصد/مدت، اصلاح گروهی مدت بر اساس رده. هر چیزی که بتوان گفت «همهٔ سطرهایی که فلان شرط را دارند، فلان فیلدشان برابر فلان چیز شود».

وقتی تغییر «برای هر سطر متفاوت» است (مثلاً ۳۰۰ مقدار دستی جدید) — آن‌جا جدول‌بندی Excel و Import بهتر است. وقتی ساختار WBS را می‌خواهید جابجا کنید یا رابط‌ها را بازطراحی کنید — این‌ها ابزار دیگری می‌خواهند. و وقتی پروژه دیتابیس اشتراکی دارد و در ساعت کاری هستید: تغییر گروهی روی دیتابیس زنده، با هماهنگی مدیر دیتابیس.

Filter + Edit گروهی برای تغییر سادهٔ یک‌فیلدی؛ Fill Down در Layoutها؛ Import Excel/XER برای داده‌های جدولی بزرگ؛ و Claim Digger برای مقایسهٔ دو Rev (نه تغییر گروهی، ولی مکمل جلسهٔ بازبینی است).

جمع‌بندی — چک‌لیست امن اجرا

Global Change را مثل یک ابزار جراحی ببینید: چک‌لیستِ پنج‌مرحله‌ای من بعد از چند سال استفاده:

  1. XER بکاپ بگیر (بدون استثنا).
  2. Change Preview را کامل بخوان — تعداد سطرها باید با حدست بخواند؛ اگر نه، شرط را باریک‌تر کن.
  3. اول روی کپی پروژه یا Layout بی‌خطر تست کن، بعد دیتابیس اصلی.
  4. پس از اجرا، Schedule بگیر و سه ستون را مقایسه کن: Critical، Total Float، Data Date.
  5. هر Global Change تکراری را Save As کن با نام معنادار — این همان اتوماسیون ارزان شماست.

و اگر تازه از MSP آمده‌اید، ترفندهای مشابه MSP را در هفت ترفند MS Project و مبنای پیشرفت وزنی را در محاسبهٔ ضریب وزن (W.F) بخوانید.

سوالات متداول

بله؛ در بخش Advanced می‌توانید به تخصیص منابع (Resource Assignment) دست بزنید — مثلاً Budgeted Units را بر اساس مدت بازمحاسبه کنید. ولی حواستان باشد که واحدها با نرخ‌ها و Bucket Planning درگیرند؛ تغییر گروهی واحدها راحت‌تر از هر چیز دیگری EVM پروژه را به‌هم می‌ریزد.
خیر. P6 برای Global Change تاریخچه/Undo ندارد. تنها راه برگشت، Import همان XER بکاپ یا بازگردانی دیتابیس است. به همین دلیل Preview و بکاپ اجباری‌اند، نه پیشنهاد.
سه علت رایج: (۱) فیلتر Layout فعلی سطرها را پنهان کرده — Global Change روی دادهٔ پنهان هم ممکن است اجرا شود یا نشود بسته به تنظیم؛ (۲) سطرهای Selected در حالت «Selected activities» بسته شده؛ (۳) فیلد مقصد در آن Activity Type قابل ویرایش نیست (مثلاً Milestoneها مدت صفر دارند). پیام خطای پایین پنجره را بخوانید؛ P6 معمولاً دقیق می‌گوید کدام سطرها skip شدند.
بله، Global Change در EPPM هم هست ولی رابط کمی فرق دارد (از منوی Activities، بخش Tools). منطق If/Then/Else و Preview یکسان است؛ فقط دسترسی کاربر می‌تواند توسط Admin محدود شده باشد.
← همه‌ی نوشته‌ها RSS