ما هي الواجهة في دلفي. توصيات لإنشاء واجهات المستخدم في دلفي. نعم أو لا

06.03.2022

الخلق واجهةيتم تقليل المستخدم إلى الاختيار من لوحة المكونات مكونات دلفي اللازمة لتشغيل البرنامج وتقديمه واجهةالإدارة، وكذلك واجهةعرض المعلومات، ونقلها إلى النموذج مع التخطيط اللاحق.

يجب أن تستخدم واجهة المستخدم التي تقوم بإنشائها عناصر قياسية مألوفة للمستخدمين وتوفر أقصى قدر من الراحة. يتم تحديد كل هذا في النهاية من خلال معيار مثل فعالية الواجهة - أقصى النتائج بأقل جهد.
مبادئ إنشاء واجهة سهلة الاستخدام معروفة. كأكثر المبادئ العامةعند الإنشاء واجهات المستخدمويمكن النظر في ثلاث نقاط رئيسية:

  1. يجب أن يساعد البرنامج في إكمال المهمة، ولا يصبح تلك المهمة.
  2. عند العمل مع البرنامج، يجب ألا يشعر المستخدم بأنه أحمق.
  3. يجب أن يعمل البرنامج بطريقة لا يعتبرها المستخدم أحمق.
المبدأ الأول- هذا هو ما يسمى بـ "شفافية" الواجهة. يجب أن تكون واجهة المستخدم بديهية وسهلة التعلم ولا تخلق مشاكل للمستخدم والتي سيتعين عليه التغلب عليها أثناء عملية العمل. استخدم المكونات القياسية دون زخرفة غير ضرورية، واستخدم تقنيات التحكم المألوفة التي تستخدمها برامج مماثلة، وسوف تحقق معايير الأداء المبدأ الأول.

المبدأ الثانيهو إهمال القدرات الفكرية للمستخدمين. من تجربتي الخاصة، أعلم أن المستخدمين في كثير من الأحيان لا يعرفون كيفية العمل على جهاز كمبيوتر فحسب، بل يخشون ببساطة القيام بأي شيء بمفردهم. ولذلك، يجب أن تكون واجهة المستخدم ودية قدر الإمكان.
علاوة على ذلك، فإن مخاوف المستخدمين غالبا ما تكون مبررة، لأن تكلفة البرنامج، وحتى الكمبيوتر نفسه، لا يمكن مقارنتها بتكلفة قاعدة بيانات تم إنشاؤها على مدى سنوات عديدة من الجهد، على سبيل المثال. ولهذا السبب، عند إنشاء واجهة مستخدم، يجب على المبرمج دائمًا إنشاء "حماية مضمونة" في البرنامج - ضد الإجراءات غير الصحيحة وإدخال المستخدم للبيانات غير الصحيحة. لكن بعض المبرمجين يبالغون في هذه الحماية، ويجعلونها تطفلية للغاية، ونتيجة لذلك فإن عمل البرنامج يشبه العبارة الشهيرة "خطوة إلى اليسار، خطوة إلى اليمين تعتبر هروبًا"! وما يخلقه المبرمج كحل لمشكلة يبدأ في خلق المشاكل بنفسه.
للامتثال المبدأ الثانيليست هناك حاجة للسماح للبرنامج "بتصحيح" تصرفات المستخدم والإشارة بالضبط إلى الطريقة التي يجب أن يتصرف بها، مما يجبره على الانخراط في إطار ضيق. كما يجب ألا تبالغ في عرض الرسائل الإعلامية، خاصة رسائل الحوار، لأن ذلك يشتت انتباه المستخدم عن العمل. سيكون من الأفضل توفير القدرة على تعطيل التلميحات تمامًا.

المبدأ الثالثهو إنشاء برنامج يتمتع بأعلى القدرات "العقلية" الممكنة. بالرغم من التطور السريعتكنولوجيا الكمبيوتر، حتى البرامج المستخدمة على نطاق واسع لا يمكن أن يطلق عليها إلا بشكل مشروط وجود ذكاء اصطناعي. أنها تتداخل مع تجربة المستخدم من خلال العرض مربعات الحواربأسئلة غبية تسبب الحيرة حتى في أبسط المواقف. ونتيجة لذلك، يهتف المستخدمون في قلوبهم: "يا لها من آلة غبية!"
أنا شخصيا منزعج من الأسئلة المستمرة من الجميع تقريبا محرري النصوصحول ما إذا كان سيتم حفظ النص الذي تم تغييره، على الرغم من أن النص الأصلي والحالي لا يختلفان في أي رمز. نعم، لقد كتبت شيئا ما، ولكن بعد ذلك أعدت كل شيء مرة أخرى، هل من المستحيل حقا معرفة ذلك! يجب أن أتحقق مما إذا كنت لم أفسد أي شيء بعد كل شيء.

حاول الالتزام بالقواعد التالية:

عناصر الواجهة القياسية
استخدم تلك القياسية ل من هذا العنصرمكونات الواجهة. بعد أن واجه المستخدم برنامجك، لن يضيع الوقت في التعرف على بعضه البعض، ولكنه سيبدأ العمل على الفور - وهذه إحدى علامات البرنامج الاحترافي.
لوحة صغيرة من الأدوات
حاول ألا تستخدم الكثير عدد كبيرمكونات مختلفة. وبطبيعة الحال، بعد استخدام مكون قياسي واحد في مكان ما في مكان واحد، في حالة مماثلة، استخدمه أيضًا.
التباعد المتساوي بين عناصر التحكم
ضع عناصر الواجهة على نفس المسافة من بعضها البعض. المكونات المتناثرة بشكل عشوائي تخلق شعوراً بمنتج مصنوع بطريقة غير احترافية. والعكس صحيح، فإن وضع الأزرار والمفاتيح وخانات الاختيار والمكونات الأخرى التي تشكل الواجهة في النموذج، والذي تم التحقق منه بعناية، يعد علامة على العمل عالي الجودة.
ترتيب الجدولة. الترتيب "الصحيح".
ترتيب الجدولةهو الترتيب الذي يتحرك به مؤشر الشاشة عبر عناصر التحكم عند الضغط على المفتاح فاتورة غير مدفوعة. في البرنامج المكتوب بشكل صحيح، يتحرك المؤشر وفقًا لمنطق عمل المستخدم مع البرنامج. عند إنشاء برنامج، يقوم المبرمج غالبًا بتغيير المكونات وإزالة بعضها وإضافة أخرى حسب الحاجة. ونتيجة لذلك، في البرنامج النهائي، يقفز المؤشر بشكل عشوائي حول النموذج. بعد الانتهاء من البرنامج، لا تنسى تكوينه ترتيب الجدولة.
اختيار الخط
فقط اترك الخطوط وشأنها. خطوط دلفي الافتراضية مناسبة لأي نظام يمكن تشغيل برنامجك عليه. استخدم الخط الغامق فقط لتسليط الضوء على العناصر المهمة. طلب مائلوخاصة التسطير، والذي قد يخطئ المستخدم في اعتباره ارتباطًا تشعبيًا يعد نموذجًا سيئًا.
اختيار الألوان
أما بالنسبة لألوان عناصر الواجهة، كما هو الحال في الخطوط، فمن الأفضل تركها قياسية بشكل افتراضي. تستخدم دلفي لوحة نظام Windows، ويمكن للمستخدم بسهولة تخصيص الألوان عن طريق تغييرها.
الإدارة البديلة
يجب أن يكون من الممكن التحكم في البرنامج المصمم بشكل احترافي ليس فقط باستخدام الماوس، ولكن أيضًا باستخدام لوحة المفاتيح. يجب ألا تكون هناك وظائف لا يمكن تنفيذها إلا باستخدام الماوس (الرسم باستخدام محرري الرسوم البيانيةلا يحسب!). بالنسبة للوظائف الأكثر استخدامًا، يجب عليك توفير "مفاتيح التشغيل السريع" للوصول السريع.
واجهة الطوب
أما بالنسبة لعناصر محددة في واجهة المستخدم فإن جودة تفاعل المستخدم مع البرنامج تعتمد على:
  • امتثال عنصر التحكم للمهمة التي يؤديها؛
  • القواعد التي يعمل بها عنصر التحكم.
    تناقش هذه الصفحة قواعد إنشاء بعض عناصر الواجهة.
والآن أريد أن أعرض الأدوات التي تقدمها دلفي لإدارة المكونات في النموذج الموقف النسبيوسلوك المؤشر عند الضغط على المفتاح فاتورة غير مدفوعة.

لترتيب المكونات بالنسبة لبعضها البعض بالترتيب الصحيح أولا فمن الضروري تسليط الضوء عليها. يمكنك ببساطة وضع دائرة حول المنطقة الموجودة في النموذج الذي يحتوي على المكونات المحددة. أو بالضغط على " يحول"، استخدم نفس الماوس للإشارة إلى كل مكون سيتم تحديده. انقر بالماوس مرة أخرى على المكون المحدد (أثناء الضغط على " يحول") يلغي تحديده.

يمكن إدارة المكونات المحددة ككل - نقلها حول النموذج، وتعيين قيم لنفس الخصائص، ونسخها (للتثبيت، على سبيل المثال، في نموذج آخر)، وحتى حذفها.

الآن انقر بزر الماوس الأيمن على أحد المكونات واختر من القائمة المنبثقة الموضع -> محاذاة...سيظهر مربع حوار يسمح لك بضبط الوضع الأفقي والرأسي للمكونات في المجموعة. على سبيل المثال، نحتاج إلى محاذاة الأزرار الأربعة إلى اليسار والتأكد من وجود مسافة رأسية متساوية بينها. للقيام بذلك، حدد أزرار الاختيار أفقي: الجوانب اليسرىو عمودي: الفضاء على قدم المساواة.

عن طريق اختيار العنصر مركز، سنقوم بترتيب المكونات بحيث تقع مراكزها على نفس الخط أفقيا أو رأسيا، والعنصر المركز في النافذةينقل المكونات إلى منتصف النافذة، أفقيًا أو رأسيًا أيضًا.

في نفس سطر القائمة فاتورة غير مدفوعة ياردر...يؤدي إلى ظهور مربع حوار يتحكم في كيفية تحرك المؤشر عبر عناصر الواجهة عند الضغط على المفتاح فاتورة غير مدفوعة. عندما يظهر النموذج على الشاشة، سيكون المؤشر بطبيعة الحال على المكون الموجود في السطر الأول من مربع الحوار. وبعد ذلك سوف ينتقل إلى أسفل القائمة. في مربع الحوار، يتحكم سهمان باللون الأزرق لأعلى ولأسفل في موضع المكون المحدد. حدد المكون المطلوب، واستخدم الأسهم لنقله إلى السطر المطلوب في القائمة، وهكذا.

عند اختيار عنصر القائمة التحكم ->تظهر قائمة فرعية تتكون من عنصرين:

  • إحضار إلى الأمام
  • إرسال إلى الخلف
هذه هي أساليب المكونات المتوفرة برمجياً أيضاً. Button1.SendToBackينقل الزر إلى "الخلفية" و Button1.BringToFront- إلى "المقدمة". أي أنه إذا كان أحد المكونات موجودًا فوق الآخر، فإن هذه الطرق تقوم بتبديل أماكنها. الحالات التي قد ينطبق عليها هذا واضحة جدًا.

لدي مشكلة في استخدام فئة دلفي من كود C++. عرض دلفي دلل، الذي يصدر دالة تقوم بإرجاع كائن.
يبدو كود Delphi Dll الخاص بي كما يلي:

اختبار مكتبة دلفي؛ // يستخدم جزءًا.... اكتب IMyObject = إجراء الواجهة DoThis(n: Integer); وظيفة DoThat: PWideChar؛ نهاية؛ TMyObject = class(TInterfacedObject,IMyObject) الإجراء DoThis(n: Integer); وظيفة DoThat: PChar؛ نهاية؛ // تنفيذ TMyObject انتقل هنا ... الإجراء TMyObject.DoThis(n: Integer); begin showmessage("أنت تتصل بطريقة DoThis باستخدام "+intToStr(n) +"parameter"); نهاية؛ وظيفة TMyObject.DoThat: PChar؛ ابدأ showmessage("أنت تتصل بوظيفة DoThat"); النتيجة:= Pchar("Hello im Dothat"); نهاية؛

// تصدير وظيفة DLL:

وظيفة CreateMyObject: IMyObject؛ تصدير. فار النص: ملف نصي؛ begin AssignFile(txt,"C:\log.log"); إعادة تعيين(تكست); Writeln(txt,"hello"); النتيجة:= TMyObject.Create; نهاية؛ تصدير CreateMyObject؛

في مشروع C++ الخاص بي، أعلنت عن واجهة IMyObject مثل هذا:

Class IMyObject ( public: IMyObject(); virtual ~IMyObject(); virtual void DoThis(int n) = 0; virtual char* DoThat() = 0; );

ومهمتي الرئيسية هي مثل هذا:

Typedef IMyObject* (__stdcall *CreateFn)(); int main() ( HMODULE hLib; hLib = LoadLibrary(L"DelphiTest.dll"); تأكيد(hLib != NULL); // تمرير !! CreateFn pfnCreate; pfnCreate = (CreateFn)GetProcAddress((HINSTANCE)hLib, "CreateMyObject "); if (pfnCreate == NULL) ( DWORD errc = GetLastError(); printf("%u\n", errc); // يحصل على الخطأ 127 ) else( printf("success Load\n"); ) IMyObject* objptr = pfnCreate(); objptr->DoThis(5);

في هذا المثال، حصلت على خطأ أثناء التشغيل عندما أحاول الوصول إلى الوظيفة المُصدَّرة. أخطاء في السطر:
IMyObject* objptr = pfnCreate();

هل يمكن أن تخبرني ما هو الخطأ في المثال الخاص بي.
وإذا أمكن، أي مثال عملي للوصول إلى فئة دلفي (في ملف DLL) من كود C++.

حل

المشكلة الأولى هي استدعاء اصطلاح الطريقة. تستخدم واجهة دلفي التسجيل وهو عبارة عن اتفاقية اتصال خاصة بدلفي. استخدام stdcall على سبيل المثال، لطرق الواجهة.

المشكلة التالية هي في C++. يجب أن تكون واجهة C++ الخاصة بك مشتقة من IUnknown، بالإضافة إلى ذلك، يجب ألا تعلن عن منشئ أو مدمر.

وبصرف النظر عن هذا، يتم تصدير كود دلفي الخاص بك عن طريق PWideChar الذي لم يتم تعيينه إلى char* ولكن تم تعيينه إلى wchar_t* .

إذا نظرنا إلى أبعد من ذلك، فإن إرجاع PChar يعمل بشكل جيد هنا لأن تنفيذك يُرجع قيمة حرفية. ولكن من المحتمل أن ترغب التعليمات البرمجية الأكثر جدية في استخدام سلسلة مخصصة ديناميكيًا، وعند هذه النقطة يكون تصميمك معيبًا.

يرجى ملاحظة أنه لإنشاء ملف في الجذر قرص النظاميجب أن تكون مسؤولاً يتمتع بحقوق مرتفعة. لذا فهذه نقطة فشل محتملة أخرى.

أتوقع أن يكون هناك أخطاء أخرى، ولكن هذا هو كل ما وجدته حتى الآن.

تمت كتابة المقال بناءً على نتائج تحليلات البرامج التي كتبها المطورون الشباب في مجموعتنا.

نقوم بترتيب تسلسل تبديل المكونات بشكل صحيح

لدى العديد من المستخدمين، وخاصة أولئك الذين عملوا سابقا في DOS، عادة التبديل بين حقول الإدخال ليس باستخدام الماوس، ولكن باستخدام لوحة المفاتيح مع مفتاح Tab. بالإضافة إلى ذلك، فهو أسرع بكثير من تحديد كل حقل باستخدام الماوس. لذلك، يجب ضبط ترتيب تبديل المكونات بشكل صحيح. ينطبق هذا على المكونات الموجودة داخل جميع مكونات الحاوية (اللوحات وGroupBoxes وما شابه ذلك)، وعلى مكونات الحاوية نفسها، إذا كان هناك العديد منها في النموذج.

يتم تحديد ترتيب تبديل المكونات داخل الحاوية بواسطة خاصية TabOrder. المكون الأول الذي يصبح نشطًا هو المكون الذي يساوي TabOrder 0، والثاني الذي يساوي 1، وما إلى ذلك، حتى يتم تعداد جميع المكونات. بالإضافة إلى ذلك، يحتوي المكون على خاصية TabStop، والتي تشير إلى ما إذا كان المكون سيتلقى التركيز عند التبديل باستخدام مفتاح Tab. إذا كنت بحاجة إلى حظر التبديل إلى أي مكون، فاضبط TabStop الخاص به = false. في هذه الحالة، يمكنك فقط التبديل إلى هذا المكون باستخدام الماوس.

هناك حالات عندما يستمر المستخدمون الذين اعتادوا على التبديل بمفتاح معين في برنامج ما، في العادة، في استخدامه في برامج أخرى. يحدث هذا غالبًا مع مستخدمي 1C، حيث يمكن استخدام مفتاح Enter للتنقل عبر حقول الإدخال. حسنًا، سنمنحهم مثل هذه الفرصة في برامجنا إذا طلبوا ذلك. قم بتعيين خاصية KeyPreview الخاصة بالنموذج إلى true واكتب معالج الأحداث OnKeyPress:

الإجراء TForm1.FormKeyPress(Sender: TObject; var Key: Char);
يبدأ
إذا ord(key)=vk_Return إذن
Form1.SelectNext(PriemForm.ActiveControl, true, true);
نهاية؛

يوفر هذا المعالج إمكانية التنقل عبر عناصر النموذج عند الضغط على مفتاح Enter. تجدر الإشارة إلى أن هذه الطريقة لن تعمل مع الأزرار، لأن... يؤدي الضغط على زر Enter إلى النقر فوقه، بينما يؤدي الضغط على Tab إلى التركيز على الإدخال للمكون التالي في تسلسل التبديل.

الأزرار الافتراضية

يعتاد جميع المستخدمين أنفسهم بسرعة على حقيقة أنه في مربعات حوار التطبيق، كقاعدة عامة، يمكنك تأكيد اختيارك باستخدام مفتاح Enter، والإلغاء باستخدام مفتاح Esc. دعونا لا نخيب آمالهم في برامجنا، خاصة أنه من السهل جدًا القيام بها. بالنسبة للزر الذي يستجيب لـ Enter، قم بتعيين الخاصية الافتراضية إلى true. بالنسبة للزر الذي يستجيب لـ Esc، قم بتعيين الخاصية Cancel إلى true. هذا كل شيء.

نعم أو لا

يجب أن تكون جميع مربعات الحوار التي تطالب المستخدم باتخاذ إجراء موجودة على الأقل، زرين: تأكيد الإجراء ورفض الإجراء (نعم/لا، حفظ/إلغاء، وما إلى ذلك). يمكن إلغاء الإجراء عن طريق إغلاق النافذة باستخدام الزر [X] الموجود في عنوان النافذة. من غير المقبول إذا كان هناك زر واحد فقط لتأكيد الإجراء، وللرفض يفترض إغلاق النافذة بالزر [X] في العنوان، أو لا توجد إمكانية للرفض على الإطلاق. وهذا يربك المستخدم ويثير سؤالاً منطقياً: كيف ترفض؟

ولا تنس أيضًا ما قيل أعلاه في فقرة "الأزرار الافتراضية".

يجب أن تفتح كافة مربعات الحوار في وسط الشاشة

في المنتصف، وليس في المكان الذي تم إنشاؤه فيه في وضع التصميم. أولاً، إنه أكثر وضوحًا، وثانيًا، فهو يزيل تلقائيًا مشكلة دقة الشاشة المختلفة لمستخدمين مختلفين.

يتم إجراء استثناء إذا كان مربع الحوار غير مشروط، ونتيجة لعمل المستخدم في هذه النافذة، تحدث التغييرات على الفور في النافذة الرئيسية (على سبيل المثال، تصفية مجموعة البيانات، وإعادة رسم الرسوم البيانية، وما إلى ذلك).

يجب ألا تتجاوز أحجام النوافذ حجم الشاشة

مستحيل. إنه عار عندما يمتد جزء من النافذة إلى ما وراء الشاشة. لا يعتمد هذا المتطلب على دقة شاشة المستخدم، أي. أعذار مثل "دعهم يضبطون دقة أعلى" لا تجدي نفعًا.

تغيير الحجم الصحيح لعناصر النافذة

يجب تغيير حجم عناصر النافذة أو تحريكها بشكل صحيح عند تغيير حجم النافذة، وعند تكبير النافذة، وعند استعادة النافذة بعد التكبير.

كل شيء مرئي دائما

لا ينبغي أن يؤدي تقليل حجم النافذة إلى اختفاء عناصر النافذة، ويفضل ألا يؤدي إلى ظهور أشرطة التمرير (شريط التمرير) للنافذة نفسها. يمكنك تحديد الحد الأدنى لأحجام النوافذ بحيث تكون جميع العناصر مرئية ويمكن الوصول إليها. إذا لم يكن من الممكن وضع المكونات بحيث تكون جميعها مرئية في النافذة، فيمكنك استخدام الإشارات المرجعية (مثل PageControl) لتقسيم المكونات إلى مجموعات. كما أننا لا نتجاهل الأعذار المتعلقة بدقة الشاشة.

تلميحات في كل مكان، تلميحات دائما

بالنسبة للأزرار، خاصة على أشرطة الأدوات (مثل شريط الأدوات)، يجب تحديد التلميحات بحيث يكون من الواضح دائمًا سبب الحاجة إلى هذا الزر أو ذاك.

نطاق الألوان

لا يجب أن ترسم المكونات الموجودة في النموذج بجميع ألوان قوس قزح. وهذا يتعب العين ويشتت انتباه المستخدم. لا يبدو "رائعاً". يتم استخدام التمييز عندما يكون من الضروري لفت انتباه المستخدم إلى عنصر معين أو جزء معين من النافذة. على سبيل المثال، سجلات الألوان التي تحتوي على أخطاء باللون الأحمر الفاتح، أو على العكس من ذلك، تسجيل السجلات التي تم فحصها بنجاح باللون الأخضر الفاتح.

خاتمة

هناك طريقة جيدة جدًا تتيح لك العثور على العيوب في البرنامج بشكل عام والواجهة بشكل خاص. الأمر بسيط: تخيل نفسك مكان المستخدم وحاول لمدة نصف ساعة العمل بالطريقة التي يعمل بها. ومن الأفضل أن يكون المستخدم ضمن النطاق (على سبيل المثال، يعمل في نفس المؤسسة). وفي هذه الحالة اجلس بجانبه، أو الأفضل بدلاً منه، وحاول القيام بعمله. إدخال البيانات وتغييرها وعرض التقارير وما إلى ذلك. إذا كنت لا تعرف كيفية القيام بذلك بشكل صحيح، اسأل المستخدم الخاص بك. لا تقم فقط بإجراء عملية واحدة أو عمليتين من نفس النوع، كما هو الحال في وضع تصحيح الأخطاء، ولكن 20-30، أو حتى أكثر من عمليات مختلفة، بترتيبات مختلفة. ننسى إدخال شيء ما أو إدخاله بشكل غير صحيح وانظر كيف يتفاعل البرنامج معه. سترى بسرعة نقاط الضعف في برنامجك.

كاتب المقال أتمت عمل لجنة القبول في الجامعة، وفي السنة الأولى من طرح البرنامج كان يقضي 3-4 ساعات يوميا في لجنة القبول، يسجل المتقدمين ويملأ بياناتهم الشخصية ويصدرها تقارير عن اجتياز الامتحانات. وفي ساعات العمل المتبقية قام بتصحيح الأخطاء والنواقص. صدقوني، في العام المقبل لن يكون هناك أي مشاكل عمليا. حدث الشيء نفسه عند تقديم وحدة شؤون الموظفين.

وبالتالي، ضع تجربة المستخدم في الاعتبار. اجعل من السهل والممتع بالنسبة لهم العمل مع برامجك.

هذه مقالة مبنية على أسئلة في المنتديات: "كيف يمكنني إرجاع سلسلة من ملف DLL؟"، "كيفية تمرير وإرجاع مجموعة من السجلات؟"، "كيفية تمرير نموذج إلى ملف DLL؟".

وحتى لا تقضي نصف حياتك في اكتشاف ذلك، في هذه المقالة سأقدم لك كل شيء على طبق من ذهب.

لقد تم التطرق لمواضيع هذه المقالة أكثر من مرة في هذه المدونة بدرجات متفاوتة، إلا أنها في هذه المقالة مجمعة ومبررة. باختصار، يمكنك إرسال رابط لهذه المقالة إلى أولئك الذين يقومون بتطوير ملفات DLL.

ملاحظة هامة: يجب قراءة المقال بالتتابع. يتم توفير أمثلة التعليمات البرمجية فقط كـ أمثلة، في كل خطوة (نقطة) من المقالة، يتم إضافة كود المثال بتفاصيل جديدة. على سبيل المثال، في بداية المقالة لا توجد معالجة للأخطاء؛ تمت الإشارة إلى الطرق "الكلاسيكية" (مثل استخدام GetLastError، واتفاقية sdtcall، وما إلى ذلك)، والتي يتم استبدالها بطرق أكثر ملاءمة مع تقدم المقالة. وقد تم ذلك حتى لا تثير التصاميم "الجديدة" ("غير العادية") تساؤلات. بخلاف ذلك، سيكون من الضروري إدراج ملاحظة لكل مثال مثل: "هذا ما تمت مناقشته في تلك الفقرة أدناه، وهذا ما تمت مناقشته في هذه الفقرة". على أية حال، يوجد في نهاية المقالة رابط للكود الجاهز، مكتوب مع مراعاة كل ما ورد في المقالة. يمكنك فقط أخذها واستخدامها. ويشرح المقال لماذا ولماذا. إذا لم تكن مهتماً بـ "لماذا ولماذا"، انتقل إلى النهاية إلى الخاتمة والرابط لتحميل المثال.

فقط من أجل النتيجة

الالتزام الصارم بالمواعيد النهائية

الشفافية

تنفيذ المشروع

الدعم الفني كهدية

البرمجة والتعديلات والمشاورات بشأن 1C

كيف نعمل

1. نناقش المشكلة عبر الهاتف. رهناً بالتوافر الوصول عن بعد- اعرض على شاشة جهاز الكمبيوتر الخاص بك.

2. نقدر العمل بالروبل إذا كان المشروع كبيرًا، وإذا لم يكن كذلك، فالعدد التقريبي للساعات.

3. ننجز المهمة.

4. تقبل العمل في برنامجك، وإذا كان هناك أي قصور، فإننا نقوم بتصحيحه.

5. نحن نصدر فاتورة، أنت تدفع.

تكلفة العمل

1. يتم تقسيم جميع الأعمال إلى 3 فئات: الاستشارة، وتحديث التكوين القياسي، وتطوير أو برمجة تقرير جديد، والمعالجة، والأزرار، وما إلى ذلك.

3. يجب تحضير العمل الذي يزيد عن 10 ساعات مسبقًا. الاختصاصاتمع الوصف وتكلفة العمل. يبدأ العمل بعد الاتفاق على المواصفات الفنية معك.

الدعم الفني

1. إذا وجدت أي أخطاء في الأعمال المقبولة مسبقاً خلال 3 أشهر، نقوم بتصحيحها مجاناً.

2. للعملاء العادييننقوم بتصحيح أي قصور في عملنا مجاناً خلال عام.

برنامج لإدارة عملك.

شراء 1C: المؤسسة

نحن الوكيل الرسمي لشركة 1C، ويمكنك شراء العديد من المنتجات منتجات البرمجياتوالتراخيص. بالإضافة إلى شراء "الصندوق"، سنساعدك في إعداد البرنامج وتقديم النصائح وإجراء الإعدادات الأساسية.

  • محاسبة
  • أتمتة المتجر
  • مبيعات الجملة
  • يتم تضمين التثبيت والمساعدة في الإعداد الأولي في الحزمة!
  • ضبط التكوينات لتناسب احتياجات العملاء، وتطوير وحدات جديدة في حالة عدم وجود الوظائف الضرورية في التكوين القياسي.
1ج: المحاسبة 1ج: إدارة التجارة 1ج: البيع بالتجزئة 1ج: إدارة الرواتب وشؤون الموظفين
من 3300 فرك. من 6700 فرك. من 3300 فرك. من 7400 فرك.

توفير الخادم.

الإعداد الفوري للخادم + 1C.

لا يوجد خادم؟ لا توجد مشكلة، سوف نقوم باختيار خادم في السحابة وإعداده بسرعة. مقابل رسوم رمزية تحصل على حل موثوق للغاية.

  • التوفر 24\7
  • لا حاجة للاحتفاظ بنفسك مسؤول النظام(ستغطي المدخرات تكاليف الخادم الخاص بك).
  • الإعداد السريع وتثبيت 1C على الخادم، في 3 أيام سيكون لديك بالفعل نظام يعمل بكامل طاقته.
  • يمكنك الانتقال إلى الخادم المحلي، إذا كان الحل غير مرضي.

الرسائل القصيرة من 1C الخاص بك

هل تريد أن يعرف عملاؤك العروض الترويجية والخصومات؟ هل العملاء لا يعودون؟ قم بإعداد إرسال الرسائل القصيرة مباشرة من 1C!

شركتنا سوف تكون قادرة على شروط قصيرةقم بإعداد إرسال الرسائل القصيرة إلى عملائك مباشرة من 1C. أمثلة على الأحداث التي يمكن أتمتتها:

  • نشكرك على الشراء ويتم منح المكافآت فورًا بعد عملية الشراء التالية.
  • استحقاق المكافآت على البطاقة كهدية لعيد ميلاد/مناسبة أخرى أو عطلة.
  • إشعار بوصول البضائع إلى المستودع.
  • انتهاء صلاحية مكافآت الهدايا.
  • - إشعار باستلام الدفعة المقدمة وحجز البضائع.
  • العنوان مع الاتجاهات إلى المتجر/المكتب وأرقام الهواتف.
  • إلخ.

يمكن إجراء الإعداد في 1C بواسطة المتخصصين لدينا أو موظفيك. يمكنك عرض التعريفات على صفحة تعريفات الرسائل القصيرة.

  • تسليم مضمون للرسائل النصية القصيرة، يتم تحصيل الأموال فقط مقابل الرسائل النصية القصيرة التي تم تسليمها.
  • تسعير منفصل لكل رسالة نصية قصيرة.
  • قم بتعبئة رصيدك بطرق مختلفة.
  • عرض سجل جميع الرسائل القصيرة المرسلة في أي وقت.
  • اسم المرسل بدلاً من الرقم الرقمي في هاتف مستلم الرسالة.