ಬಾಹ್ಯ ಮೂಲಗಳಿಂದ 1c 8 ವಹಿವಾಟುಗಳು. ಒಂದು ಬಾರಿ ಗ್ರಾಹಕರು. ಪುನರಾವರ್ತಿತ ಖರೀದಿಗಳನ್ನು ಪಡೆಯಲು ವಿಭಾಗ. ಆದೇಶದಲ್ಲಿ ಸರಕುಗಳ ಬೆಲೆ

ಆಯ್ಕೆ ಮಾಡಲಾದ ಆಪರೇಟಿಂಗ್ ಆಯ್ಕೆ (ಫೈಲ್ ಅಥವಾ ಕ್ಲೈಂಟ್-ಸರ್ವರ್) ಹೊರತಾಗಿಯೂ, 1C:ಎಂಟರ್‌ಪ್ರೈಸ್ ಸಿಸ್ಟಮ್ ವಹಿವಾಟು ಕಾರ್ಯವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಮಾಹಿತಿಯೊಂದಿಗೆ ಕೆಲಸವನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.

ವ್ಯವಹಾರ- ಇದು ಡೇಟಾಬೇಸ್ ಮೇಲಿನ ಪ್ರಭಾವದ ದೃಷ್ಟಿಕೋನದಿಂದ ಡೇಟಾ ಮ್ಯಾನಿಪ್ಯುಲೇಷನ್ ಕಾರ್ಯಾಚರಣೆಗಳ ಅವಿಭಾಜ್ಯ ಅನುಕ್ರಮವಾಗಿದೆ. ಇದು ಎಲ್ಲಾ-ಅಥವಾ-ಇಲ್ಲದ ಆಧಾರದ ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಡೇಟಾಬೇಸ್ ಅನ್ನು ಒಂದು ಸಮಗ್ರ ಸ್ಥಿತಿಯಿಂದ ಮತ್ತೊಂದು ಸಮಗ್ರ ಸ್ಥಿತಿಗೆ ಚಲಿಸುತ್ತದೆ. ಕೆಲವು ಕಾರಣಗಳಿಗಾಗಿ ವಹಿವಾಟು ಕ್ರಿಯೆಗಳಲ್ಲಿ ಒಂದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸದಿದ್ದರೆ ಅಥವಾ ಕೆಲವು ರೀತಿಯ ಸಿಸ್ಟಮ್ ಅಡ್ಡಿಯು ಸಂಭವಿಸಿದಲ್ಲಿ, ಡೇಟಾಬೇಸ್ ವಹಿವಾಟು ಪ್ರಾರಂಭವಾಗುವ ಮೊದಲು ಇದ್ದ ಸ್ಥಿತಿಗೆ ಮರಳುತ್ತದೆ (ವ್ಯವಹಾರವನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ).

ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಮಾಹಿತಿಯನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಂಬಂಧಿಸಿದ ಯಾವುದೇ ಕ್ರಿಯೆಗಳನ್ನು ನಿರ್ವಹಿಸುವಾಗ 1C: ಎಂಟರ್‌ಪ್ರೈಸ್ ವ್ಯವಸ್ಥೆಯು ವ್ಯವಹಾರಗಳನ್ನು ಸೂಚ್ಯವಾಗಿ ಕರೆಯುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಡೇಟಾಬೇಸ್ ಡೇಟಾದ ಮಾರ್ಪಾಡಿಗೆ ಸಂಬಂಧಿಸಿದ ವಸ್ತು ಮತ್ತು ರೆಕಾರ್ಡ್‌ಸೆಟ್ ಮಾಡ್ಯೂಲ್‌ಗಳಲ್ಲಿ ಇರುವ ಎಲ್ಲಾ ಈವೆಂಟ್ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳನ್ನು ವಹಿವಾಟಿನಲ್ಲಿ ಕರೆಯಲಾಗುತ್ತದೆ. ವಹಿವಾಟು ಈ ಕೆಳಗಿನ ಪ್ರಕಾರದ ವಸ್ತುಗಳನ್ನು ಸಹ ಓದುತ್ತದೆ: ಪ್ಲಾನೋಬೆನಾ ಆಬ್ಜೆಕ್ಟ್, ಡಾಕ್ಯುಮೆಂಟ್ -ವಿಮಾನ ವಿಷಯ, ಉಲ್ಲೇಖ ಪುಸ್ತಕ, ಪ್ಲಾನ್‌ವಿಡ್ -ಕ್ಯಾರೆಕ್ಟಮೆಂಟರಿ ಮತ್ತು ಪ್ಲ್ಯಾನ್‌ವರ್ಡ್ ಲೆಕ್ಕಾಚಾರಗಳು, ಯೋಜನೆ -ಕೌಂಟರ್ -ವಿಷಯ, ಬೋರ್ಡ್ ಪ್ರೊಸೀಜರ್, ಆಬ್ಜೆಕ್ಟ್, ಸ್ಕ್ವೀಜರ್‌ಗಳು, ರಿಜಿಸ್ಟರ್‌ನ ರಿಜಿಸ್ಟರ್, ರಿಜಿಸ್ಟರ್ -ನಾಕ್ -ರೇಸಿಂಗ್, ರಿಜಿಸ್ಟಾಚ್ಗೋಂಟಿನಾರಿನಾಪರ್ಸ್, ರಿಜಿಸ್ಟ್ರೇಶನ್ - ನೋಂದಣಿ , ಮರು ಲೆಕ್ಕಾಚಾರ ಮಾಡಬಹುದಾದ ದಾಖಲೆಗಳು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಿರ್ವಹಿಸಲಾದ ಲಾಕಿಂಗ್ ಮೋಡ್‌ನಲ್ಲಿ, ದಾಖಲೆಗಳ ಸೆಟ್‌ಗಳಿಗಾಗಿ ರಿಜಿಸ್ಟರ್‌ನ ಮೌಲ್ಯದಿಂದ ಮತ್ತು ಸ್ವತಂತ್ರ ಮಾಹಿತಿ ರಿಜಿಸ್ಟರ್‌ನ ದಾಖಲೆಗಳ ಸೆಟ್‌ಗಾಗಿ ಆಯ್ಕೆ ಮೌಲ್ಯಗಳಿಂದ ಹಂಚಿಕೆಯ ಲಾಕ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗಿದೆ.

ಇದರೊಂದಿಗೆ, ಡೆವಲಪರ್ ವ್ಯವಹಾರಗಳೊಂದಿಗೆ ಸ್ಪಷ್ಟವಾಗಿ ಕೆಲಸ ಮಾಡಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ಜಾಗತಿಕ ಸಂದರ್ಭದ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಬಳಸಿ StartTransaction(), CommitTransaction() ಮತ್ತು CancelTransaction().

ಸ್ಪಷ್ಟ ವಹಿವಾಟು ಕರೆಯನ್ನು ಬಳಸುವುದು

ವಿಧಾನ ವಹಿವಾಟು ಪ್ರಾರಂಭಿಸಿ()ವಹಿವಾಟನ್ನು ತೆರೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ನಂತರದ ಹೇಳಿಕೆಗಳಿಂದ ಮಾಡಿದ ಡೇಟಾಬೇಸ್ ಮಾಹಿತಿಗೆ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಸ್ವೀಕರಿಸಬಹುದು ಅಥವಾ ಸಂಪೂರ್ಣವಾಗಿ ತಿರಸ್ಕರಿಸಬಹುದು. ಮಾಡಿದ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವೀಕರಿಸಲು, ವಿಧಾನವನ್ನು ಬಳಸಿ ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್(). ತೆರೆದ ವಹಿವಾಟಿನಲ್ಲಿ ಮಾಡಿದ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ರದ್ದುಗೊಳಿಸಲು, ವಿಧಾನವನ್ನು ಬಳಸಿ ವಹಿವಾಟು ರದ್ದುಮಾಡು(). ವಿಧಾನದ ಸಂಖ್ಯೆ ಕರೆ ಮಾಡಿದರೆ ವಹಿವಾಟು ಪ್ರಾರಂಭಿಸಿ()ವಿಧಾನ ಕರೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮೀರಿದೆ ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್()ಅಥವಾ ವಹಿವಾಟು ರದ್ದುಮಾಡು(), ನಂತರ ಸಿಸ್ಟಮ್ ಸೂಚ್ಯ ವಿಧಾನ ಕರೆ ಮಾಡುತ್ತದೆ ವಹಿವಾಟು ರದ್ದುಮಾಡು()ಕೆಳಗಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ:

● ಅಂತರ್ನಿರ್ಮಿತ ಭಾಷೆಯ ಮರಣದಂಡನೆಯ ಕೊನೆಯಲ್ಲಿ (ಈವೆಂಟ್ ಹ್ಯಾಂಡ್ಲರ್, ಬಾಹ್ಯ ಸಂಪರ್ಕ, ಯಾಂತ್ರೀಕೃತಗೊಂಡ ಸರ್ವರ್);

● ಸರ್ವರ್‌ನಿಂದ ಕ್ಲೈಂಟ್‌ಗೆ ನಿಯಂತ್ರಣವನ್ನು ವರ್ಗಾಯಿಸುವಾಗ.

ವಿಧಾನದ ಸಂಖ್ಯೆ ಕರೆ ಮಾಡಿದರೆ ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್() ಅಥವಾ ವಹಿವಾಟು ರದ್ದುಮಾಡು()ವಿಧಾನ ಕರೆಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮೀರಿದೆ ವಹಿವಾಟು ಪ್ರಾರಂಭಿಸಿ(), ನಂತರ ಅನಗತ್ಯ ವಿಧಾನ ಕರೆ ನಿರ್ವಹಿಸುವಾಗ ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್()ಅಥವಾ ವಹಿವಾಟು ರದ್ದುಮಾಡು()ಒಂದು ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಲಾಗುತ್ತದೆ. ಹೀಗಾಗಿ, ವ್ಯವಹಾರದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಯೋಜನೆ ಸಾಮಾನ್ಯ ನೋಟಈ ರೀತಿ ಕಾಣಿಸಬಹುದು:

ಪ್ರಯತ್ನ

ಪ್ರಾರಂಭ ವಹಿವಾಟು ();

// ಹೇಳಿಕೆಗಳ ಅನುಕ್ರಮ

ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

ವಿನಾಯಿತಿ

ರದ್ದು ವಹಿವಾಟು();

ಎಂಡ್ ಅಟೆಂಪ್ಟ್;

ಅಂತಹ ಸ್ಕೀಮ್ ಅನ್ನು ಬಳಸುವಾಗ, ಡೇಟಾಬೇಸ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಸಂಭವಿಸುವ ಎಲ್ಲಾ ದೋಷಗಳನ್ನು ಸಿಸ್ಟಮ್ ಒಂದೇ ರೀತಿಯಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದಿಲ್ಲ ಎಂದು ನೀವು ನೆನಪಿನಲ್ಲಿಟ್ಟುಕೊಳ್ಳಬೇಕು. ಸಾಮಾನ್ಯವಾಗಿ, ಎಲ್ಲಾ ಡೇಟಾಬೇಸ್ ದೋಷಗಳನ್ನು ಎರಡು ವರ್ಗಗಳಾಗಿ ವಿಂಗಡಿಸಬಹುದು:

● ಚೇತರಿಸಿಕೊಳ್ಳಲಾಗದ,

● ಚೇತರಿಸಿಕೊಳ್ಳಬಹುದು.

ಸರಿಪಡಿಸಲಾಗದ ದೋಷಗಳು- ಇವು ದೋಷಗಳು, ಅವು ಸಂಭವಿಸಿದಲ್ಲಿ, 1C: ಎಂಟರ್‌ಪ್ರೈಸ್ ಸಿಸ್ಟಮ್‌ನ ಸಾಮಾನ್ಯ ಕಾರ್ಯಚಟುವಟಿಕೆಯು ಅಡ್ಡಿಪಡಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ, ಡೇಟಾ ದೋಷಪೂರಿತವಾಗಬಹುದು. ಒಂದು ಚೇತರಿಸಿಕೊಳ್ಳಲಾಗದ ದೋಷ ಸಂಭವಿಸಿದಲ್ಲಿ, 1C: ಎಂಟರ್ಪ್ರೈಸ್ ಸಿಸ್ಟಮ್ನ ಮರಣದಂಡನೆಯು ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ. ವಹಿವಾಟಿನ ಮರಣದಂಡನೆಯ ಸಮಯದಲ್ಲಿ ಚೇತರಿಸಿಕೊಳ್ಳಲಾಗದ ದೋಷ ಸಂಭವಿಸಿದಲ್ಲಿ, ಆ ವಹಿವಾಟಿನ ಭಾಗವಾಗಿ ಮಾಡಿದ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಸಿಸ್ಟಮ್ ರದ್ದುಗೊಳಿಸುತ್ತದೆ.

ಮರುಪಡೆಯಬಹುದಾದ ದೋಷಗಳು- ಇವುಗಳು 1C: ಎಂಟರ್ಪ್ರೈಸ್ ಸಿಸ್ಟಮ್ನ ಕಾರ್ಯಾಚರಣೆಯಲ್ಲಿ ಗಂಭೀರ ಅಡಚಣೆಗಳನ್ನು ಉಂಟುಮಾಡದ ದೋಷಗಳಾಗಿವೆ. ಮರುಪಡೆಯಬಹುದಾದ ದೋಷ ಸಂಭವಿಸಿದಲ್ಲಿ, ಸಿಸ್ಟಮ್ನ ಮತ್ತಷ್ಟು ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಮುಂದುವರಿಸಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಸ್ವಾಭಾವಿಕವಾಗಿ, ದೋಷವನ್ನು ಉಂಟುಮಾಡಿದ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಕೊನೆಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ವಿನಾಯಿತಿಯನ್ನು ಹೆಚ್ಚಿಸಲಾಗುತ್ತದೆ, ಇದನ್ನು ರಚನೆಯಿಂದ ಪ್ರತಿಬಂಧಿಸಬಹುದು ಮತ್ತು ಸಂಸ್ಕರಿಸಬಹುದು

ಪ್ರಯತ್ನ... ವಿನಾಯಿತಿ... ಎಂಡ್ ಟ್ರೈ.

ನೆಸ್ಟೆಡ್ ವಹಿವಾಟು ಕರೆ

ಈಗಾಗಲೇ ಪ್ರಗತಿಯಲ್ಲಿರುವ ವಹಿವಾಟಿನೊಳಗೆ, ನೀವು ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು ಪ್ರಾರಂಭ ವಹಿವಾಟು(), ಕಮಿಟ್ ಟ್ರಾನ್ಸಕ್ಷನ್()ಮತ್ತು ವಹಿವಾಟು ರದ್ದುಮಾಡು(). ಉದಾಹರಣೆಗೆ, ಈ ಕೆಳಗಿನ ಕರೆ ಮಾದರಿಯನ್ನು ಬಳಸಬಹುದು:

ಪ್ರಾರಂಭ ವಹಿವಾಟು ();

ಪ್ರಾರಂಭ ವಹಿವಾಟು ();

ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

// ನೆಸ್ಟೆಡ್ ವಹಿವಾಟು ಕರೆ

ಪ್ರಾರಂಭ ವಹಿವಾಟು ();

ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

ಆದಾಗ್ಯೂ, ಅಂತಹ ಕರೆಯು ಈಗಾಗಲೇ ಚಾಲನೆಯಲ್ಲಿರುವ ಚೌಕಟ್ಟಿನೊಳಗೆ ಹೊಸ ವಹಿವಾಟಿನ ಪ್ರಾರಂಭವನ್ನು ಅರ್ಥೈಸುವುದಿಲ್ಲ.

ಗಮನ!1C: ಎಂಟರ್‌ಪ್ರೈಸ್ ಸಿಸ್ಟಮ್ ನೆಸ್ಟೆಡ್ ವಹಿವಾಟುಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.ಇದರರ್ಥ ವಹಿವಾಟು ಮಾತ್ರ ಯಾವಾಗಲೂ ಮಾನ್ಯವಾಗಿರುತ್ತದೆ. ಉನ್ನತ ಮಟ್ಟದ.

ಈಗಾಗಲೇ ತೆರೆದಿರುವ ವಹಿವಾಟಿನೊಳಗೆ ಕರೆಯಲಾದ ಎಲ್ಲಾ ವಹಿವಾಟುಗಳು ನೆಸ್ಟೆಡ್ ವಹಿವಾಟನ್ನು ರೂಪಿಸುವ ಬದಲು ಅದೇ ವಹಿವಾಟಿನ ಭಾಗವಾಗಿದೆ. ಹೀಗಾಗಿ, ನೆಸ್ಟೆಡ್ ವಹಿವಾಟಿನಲ್ಲಿ ಮಾಡಿದ ಬದಲಾವಣೆಗಳನ್ನು ರದ್ದುಗೊಳಿಸುವುದು ಅಂತಿಮವಾಗಿ ನೆಸ್ಟೆಡ್ ವಹಿವಾಟಿನಲ್ಲಿನ ಬದಲಾವಣೆಗಳನ್ನು ರದ್ದುಗೊಳಿಸುವುದಿಲ್ಲ, ಬದಲಿಗೆ ಉನ್ನತ ಮಟ್ಟದ ವಹಿವಾಟಿನಲ್ಲಿನ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ನೆಸ್ಟೆಡ್ ವಹಿವಾಟಿನಲ್ಲಿ ಮಾಡಿದ ಬದ್ಧ ಬದಲಾವಣೆಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಲಾಗುತ್ತದೆ.

ಸಾಫ್ಟ್‌ವೇರ್ ವಸ್ತುಗಳ ಕಾರ್ಯಾಚರಣೆಯ ಮೇಲೆ ವಹಿವಾಟಿನ ಪ್ರಭಾವ

ಸಾಮಾನ್ಯವಾಗಿ, 1C: ಎಂಟರ್‌ಪ್ರೈಸ್ ಸಿಸ್ಟಮ್ ಬಳಸುವ ಸಾಫ್ಟ್‌ವೇರ್ ವಸ್ತುಗಳು ಡೇಟಾಬೇಸ್ ವಹಿವಾಟುಗಳಿಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಪಾರದರ್ಶಕವಾಗಿರುತ್ತದೆ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ ಡೇಟಾಬೇಸ್ ವಹಿವಾಟುಗಳನ್ನು ಕರೆಯಬಹುದು ವಿವಿಧ ವಿಧಾನಗಳು ಸಾಫ್ಟ್ವೇರ್ ವಸ್ತುಗಳು, ಆದಾಗ್ಯೂ, ಉದಾಹರಣೆಗೆ, ವಹಿವಾಟನ್ನು ಹಿಂತಿರುಗಿಸುವಾಗ ಡೇಟಾಬೇಸ್ ನಿರ್ವಹಿಸುವ ಕ್ರಿಯೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಅನುಗುಣವಾದ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ ಸಾಫ್ಟ್ವೇರ್ ವಸ್ತುಗಳು.

ಡೇಟಾಬೇಸ್ ವಹಿವಾಟುಗಳನ್ನು ರದ್ದುಗೊಳಿಸುವಾಗ, ಡೆವಲಪರ್ (ಅಗತ್ಯವಿದ್ದರೆ) ಅನುಗುಣವಾದ ಡೇಟಾಗೆ ಸಾಕಷ್ಟು ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು. ಸಾಫ್ಟ್ವೇರ್ ವಸ್ತುಗಳು. ಎಲ್ಲಾ ಆಬ್ಜೆಕ್ಟ್ ಡೇಟಾವನ್ನು ಮರು-ಓದುವ ಮೂಲಕ ಅಥವಾ ಕೆಲವು ಪ್ರೋಗ್ರಾಂ ಆಬ್ಜೆಕ್ಟ್ ವಿವರಗಳನ್ನು ಬದಲಾಯಿಸುವ ಮೂಲಕ ಇದನ್ನು ಮಾಡಬಹುದು.

ಈ ನಿಯಮಕ್ಕೆ ಅಪವಾದಗಳಿವೆ. 1C ಯ ಸಾಫ್ಟ್‌ವೇರ್ ಆಬ್ಜೆಕ್ಟ್‌ಗಳ ಗಮನಾರ್ಹ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ದಿಷ್ಟತೆಯಿಂದಾಗಿ: ಎಂಟರ್‌ಪ್ರೈಸ್ ಸಿಸ್ಟಮ್, ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ, ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಮಾಡಿದ ಬದಲಾವಣೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವುದು ಇನ್ನೂ ಅನುಗುಣವಾದ ಗುಣಲಕ್ಷಣಗಳ ಮೌಲ್ಯಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದು. ಸಾಫ್ಟ್ವೇರ್ ವಸ್ತುಗಳು. ಇದು ಈ ಕೆಳಗಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ಸಂಭವಿಸುತ್ತದೆ:

● ವಹಿವಾಟು ರದ್ದುಗೊಂಡಾಗ, ಡಾಕ್ಯುಮೆಂಟ್ ಪೋಸ್ಟ್ ಮಾಡುವ ಗುಣಲಕ್ಷಣವು ವಹಿವಾಟಿನ ಪ್ರಾರಂಭದ ಮೊದಲು ಇದ್ದ ಮೌಲ್ಯವನ್ನು ಮರುಸ್ಥಾಪಿಸುತ್ತದೆ;

● ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ರಚಿಸಿದ್ದರೆ ಮತ್ತು ವಹಿವಾಟಿನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ, ನಂತರ ವಹಿವಾಟನ್ನು ಹಿಂತಿರುಗಿಸಿದಾಗ, ಉಲ್ಲೇಖ ಮೌಲ್ಯವನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ;

● ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ವಹಿವಾಟಿನ ಹೊರಗೆ ರಚಿಸಿದ್ದರೆ ಮತ್ತು ಅದನ್ನು ವಹಿವಾಟಿನಲ್ಲಿ ರೆಕಾರ್ಡ್ ಮಾಡುವಾಗ, ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲಾದ ಕೋಡ್/ಸಂಖ್ಯೆಯನ್ನು ಬಳಸಿದರೆ, ವಹಿವಾಟು ರದ್ದುಗೊಂಡಾಗ, ಕೋಡ್/ಸಂಖ್ಯೆಯನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ.

2017-08-12

OM ವಸ್ತುಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಕಸ್ಟಮ್ ವಹಿವಾಟುಗಳನ್ನು ರಚಿಸಿ.

ಪರಿಚಯ

ಅನೇಕ ಕ್ರಿಯಾತ್ಮಕ SAP ಸಲಹೆಗಾರರು ಸಾಂಸ್ಥಿಕ ನಿರ್ವಹಣಾ ವಸ್ತುಗಳನ್ನು ನಿರ್ವಹಿಸುವ ವಹಿವಾಟನ್ನು ಎದುರಿಸಿದ್ದಾರೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ಅವುಗಳೆಂದರೆ, ವಹಿವಾಟು PP01

ಈ ವಹಿವಾಟನ್ನು ಬಳಸುವುದರಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವ್ಯಾಪಾರ ಪ್ರಕ್ರಿಯೆಗಳಲ್ಲಿ ಬಳಸಲಾಗುವ ಆಬ್ಜೆಕ್ಟ್ ಪ್ರಕಾರಗಳಿಗೆ ಸಾಂಸ್ಥಿಕ ನಿರ್ವಹಣೆ ಇನ್ಫೋಟೈಪ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಬಳಕೆದಾರರಿಗೆ ಒದಗಿಸುತ್ತದೆ. ಆಗಾಗ್ಗೆ ಈ ವಹಿವಾಟನ್ನು ಎಲ್ಲಾ ರೀತಿಯ ಸಾಂಸ್ಥಿಕ ನಿರ್ವಹಣಾ ವಸ್ತುಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಒಂದೇ ಪ್ರವೇಶ ಬಿಂದುವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ, ಇದು ವಾಸ್ತವದಲ್ಲಿ ಉತ್ತಮ ಅಭ್ಯಾಸವಲ್ಲ. ಸರಿ, ಅಥವಾ ತುಂಬಾ ಅನುಕೂಲಕರವಾಗಿಲ್ಲ. ಖಂಡಿತವಾಗಿಯೂ ಸಾಮಾನ್ಯವಾಗಿದ್ದರೂ. ಮುಂದೆ, ಏನು ಪರ್ಯಾಯವಾಗಿರಬಹುದು ಎಂದು ನಾನು ನಿಮಗೆ ಹೇಳಲು ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ.

ಟೇಬಲ್ T77S0, ಗುಂಪು "TCODE"

OM ಆಬ್ಜೆಕ್ಟ್ ಆಬ್ಜೆಕ್ಟ್‌ಗಳನ್ನು ಹೊಂದಿಸುವಾಗ, ನೀವು ಬಹುಶಃ ಕೆಳಗಿನ ಮಾರ್ಗದಲ್ಲಿರುವ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಬಹುದು SPRO:

IMG: ಸಿಬ್ಬಂದಿ ನಿರ್ವಹಣೆ -> ಸಾಂಸ್ಥಿಕ ನಿರ್ವಹಣೆ -> ಮೂಲ ಸೆಟ್ಟಿಂಗ್‌ಗಳು -> ಡೇಟಾ ಮಾದರಿ ವರ್ಧನೆ -> ವಸ್ತು ಪ್ರಕಾರಗಳನ್ನು ನಿರ್ವಹಿಸಿ

ಇಲ್ಲಿ ನೀವು ಹೊಸ OM ಆಬ್ಜೆಕ್ಟ್‌ಗಳನ್ನು ರಚಿಸಿ, ಅವುಗಳಿಗೆ ಹೆಸರುಗಳೊಂದಿಗೆ ಬನ್ನಿ, ಐಕಾನ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಅವುಗಳಿಗೆ ಕೆಲವು ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ... ಈ ಸಮಯದಲ್ಲಿ ನಾವು ನೋಡ್‌ನಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿದ್ದೇವೆ " ಆಬ್ಜೆಕ್ಟ್ ಟೈಪ್ ಕೀ + ವಹಿವಾಟು"

ಸೆಟಪ್ ವೀಕ್ಷಣೆಯ ಭಾಗವು ನಿಮ್ಮ ಮುಂದೆ ತೆರೆಯುತ್ತದೆ T77S0ಫಿಲ್ಟರ್ ಮಾಡಿದ ಗುಂಪು ಮೌಲ್ಯಗಳೊಂದಿಗೆ

ಗುಂಪಿಗೆ ಗಮನ ಕೊಡುವುದು ಯೋಗ್ಯವಾಗಿದೆ TCODEಇದರಲ್ಲಿ, ನೀವು ಹತ್ತಿರದಿಂದ ನೋಡಿದರೆ, ನೀವು ಹೆಚ್ಚಾಗಿ ಕೆಲಸ ಮಾಡಬೇಕಾದ ವ್ಯವಹಾರಗಳ ತಾಂತ್ರಿಕ ಹೆಸರುಗಳನ್ನು ನೀವು ಕಾಣಬಹುದು. ಇದಲ್ಲದೆ, ಅಂಕಣದಲ್ಲಿ ಮೌಲ್ಯನಿರ್ದಿಷ್ಟ ವಹಿವಾಟನ್ನು ಉದ್ದೇಶಿಸಿರುವ ವಸ್ತುವಿನ ಪ್ರಕಾರವನ್ನು ಸೂಚಿಸುತ್ತದೆ.

ಈ ವಹಿವಾಟುಗಳ ವಿಶೇಷತೆ ಏನು?

ನಿರ್ದಿಷ್ಟ ಪ್ರಕಾರದ ವಸ್ತುವನ್ನು ನಿರ್ವಹಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ವಹಿವಾಟುಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ, ವ್ಯವಹಾರದಲ್ಲಿ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಲಭ್ಯವಿರುವ ಈ ರೀತಿಯ ವಸ್ತುಗಳನ್ನು ನೀವು ಇನ್ನು ಮುಂದೆ ಆಯ್ಕೆ ಮಾಡಬೇಕಾಗಿಲ್ಲ PP01. ಅಂದರೆ, ಪ್ರಾರಂಭಿಸುವ ಮೂಲಕ, ಉದಾಹರಣೆಗೆ, ವಹಿವಾಟು PO09,ನೀವು ತಕ್ಷಣ ಅಂತಹ ವಸ್ತುಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿ ಎಲ್

ನಿಮ್ಮ ಸ್ವಂತ ಸಾಂಸ್ಥಿಕ ನಿರ್ವಹಣೆ ವಸ್ತುವಿಗಾಗಿ ಹೊಸ ವಹಿವಾಟನ್ನು ರಚಿಸುವುದು

ನನ್ನ ಹಿಂದಿನ ಪೋಸ್ಟ್‌ಗಳಲ್ಲಿ, ನೀವು ಹೊಸ OM ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಹೇಗೆ ರಚಿಸಬಹುದು ಎಂಬುದರ ಕುರಿತು ನಾನು ಮಾತನಾಡಿದ್ದೇನೆ + ಅದಕ್ಕೆ ರಚನಾತ್ಮಕ ಹುಡುಕಾಟವನ್ನು ಸೇರಿಸಿ

ನಾನು ಈ ವಸ್ತುವಿನಿಂದ ದೂರ ಹೋಗುವುದಿಲ್ಲ. ಪ್ರಾತ್ಯಕ್ಷಿಕೆಯಾಗಿ, ವಸ್ತುವನ್ನು ನಿರ್ವಹಿಸಲು ನಾನು ಹೊಸ ವಹಿವಾಟನ್ನು ರಚಿಸುತ್ತೇನೆ 91.

T77S0 ನಲ್ಲಿ ಹೊಸ ವಸ್ತು ಪ್ರಕಾರವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು

ಸೆಟಪ್ ವೀಕ್ಷಣೆಯಲ್ಲಿ ಭವಿಷ್ಯದ ವಹಿವಾಟಿನ ಹೆಸರನ್ನು ವಿವರಿಸಿ T77S0

ಈ ಸಂದರ್ಭದಲ್ಲಿ "ZP91M" ಮೌಲ್ಯವು ವಸ್ತುವನ್ನು ನಿರ್ವಹಿಸಲು ಭವಿಷ್ಯದ ವಹಿವಾಟಿನ ಹೆಸರಾಗಿದೆ 91 . ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಿ.

OM ವಸ್ತುವನ್ನು ನಿರ್ವಹಿಸಲು ಹೊಸ ವಹಿವಾಟನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ

ವಹಿವಾಟಿನ ಮೂಲಕ SE93ನಿಮ್ಮ ವಸ್ತುವನ್ನು ನಿರ್ವಹಿಸಲು ವ್ಯವಹಾರವನ್ನು ರಚಿಸಿ. ಅನುಗುಣವಾದ ವಹಿವಾಟನ್ನು ರಚಿಸಲು ನಿರ್ವಹಿಸಬೇಕಾದ ಕ್ರಿಯೆಗಳ ಅನುಕ್ರಮದೊಂದಿಗೆ ವೀಡಿಯೊ ತುಣುಕನ್ನು ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ

ಕ್ಷೇತ್ರಗಳಿಗೆ ಬಳಸಿದ ಮೌಲ್ಯಗಳನ್ನು ಗಮನಿಸಿ ಕಾರ್ಯಕ್ರಮ, ಪರದೆಯ ಸಂಖ್ಯೆ,ದೃಢೀಕರಣ ವಸ್ತು. ಈಗ ಹೊಸ ವ್ಯವಹಾರವನ್ನು ಪ್ರಾರಂಭಿಸಿ

ಬಳಕೆದಾರರಿಗೆ ಒಂದು ನಿರ್ದಿಷ್ಟ ರೀತಿಯ ವಸ್ತುವಿನೊಂದಿಗೆ ಮಾತ್ರ ಕೆಲಸ ಮಾಡಲು ಅವಕಾಶವಿದೆ, ಇದನ್ನು ಒಂದು ನಿರ್ದಿಷ್ಟ ಅರ್ಥದಲ್ಲಿ ಅನುಕೂಲ ಎಂದು ಕರೆಯಬಹುದು ಮತ್ತು ನೀವು ಬಯಸಿದರೆ, ಬಯಸಿದ ವಸ್ತುವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಹೆಚ್ಚುವರಿ ಕ್ರಿಯೆಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ಕೊನೆಯ ಬಾರಿ ನಾವು ನೋಡಿದ್ದೇವೆ ಸರಳವಾದ ಮಾರ್ಗಅಂತರ್ನಿರ್ಮಿತ 1C ಭಾಷೆಯನ್ನು ಬಳಸಿ. ಅಭ್ಯಾಸದ ಮೇಲೆ ವಹಿವಾಟುಗಳುವಿನ್ಯಾಸದ ಜೊತೆಯಲ್ಲಿ ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಇದು ದೋಷದ ಸಂದರ್ಭದಲ್ಲಿ, ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದನ್ನು ಮುಂದುವರಿಸಲು ಅನುಮತಿಸುತ್ತದೆ, ಜೊತೆಗೆ ಬಳಕೆದಾರರಿಗೆ ಸಾಕಷ್ಟು ದೋಷ ಸಂದೇಶವನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರಿಂದ ನಂತರದ ವಿಶ್ಲೇಷಣೆಗಾಗಿ ನೋಂದಣಿ ಲಾಗ್‌ಗೆ ಅಥವಾ ಲಾಗ್ ಫೈಲ್‌ಗೆ ಮಾಹಿತಿಯನ್ನು ಬರೆಯುತ್ತದೆ.

ನಾವು ತಾಂತ್ರಿಕ ದಸ್ತಾವೇಜನ್ನು ಅಥವಾ ITS ಡಿಸ್ಕ್ಗೆ ತಿರುಗಿದರೆ, ಪ್ರಯತ್ನದಲ್ಲಿ ವಹಿವಾಟನ್ನು ಆಯೋಜಿಸುವ ಕೆಳಗಿನ ವಿಧಾನವನ್ನು 1C ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ ಎಂದು ನಾವು ನೋಡುತ್ತೇವೆ.

ಪ್ರಯತ್ನ //1. ವಹಿವಾಟಿನ ಪ್ರಾರಂಭ.ಪ್ರಾರಂಭ ವಹಿವಾಟು(); //2. ವಹಿವಾಟಿನಲ್ಲಿ ನಿರ್ವಹಿಸಲಾದ ಕಾರ್ಯಾಚರಣೆಗಳ ಬ್ಲಾಕ್. //3. ಎಲ್ಲಾ ಕಾರ್ಯಾಚರಣೆಗಳು ಯಶಸ್ವಿಯಾದರೆ, ನಾವು ವಹಿವಾಟು ನಡೆಸುತ್ತೇವೆ.ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ವಿನಾಯಿತಿ //4. ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ ದೋಷಗಳು ಸಂಭವಿಸಿದಲ್ಲಿ, ವಹಿವಾಟನ್ನು ರದ್ದುಗೊಳಿಸಿ.ರದ್ದು ವಹಿವಾಟು() ; //5. ಅಗತ್ಯವಿದ್ದರೆ, ಲಾಗ್ ಪುಸ್ತಕದಲ್ಲಿ ದಾಖಲಿಸಿ. //6. ಅಗತ್ಯವಿದ್ದರೆ, ಬಳಕೆದಾರರಿಗೆ ಸಂದೇಶವನ್ನು ಪ್ರದರ್ಶಿಸಿ.ಅಂತ್ಯ ಪ್ರಯತ್ನ ;

ವಾಸ್ತವವಾಗಿ, ಕೋಡ್‌ಗೆ ಯಾವುದೇ ವಿಶೇಷ ವಿವರಣೆಯ ಅಗತ್ಯವಿಲ್ಲ. ಪ್ರಗತಿಯಲ್ಲಿದ್ದರೆ ಪ್ರಯತ್ನಗಳುವಹಿವಾಟಿನ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ, ದೋಷ ಸಂಭವಿಸುತ್ತದೆ, ನಾವು ತಕ್ಷಣವೇ ಬ್ಲಾಕ್ಗೆ ಬೀಳುತ್ತೇವೆ ವಿನಾಯಿತಿ, ಅಂದರೆ ವಿಧಾನದ ಮೊದಲು ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್()ನಾವು ಅಲ್ಲಿಗೆ ಬರುವುದಿಲ್ಲ. ಸರಿ, ವಿನಾಯಿತಿಯಲ್ಲಿ, ನಾವು ವ್ಯವಹಾರವನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತೇವೆ ಮತ್ತು ಅಗತ್ಯವಿದ್ದರೆ, ದೋಷ ಸಂದೇಶವನ್ನು ಪ್ರದರ್ಶಿಸಿ ಮತ್ತು ಲಾಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಬರೆಯಿರಿ. ಲಾಗ್ ಬುಕ್‌ನಲ್ಲಿ ದೋಷಗಳನ್ನು ದಾಖಲಿಸಲು ಇದು ಹೆಚ್ಚು ಅಪೇಕ್ಷಣೀಯವಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ಬಳಕೆದಾರರ ಭಾಗವಹಿಸುವಿಕೆ ಇಲ್ಲದೆ ನಿರ್ವಹಿಸುವ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ (ಉದಾಹರಣೆಗೆ, ದಿನನಿತ್ಯದ ಕಾರ್ಯಗಳು). ದೋಷವನ್ನು ನಂತರ ವಿಶ್ಲೇಷಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಲಾಗಿಂಗ್ ಬದಲಿಗೆ, ಇಮೇಲ್ ಮೂಲಕ ನಿರ್ವಾಹಕರಿಗೆ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಲು ನೀವು ವ್ಯವಸ್ಥೆ ಮಾಡಬಹುದು.

ಈಗ, ಹೊಸ ಜ್ಞಾನದೊಂದಿಗೆ ಶಸ್ತ್ರಸಜ್ಜಿತವಾಗಿದೆ, ಬಗ್ಗೆ ಲೇಖನದಲ್ಲಿ ಚರ್ಚಿಸಲಾದ ಕೋಡ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಲು ಪ್ರಯತ್ನಿಸೋಣ. ಡೈರೆಕ್ಟರಿಯಲ್ಲಿನ ನಮೂದನ್ನು ನಾವು ಪರಿಗಣಿಸಿದ್ದೇವೆ ಎಂದು ನಾನು ನಿಮಗೆ ನೆನಪಿಸುತ್ತೇನೆ ಸರಕುಗಳುಮತ್ತು ಮಾಹಿತಿ ನೋಂದಣಿಗೆ ಬೆಲೆಕೆಳಗಿನ ಯೋಜನೆಯ ಪ್ರಕಾರ:

&ಆನ್ ಸರ್ವರ್ ಸಂದರ್ಭವಿಲ್ಲದೆಪ್ರಾರಂಭ ವಹಿವಾಟು(); //ಹೊಸ ಉತ್ಪನ್ನವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿಉತ್ಪನ್ನ = ಡೈರೆಕ್ಟರಿಗಳು. ಸರಕುಗಳು. ಐಟಂ (); ಉತ್ಪನ್ನ. ಹೆಸರು = "ಹೋಲ್ ಪಂಚ್" ; ಉತ್ಪನ್ನ. ಬರೆಯಿರಿ (); //ಬೆಲೆ ಬರೆಯಿರಿರೆಕಾರ್ಡ್‌ಸೆಟ್ = ಇನ್ಫರ್ಮೇಷನ್ ರಿಜಿಸ್ಟರ್‌ಗಳು. ಬೆಲೆ. CreateRecordSet() ; ನ್ಯೂ ರೆಕಾರ್ಡ್ = ರೆಕಾರ್ಡ್ ಸೆಟ್. ಸೇರಿಸಿ (); ಹೊಸ ದಾಖಲೆ. ಅವಧಿ = ಪ್ರಸ್ತುತ ದಿನಾಂಕ() ; ಹೊಸ ದಾಖಲೆ. ಉತ್ಪನ್ನ = ಉತ್ಪನ್ನ. ಲಿಂಕ್; ಹೊಸ ದಾಖಲೆ. ಮೊತ್ತ = 100; ರೆಕಾರ್ಡ್ಸೆಟ್. ಬರೆಯಿರಿ (); ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ಕಾರ್ಯವಿಧಾನದ ಅಂತ್ಯ

ಈಗ ವಹಿವಾಟನ್ನು ಬ್ಲಾಕ್‌ನಲ್ಲಿ ಇಡೋಣ ಪ್ರಯತ್ನ ವಿನಾಯಿತಿ. ಹೆಚ್ಚಾಗಿ, ಡೈರೆಕ್ಟರಿ ಅಥವಾ ಮಾಹಿತಿ ನೋಂದಣಿಗೆ ಬರೆಯುವಾಗ ಮಾತ್ರ ದೋಷಗಳು ಸಂಭವಿಸಬಹುದು, ಆದ್ದರಿಂದ ಪ್ರಾಥಮಿಕ ತಯಾರಿಅದನ್ನು ವಹಿವಾಟಿನ ಹೊರಗೆ ತೆಗೆದುಕೊಳ್ಳೋಣ.

&ಆನ್ ಸರ್ವರ್ ಸಂದರ್ಭವಿಲ್ಲದೆಕಾರ್ಯವಿಧಾನ ರನ್ಟ್ರಾನ್ಸಕ್ಷನ್ ಆನ್ ಸರ್ವರ್() //ಹೊಸ ಉತ್ಪನ್ನವನ್ನು ರಚಿಸಿಉತ್ಪನ್ನ = ಡೈರೆಕ್ಟರಿಗಳು. ಸರಕುಗಳು. ಐಟಂ (); ಉತ್ಪನ್ನ. ಹೆಸರು = "ಹೋಲ್ ಪಂಚ್" ; //ಬೆಲೆಯೊಂದಿಗೆ ದಾಖಲೆಯನ್ನು ರಚಿಸಿರೆಕಾರ್ಡ್‌ಸೆಟ್ = ಇನ್ಫರ್ಮೇಷನ್ ರಿಜಿಸ್ಟರ್‌ಗಳು. ಬೆಲೆ. CreateRecordSet() ; ನ್ಯೂ ರೆಕಾರ್ಡ್ = ರೆಕಾರ್ಡ್ ಸೆಟ್. ಸೇರಿಸಿ (); ಹೊಸ ದಾಖಲೆ. ಅವಧಿ = ಪ್ರಸ್ತುತ ದಿನಾಂಕ() ; ಹೊಸ ದಾಖಲೆ. ಮೊತ್ತ = 100; //ಪ್ರಯತ್ನದಲ್ಲಿ ವ್ಯವಹಾರವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ಉತ್ಪನ್ನ. ಬರೆಯಿರಿ (); ಹೊಸ ದಾಖಲೆ. ಉತ್ಪನ್ನ = ಉತ್ಪನ್ನ. ಲಿಂಕ್; ರೆಕಾರ್ಡ್ಸೆಟ್. ಬರೆಯಿರಿ (); ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ವಿನಾಯಿತಿ ರದ್ದು ವಹಿವಾಟು() ; ಸಂದೇಶ = ಹೊಸ ಸಂದೇಶ ಬಳಕೆದಾರ; ಸಂದೇಶ. ಪಠ್ಯ = ; ಸಂದೇಶ. ವರದಿ ಮಾಡಲು() ; ಲಾಗ್ ನೋಂದಣಿ( "ಉತ್ಪನ್ನ ಮತ್ತು ಅದರ ಬೆಲೆಯನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡುವಾಗ ದೋಷ ಸಂಭವಿಸಿದೆ"); ಅಂತ್ಯ ಪ್ರಯತ್ನ ; ಕಾರ್ಯವಿಧಾನದ ಅಂತ್ಯ

ಏನು ಮಾಡಬಾರದು

ವಹಿವಾಟುಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪ್ರಾರಂಭಿಸುವವರಿಗೆ ಆಗಾಗ್ಗೆ ಈ ರೀತಿ ಮಾಡಲು ಬಯಕೆ ಇರುತ್ತದೆ

ಪ್ರಾರಂಭ ವಹಿವಾಟು(); ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); //ಆಪರೇಷನ್ ಬ್ಲಾಕ್ ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್() ; ವಿನಾಯಿತಿ ರದ್ದು ವಹಿವಾಟು() ; ಅಂತ್ಯ ಪ್ರಯತ್ನ ; ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); //ಆಪರೇಷನ್ ಬ್ಲಾಕ್ ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್() ; ವಿನಾಯಿತಿ ರದ್ದು ವಹಿವಾಟು() ; ಅಂತ್ಯ ಪ್ರಯತ್ನ ; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

ಅಥವಾ ಲೂಪ್‌ನಲ್ಲಿ

ಪ್ರಾರಂಭ ವಹಿವಾಟು(); ಡೇಟಾ ಅರೇ ಲೂಪ್‌ನಿಂದ ಪ್ರತಿ ಡೇಟಾಗೆ ವಹಿವಾಟು ಆರಂಭಿಸಲು ಪ್ರಯತ್ನ() ; ಡೇಟಾ. ಬರೆಯಿರಿ (); ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ವಿನಾಯಿತಿ ರದ್ದು ವಹಿವಾಟು() ; ಅಂತ್ಯ ಪ್ರಯತ್ನ ; ಎಂಡ್ಸೈಕಲ್; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

ಮೊದಲ ನೋಟದಲ್ಲಿ, ನಾವು 1C ಕಂಪನಿಯ ಶಿಫಾರಸುಗಳಿಗೆ ಅನುಗುಣವಾಗಿ ಎಲ್ಲವನ್ನೂ ಮಾಡಿದ್ದೇವೆ. ಆದರೆ ವಾಸ್ತವವೆಂದರೆ 1C ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ನೆಸ್ಟೆಡ್ ವಹಿವಾಟುಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಅಂದರೆ, ಸಂಪೂರ್ಣವಾಗಿ ತಾಂತ್ರಿಕವಾಗಿ, ಈ ರೀತಿ ಬರೆಯಲು ಸಾಧ್ಯವಿದೆ. ಆದರೆ ಅದೇ ಸಮಯದಲ್ಲಿ, ಎಲ್ಲಾ ನೆಸ್ಟೆಡ್ ವಹಿವಾಟುಗಳು ಹೊಸದನ್ನು ರೂಪಿಸುವುದಿಲ್ಲ, ಆದರೆ ಅದೇ ಉನ್ನತ ಮಟ್ಟದ ವಹಿವಾಟಿಗೆ ಸೇರಿವೆ. ಈ ರೀತಿಯಾಗಿ, ನೆಸ್ಟೆಡ್ ವಹಿವಾಟುಗಳಲ್ಲಿ ಒಂದು ವಿಫಲವಾದರೆ, ಮುಂದಿನ ನೆಸ್ಟೆಡ್ ವಹಿವಾಟನ್ನು ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಸಿಸ್ಟಮ್ ಈ ರೀತಿಯ ಸಂದೇಶವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ: "ಈ ವಹಿವಾಟಿನಲ್ಲಿ ಈಗಾಗಲೇ ದೋಷಗಳು ಸಂಭವಿಸಿವೆ!". ಇದನ್ನು ಉದಾಹರಣೆಯೊಂದಿಗೆ ಪ್ರದರ್ಶಿಸೋಣ. ನಾವು ಎರಡು ಸರಕುಗಳನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ನಿರ್ಧರಿಸಿದ್ದೇವೆ ಎಂದು ಹೇಳೋಣ, ಪ್ರತಿಯೊಂದೂ ಅದರ ಸ್ವಂತ ವಹಿವಾಟಿನಲ್ಲಿ. ಮತ್ತು ಈ ವಹಿವಾಟುಗಳನ್ನು ಮೂರನೆಯದಾಗಿ ಮಾಡೋಣ. ಮುಂದೆ, ವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು ಮೊದಲ ವಹಿವಾಟಿನಲ್ಲಿ ನಾವು ಕೃತಕವಾಗಿ ದೋಷವನ್ನು ಉಂಟುಮಾಡುತ್ತೇವೆ ವಿನಾಯಿತಿ ಹೆಚ್ಚಿಸಿ:

&ಆನ್ ಸರ್ವರ್ ಸಂದರ್ಭವಿಲ್ಲದೆಕಾರ್ಯವಿಧಾನ RunTransactionOnServer() StartTransaction() ; ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ಉತ್ಪನ್ನ = ಡೈರೆಕ್ಟರಿಗಳು. ಸರಕುಗಳು. ಐಟಂ (); ಉತ್ಪನ್ನ. ಹೆಸರು = "ಟೇಬಲ್" ; ಉತ್ಪನ್ನ. ಬರೆಯಿರಿ (); ವಿನಾಯಿತಿ ಹೆಚ್ಚಿಸಿ "ಉತ್ಪನ್ನ ನಮೂದು ದೋಷ."; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ವಿನಾಯಿತಿ ರದ್ದು ವಹಿವಾಟು() ; ಸಂದೇಶ = ಹೊಸ ಸಂದೇಶ ಬಳಕೆದಾರ; ಸಂದೇಶ. ಪಠ್ಯ = ErrorDescription() AttemptStartTransaction() ; ಉತ್ಪನ್ನ = ಡೈರೆಕ್ಟರಿಗಳು. ಸರಕುಗಳು. ಐಟಂ (); ಉತ್ಪನ್ನ. ಹೆಸರು = "ಕುರ್ಚಿ" ; ಉತ್ಪನ್ನ. ಬರೆಯಿರಿ (); ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ವಿನಾಯಿತಿ ರದ್ದು ವಹಿವಾಟು() ; ಸಂದೇಶ = ಹೊಸ ಸಂದೇಶ ಬಳಕೆದಾರ; ಸಂದೇಶ. ಪಠ್ಯ = ErrorDescription() ; ಸಂದೇಶ. ವರದಿ ಮಾಡಲು() ; ಅಂತ್ಯ ಪ್ರಯತ್ನ ; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ಕಾರ್ಯವಿಧಾನದ ಅಂತ್ಯ

ಈ ಕಾರ್ಯವಿಧಾನವನ್ನು ನಿರ್ವಹಿಸುವ ಪರಿಣಾಮವಾಗಿ, ನಾವು ಸಂದೇಶ ವಿಂಡೋದಲ್ಲಿ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ನೋಡುತ್ತೇವೆ:

(ExternalProcessing.TransactionsAtTrying.Form.Form.Form(20)): ಐಟಂ ಬರೆಯುವಲ್ಲಿ ದೋಷ. (ExternalProcessing.TransactionsAtTrying.Form.Form.Form(40)): ಸಂದರ್ಭ ವಿಧಾನಕ್ಕೆ ಕರೆ ಮಾಡುವಾಗ ದೋಷ (ಬರೆಯಿರಿ): ಈ ವಹಿವಾಟಿನಲ್ಲಿ ಈಗಾಗಲೇ ದೋಷಗಳು ಸಂಭವಿಸಿವೆ!

ಹೀಗಾಗಿ, 1C ನಲ್ಲಿ ನೆಸ್ಟೆಡ್ ವಹಿವಾಟುಗಳನ್ನು ಆಯೋಜಿಸುವುದು ಸಂಪೂರ್ಣವಾಗಿ ಅರ್ಥಹೀನವಾಗಿದೆ.

ಸಂಭವನೀಯ ಆಯ್ಕೆಗಳು

ಈಗ ನಾವು ಉತ್ಪನ್ನ ಮತ್ತು ಅದರ ಬೆಲೆಯನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿದ ಆಯ್ಕೆಗೆ ಹಿಂತಿರುಗಿ ನೋಡೋಣ. ವಹಿವಾಟು ನಡೆಸುವಾಗ ನಾವು ದೋಷವನ್ನು ಹೊಂದಿದ್ದರೆ, ಅದು ಯಾವ ಹಂತದಲ್ಲಿ ಸಂಭವಿಸಿದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಕಷ್ಟವಾಗುತ್ತದೆ - ಉತ್ಪನ್ನವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡುವಾಗ ಅಥವಾ ಬೆಲೆಯನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡುವಾಗ, ಎರಡೂ ಒಂದೇ ಪ್ರಯತ್ನದಲ್ಲಿ ಸಂಭವಿಸುತ್ತವೆ. ದೋಷವು ಎಲ್ಲಿ ಸಂಭವಿಸಿದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು, ನಾವು ಪ್ರತಿ ಬರವಣಿಗೆಯ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಅದರ ಸ್ವಂತ ಪ್ರಯತ್ನದಲ್ಲಿ ಸುತ್ತುವ ಅಗತ್ಯವಿದೆ ಮತ್ತು ನೆಸ್ಟೆಡ್ ವಹಿವಾಟುಗಳನ್ನು ತಪ್ಪಿಸಬೇಕು. ಇದನ್ನು ಮಾಡಲು, ನಾವು ಬೂಲಿಯನ್ ವೇರಿಯಬಲ್ ಅನ್ನು ಪರಿಚಯಿಸುತ್ತೇವೆ ನಿರಾಕರಣೆಮತ್ತು ಎಲ್ಲಾ ಕಾರ್ಯಾಚರಣೆಗಳ ಕೊನೆಯಲ್ಲಿ ಅದರ ಮೌಲ್ಯವನ್ನು ಅವಲಂಬಿಸಿ ನಾವು ವ್ಯವಹಾರವನ್ನು ಬದ್ಧಗೊಳಿಸುತ್ತೇವೆ ಅಥವಾ ರದ್ದುಗೊಳಿಸುತ್ತೇವೆ.

&ಆನ್ ಸರ್ವರ್ ಸಂದರ್ಭವಿಲ್ಲದೆಕಾರ್ಯವಿಧಾನ ರನ್ಟ್ರಾನ್ಸಕ್ಷನ್ ಆನ್ ಸರ್ವರ್() // ವ್ಯವಹಾರವನ್ನು ಪ್ರಾರಂಭಿಸಿನಿರಾಕರಿಸು = ತಪ್ಪು ; ಪ್ರಾರಂಭ ವಹಿವಾಟು(); // ಉತ್ಪನ್ನವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆಪ್ರಯತ್ನ ಉತ್ಪನ್ನ = ಡೈರೆಕ್ಟರಿಗಳು. ಸರಕುಗಳು. ಐಟಂ (); ಉತ್ಪನ್ನ. ಹೆಸರು = "ಹೋಲ್ ಪಂಚ್" ; ಉತ್ಪನ್ನ. ಬರೆಯಿರಿ (); ವಿನಾಯಿತಿ ವೈಫಲ್ಯ = ನಿಜ ; ಸಂದೇಶ = ಹೊಸ ಸಂದೇಶ ಬಳಕೆದಾರ; ಸಂದೇಶ. ಪಠ್ಯ = "ಉತ್ಪನ್ನ ರೆಕಾರ್ಡಿಂಗ್ ದೋಷ"; ಸಂದೇಶ. ವರದಿ ಮಾಡಲು() ; ಅಂತ್ಯ ಪ್ರಯತ್ನ ; // ಬೆಲೆಯನ್ನು ದಾಖಲಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ AttemptRecordSet = ಮಾಹಿತಿ ನೋಂದಣಿಗಳು. ಬೆಲೆ. CreateRecordSet() ; ನ್ಯೂ ರೆಕಾರ್ಡ್ = ರೆಕಾರ್ಡ್ ಸೆಟ್. ಸೇರಿಸಿ (); ಹೊಸ ದಾಖಲೆ. ಅವಧಿ = ಪ್ರಸ್ತುತ ದಿನಾಂಕ() ; ಹೊಸ ದಾಖಲೆ. ಉತ್ಪನ್ನ = ಉತ್ಪನ್ನ. ಲಿಂಕ್; ಹೊಸ ದಾಖಲೆ. ಮೊತ್ತ = 100; ರೆಕಾರ್ಡ್ಸೆಟ್. ಬರೆಯಿರಿ (); ವಿನಾಯಿತಿ ವೈಫಲ್ಯ = ನಿಜ ; ಸಂದೇಶ = ಹೊಸ ಸಂದೇಶ ಬಳಕೆದಾರ; ಸಂದೇಶ. ಪಠ್ಯ = "ಬೆಲೆ ರೆಕಾರ್ಡ್ ಮಾಡುವಾಗ ದೋಷ"; ಸಂದೇಶ. ವರದಿ ಮಾಡಲು() ; ಅಂತ್ಯ ಪ್ರಯತ್ನ ; // ವ್ಯವಹಾರವನ್ನು ಬದ್ಧಗೊಳಿಸಿ ಅಥವಾ ರದ್ದುಗೊಳಿಸಿವಿಫಲವಾಗದಿದ್ದರೆ ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್() ; ಬೇರೆ ರದ್ದು ವಹಿವಾಟು() ; EndIf ; ಕಾರ್ಯವಿಧಾನದ ಅಂತ್ಯ

ನಾವು ಲೂಪ್ನಲ್ಲಿ ಯಾವುದೇ ಡೇಟಾವನ್ನು ಪುನರಾವರ್ತಿಸಿದಾಗ ಮತ್ತು ಬರೆಯುವಾಗ ನಾವು ಅದೇ ಕೆಲಸವನ್ನು ಮಾಡಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಯಾವುದೇ ದೋಷಗಳಿದ್ದಲ್ಲಿ ನಾವು ಎಲ್ಲಾ ಡೇಟಾದ ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.

1C ತಜ್ಞರ ಪ್ರಮಾಣೀಕರಣದ ತಯಾರಿಯಲ್ಲಿ, ಎರಡು ಪ್ರಮುಖ ಮತ್ತು ಜಾಗತಿಕ ವಿಷಯಗಳ ಮುನ್ನಾದಿನದಂದು - ನಿರ್ಬಂಧಿಸುವುದು, ಮೇಲಿನ ಪರಿಕಲ್ಪನೆಗಳು ಅಸಾಧ್ಯವಾದ ಯಾವುದನ್ನಾದರೂ ನೋಡಲು ನಾನು ಬಯಸುತ್ತೇನೆ - DBMS ವಹಿವಾಟು.

ವ್ಯವಹಾರ- ತಾರ್ಕಿಕವಾಗಿ ಸಂಪರ್ಕಗೊಂಡ, ಅವಿಭಾಜ್ಯ ಕ್ರಮಗಳ ಅನುಕ್ರಮ. ವಹಿವಾಟನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪೂರ್ಣಗೊಳಿಸಬಹುದು ಅಥವಾ ಇಲ್ಲವೇ ಇಲ್ಲ. DBMS ನಲ್ಲಿ ವಹಿವಾಟು ನಡೆಸಲು, COMMIT ವಿಧಾನವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.

ವಹಿವಾಟಿನ ವಿಶಿಷ್ಟ ಉದಾಹರಣೆಯೆಂದರೆ ವರ್ಗಾವಣೆ ಹಣಒಂದು ಖಾತೆಯಿಂದ ಇನ್ನೊಂದಕ್ಕೆ:

  1. ವ್ಯವಹಾರವನ್ನು ಪ್ರಾರಂಭಿಸಿ;
  2. ಖಾತೆ ಸಂಖ್ಯೆ 123 ರಲ್ಲಿ ನಿಧಿಯ ಮೊತ್ತವನ್ನು ಓದಿ;
  3. ಖಾತೆಯ ಬಾಕಿ 123 ಅನ್ನು 100 ರೂಬಲ್ಸ್ಗಳಿಂದ ಕಡಿಮೆ ಮಾಡಿ;
  4. ಖಾತೆಯ ಬಾಕಿ ಸಂಖ್ಯೆ 123 ಉಳಿಸಿ;
  5. ಖಾತೆ ಸಂಖ್ಯೆ 321 ರಲ್ಲಿ ನಿಧಿಯ ಮೊತ್ತವನ್ನು ಓದಿ;
  6. ನಿಮ್ಮ ಸಮತೋಲನವನ್ನು 100 ರೂಬಲ್ಸ್ಗಳಿಂದ ಹೆಚ್ಚಿಸಿ;
  7. ಖಾತೆ 321 ರಲ್ಲಿ ಹೊಸ ಮೊತ್ತದ ಹಣವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿ;
  8. ವಹಿವಾಟು ಮಾಡಿ.

1C ನಲ್ಲಿ 267 ವೀಡಿಯೊ ಪಾಠಗಳನ್ನು ಉಚಿತವಾಗಿ ಪಡೆಯಿರಿ:

ನಾವು ನೋಡುವಂತೆ, ವ್ಯವಹಾರವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪೂರ್ಣಗೊಳಿಸದಿದ್ದರೆ, ಅದಕ್ಕೆ ಯಾವುದೇ ಅರ್ಥವಿಲ್ಲ.

ವಹಿವಾಟಿನ DBMS ಗಾಗಿ ಪ್ರಮುಖ ಅವಶ್ಯಕತೆಗಳು (ACID).

ವಹಿವಾಟುಗಳು ಮತ್ತು ವಹಿವಾಟಿನ DBMS ಗಳ ಅವಶ್ಯಕತೆಗಳ ಸಾಮಾನ್ಯ ಸೆಟ್‌ಗಳಲ್ಲಿ ಒಂದು ACID (ಪರಮಾಣು, ಸ್ಥಿರತೆ, ಪ್ರತ್ಯೇಕತೆ, ಬಾಳಿಕೆ) ಸೆಟ್ ಆಗಿದೆ. ಯಾವುದೇ ವಹಿವಾಟು ಹೊಂದಿರಬೇಕಾದ ಗುಣಲಕ್ಷಣಗಳು ಇವು:

  • ಪರಮಾಣುತ್ವ- ಯಾವುದೇ ವ್ಯವಹಾರವನ್ನು ಭಾಗಶಃ ದಾಖಲಿಸಬಾರದು;
  • ಸ್ಥಿರತೆ- ವಹಿವಾಟು ಪ್ರಾರಂಭವಾಗುವ ಮೊದಲು ವ್ಯವಸ್ಥೆಯು ಸ್ಥಿರ ಸ್ಥಿತಿಯಲ್ಲಿದೆ ಮತ್ತು ವಹಿವಾಟು ಪೂರ್ಣಗೊಂಡ ನಂತರ ಸ್ಥಿರ ಸ್ಥಿತಿಯಲ್ಲಿ ಉಳಿಯಬೇಕು;
  • ಪ್ರತ್ಯೇಕತೆ- ವಹಿವಾಟಿನ ಮರಣದಂಡನೆಯ ಸಮಯದಲ್ಲಿ, ಸಮಾನಾಂತರ ವಹಿವಾಟುಗಳು ಅದರ ಫಲಿತಾಂಶದ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಾರದು;
  • ಬಾಳಿಕೆ- ವೈಫಲ್ಯದ ಸಂದರ್ಭದಲ್ಲಿ, ಯಶಸ್ವಿಯಾಗಿ ಪೂರ್ಣಗೊಂಡ ವಹಿವಾಟಿನಿಂದ ಮಾಡಿದ ಬದಲಾವಣೆಗಳು ಸಿಸ್ಟಮ್ ಕಾರ್ಯಾಚರಣೆಗೆ ಮರಳಿದ ನಂತರ ಉಳಿಸಬೇಕು.

1C ನಲ್ಲಿನ ವಹಿವಾಟುಗಳು

1C 8.3 ಮತ್ತು 8.2 ರಲ್ಲಿನ ವಹಿವಾಟುಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲಾಗಿದೆ ಮತ್ತು ಡೆವಲಪರ್‌ಗಳಿಂದ ವಿವರಿಸಲಾಗಿದೆ.

ವಹಿವಾಟು ಸಕ್ರಿಯವಾಗಿದೆಯೇ ಎಂಬುದನ್ನು ಕಂಡುಹಿಡಿಯಲು ನೀವು TransactionActive() ವಿಧಾನವನ್ನು ಬಳಸಬಹುದು.

ಸ್ವಯಂಚಾಲಿತ ವಹಿವಾಟಿನ ಉದಾಹರಣೆಯೆಂದರೆ ಡಾಕ್ಯುಮೆಂಟ್ ಪೋಸ್ಟ್ ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದು, ಡೇಟಾಬೇಸ್‌ಗೆ ಡೈರೆಕ್ಟರಿ ಐಟಂ ಅನ್ನು ಬರೆಯುವುದು, ಮಾಹಿತಿ ರಿಜಿಸ್ಟರ್ ದಾಖಲೆಗಳ ಸೆಟ್ ಅನ್ನು ಬರೆಯುವುದು ಇತ್ಯಾದಿ.

ಶೀರ್ಷಿಕೆ ಆಕರ್ಷಕವಾಗಿ ಬಂದಿತು, ಆದರೆ ಅದು ಕುದಿಯಿತು. ನಾವು 1C ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇವೆ ಎಂದು ನಾನು ಈಗಿನಿಂದಲೇ ಹೇಳುತ್ತೇನೆ. ಆತ್ಮೀಯ 1C ಬಳಕೆದಾರರೇ, ವಹಿವಾಟುಗಳೊಂದಿಗೆ ಹೇಗೆ ಕೆಲಸ ಮಾಡಬೇಕೆಂದು ನಿಮಗೆ ತಿಳಿದಿಲ್ಲ ಮತ್ತು ವಿನಾಯಿತಿಗಳು ಏನೆಂದು ಅರ್ಥವಾಗುತ್ತಿಲ್ಲ. ನೋಡಿಕೊಂಡು ಈ ತೀರ್ಮಾನಕ್ಕೆ ಬಂದಿದ್ದೇನೆ ಒಂದು ದೊಡ್ಡ ಸಂಖ್ಯೆಯ 1C ಕೋಡ್, ದೇಶೀಯ ಉದ್ಯಮದ ಕಾಡುಗಳಲ್ಲಿ ಜನಿಸಿದರು. IN ವಿಶಿಷ್ಟ ಸಂರಚನೆಗಳುಇದೆಲ್ಲವೂ ಸಾಕಷ್ಟು ಉತ್ತಮವಾಗಿದೆ, ಆದರೆ ಕಸ್ಟಮ್ ಕೋಡ್‌ನ ಭಯಾನಕ ಮೊತ್ತವನ್ನು ಡೇಟಾಬೇಸ್ ದೃಷ್ಟಿಕೋನದಿಂದ ಅಸಮರ್ಥವಾಗಿ ಬರೆಯಲಾಗಿದೆ. "ಈ ವಹಿವಾಟು ಈಗಾಗಲೇ ದೋಷಗಳನ್ನು ಎದುರಿಸಿದೆ" ಎಂಬ ದೋಷವನ್ನು ನೀವು ಎಂದಾದರೂ ನೋಡಿದ್ದೀರಾ? ಹೌದು ಎಂದಾದರೆ, ಲೇಖನದ ಶೀರ್ಷಿಕೆ ನಿಮಗೂ ಅನ್ವಯಿಸುತ್ತದೆ. 1C ಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ವಹಿವಾಟುಗಳು ಯಾವುವು ಮತ್ತು ಅವುಗಳನ್ನು ಸರಿಯಾಗಿ ನಿರ್ವಹಿಸುವುದು ಹೇಗೆ ಎಂಬುದನ್ನು ಅಂತಿಮವಾಗಿ ಲೆಕ್ಕಾಚಾರ ಮಾಡೋಣ.

ನಾವು ಅಲಾರಾಂ ಅನ್ನು ಏಕೆ ಧ್ವನಿಸಬೇಕು?

ಮೊದಲಿಗೆ, "ಈ ವಹಿವಾಟಿನಲ್ಲಿ ಈಗಾಗಲೇ ದೋಷಗಳು ಸಂಭವಿಸಿವೆ" ದೋಷ ಏನೆಂದು ಲೆಕ್ಕಾಚಾರ ಮಾಡೋಣ. ಇದು ವಾಸ್ತವವಾಗಿ, ಅತ್ಯಂತ ಸರಳವಾದ ವಿಷಯವಾಗಿದೆ: ನೀವು ಈಗಾಗಲೇ ರೋಲ್ ಬ್ಯಾಕ್ (ರದ್ದಾದ) ವಹಿವಾಟಿನೊಳಗೆ ಡೇಟಾಬೇಸ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದೀರಿ. ಉದಾಹರಣೆಗೆ, ಎಲ್ಲೋ ರದ್ದು ವಹಿವಾಟು ವಿಧಾನವನ್ನು ಕರೆಯಲಾಗಿದೆ ಮತ್ತು ನೀವು ಅದನ್ನು ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದೀರಿ.


ಅದು ಏಕೆ ಕೆಟ್ಟದು? ಏಕೆಂದರೆ ಈ ದೋಷಸಮಸ್ಯೆ ಎಲ್ಲಿ ಸಂಭವಿಸಿದೆ ಎಂಬುದರ ಕುರಿತು ನಿಮಗೆ ಏನನ್ನೂ ಹೇಳುವುದಿಲ್ಲ. ಬೆಂಬಲವು ಬಳಕೆದಾರರಿಂದ ಅಂತಹ ಪಠ್ಯದೊಂದಿಗೆ ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸಿದಾಗ ಮತ್ತು ವಿಶೇಷವಾಗಿ ಸರ್ವರ್ ಕೋಡ್, ಒಬ್ಬ ವ್ಯಕ್ತಿಯು ಸಂವಾದಾತ್ಮಕವಾಗಿ ಕೆಲಸ ಮಾಡದಿರುವುದು ... ನಾನು "ನಿರ್ಣಾಯಕ ದೋಷ" ಎಂದು ಬರೆಯಲು ಬಯಸಿದ್ದೆ, ಆದರೆ ಇದು ಇನ್ನು ಮುಂದೆ ಯಾರೂ ಗಮನ ಹರಿಸದ ಬಜ್‌ವರ್ಡ್ ಎಂದು ನಾನು ಭಾವಿಸಿದೆ ... ಇದು ಕತ್ತೆ. ಇದು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ದೋಷ. ಇದು ಯಾದೃಚ್ಛಿಕ ಗ್ಲಿಚ್ ಅಲ್ಲ. ಇದು ತಕ್ಷಣ ಸರಿಪಡಿಸಬೇಕಾದ ದೋಷವಾಗಿದೆ. ಏಕೆಂದರೆ ನಿಮ್ಮ ಹಿನ್ನೆಲೆ ಸರ್ವರ್ ಪ್ರಕ್ರಿಯೆಗಳು ರಾತ್ರಿಯಲ್ಲಿ ಕಡಿಮೆಯಾದಾಗ ಮತ್ತು ಕಂಪನಿಯು ತ್ವರಿತವಾಗಿ ಹಣವನ್ನು ಕಳೆದುಕೊಳ್ಳಲು ಪ್ರಾರಂಭಿಸಿದಾಗ, "ಈ ವಹಿವಾಟಿನಲ್ಲಿ ಈಗಾಗಲೇ ದೋಷಗಳು ಸಂಭವಿಸಿವೆ" ಎಂಬುದು ನೀವು ಡಯಾಗ್ನೋಸ್ಟಿಕ್ ಲಾಗ್‌ಗಳಲ್ಲಿ ನೋಡಲು ಬಯಸುವ ಕೊನೆಯ ವಿಷಯವಾಗಿದೆ.


ಸಹಜವಾಗಿ, ಸರ್ವರ್‌ನ ತಾಂತ್ರಿಕ ಲಾಗ್ (ಅದನ್ನು ಉತ್ಪಾದನೆಯಲ್ಲಿ ಆನ್ ಮಾಡಲಾಗಿದೆ, ಸರಿ?) ಹೇಗಾದರೂ ಸಮಸ್ಯೆಯನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಸಹಾಯ ಮಾಡುವ ಸಾಧ್ಯತೆಯಿದೆ, ಆದರೆ ಇದೀಗ ನನ್ನ ತಲೆಯ ಮೇಲ್ಭಾಗದಿಂದ ಆಯ್ಕೆಯನ್ನು ಯೋಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ - ಎಷ್ಟು ನಿಖರವಾಗಿ ಅದರಲ್ಲಿ ಈ ದೋಷದ ನಿಜವಾದ ಕಾರಣವನ್ನು ಕಂಡುಹಿಡಿಯಲು. ಆದರೆ ನಿಜವಾದ ಕಾರಣ ಒಂದು - ಪ್ರೋಗ್ರಾಮರ್ ವಾಸ್ಯಾ ವಹಿವಾಟಿನೊಳಗೆ ವಿನಾಯಿತಿಯನ್ನು ಪಡೆದರು ಮತ್ತು ಒಮ್ಮೆ ಕೆಟ್ಟ ಆಲೋಚನೆಯಲ್ಲ ಎಂದು ನಿರ್ಧರಿಸಿದರು, "ಸುಮ್ಮನೆ ಯೋಚಿಸಿ, ಇದು ತಪ್ಪು, ನಾವು ಮುಂದುವರಿಯೋಣ."

1C ಯಲ್ಲಿನ ವಹಿವಾಟುಗಳು ಯಾವುವು

ಪ್ರಾಥಮಿಕ ಸತ್ಯಗಳ ಬಗ್ಗೆ ಬರೆಯಲು ಇದು ವಿಚಿತ್ರವಾಗಿದೆ, ಆದರೆ ಸ್ಪಷ್ಟವಾಗಿ ಸ್ವಲ್ಪ ಅಗತ್ಯವಾಗಿರುತ್ತದೆ. 1C ಯಲ್ಲಿನ ವಹಿವಾಟುಗಳು DBMS ನಲ್ಲಿನ ವಹಿವಾಟುಗಳಂತೆಯೇ ಇರುತ್ತವೆ. ಇವು ಕೆಲವು ವಿಶೇಷ "1C" ವಹಿವಾಟುಗಳಲ್ಲ, ಇವು DBMS ನಲ್ಲಿನ ವಹಿವಾಟುಗಳಾಗಿವೆ. ವಹಿವಾಟಿನ ಸಾಮಾನ್ಯ ಕಲ್ಪನೆಯ ಪ್ರಕಾರ, ಅವುಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು ಅಥವಾ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ. ವಹಿವಾಟಿನೊಳಗೆ ಮಾಡಿದ ಡೇಟಾಬೇಸ್ ಕೋಷ್ಟಕಗಳಲ್ಲಿನ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ತಕ್ಷಣವೇ ರದ್ದುಗೊಳಿಸಬಹುದು, ಏನೂ ಆಗಿಲ್ಲ ಎಂಬಂತೆ.


ಮುಂದೆ, 1C ನೆಸ್ಟೆಡ್ ವಹಿವಾಟುಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ ಎಂದು ನೀವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ವಾಸ್ತವವಾಗಿ, ಅವರು "1C ನಲ್ಲಿ" ಬೆಂಬಲಿಸುವುದಿಲ್ಲ, ಆದರೆ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. 1C ಕೆಲಸ ಮಾಡಬಹುದಾದ ಕನಿಷ್ಠ DBMS ಗಳು. ನೆಸ್ಟೆಡ್ ವಹಿವಾಟುಗಳು, ಉದಾಹರಣೆಗೆ, MS SQL ಮತ್ತು Postgres ನಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ. StartTransaction ಗೆ ಪ್ರತಿ "ನೆಸ್ಟೆಡ್" ಕರೆ ಕೇವಲ ವಹಿವಾಟು ಕೌಂಟರ್ ಅನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ ಮತ್ತು "CommitTransaction" ಗೆ ಪ್ರತಿ ಕರೆಯು ಈ ಕೌಂಟರ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಈ ನಡವಳಿಕೆಯನ್ನು ಅನೇಕ ಪುಸ್ತಕಗಳು ಮತ್ತು ಲೇಖನಗಳಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ, ಆದರೆ ಈ ನಡವಳಿಕೆಯ ತೀರ್ಮಾನಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಸಾಕಷ್ಟು ವಿಶ್ಲೇಷಿಸಲಾಗಿಲ್ಲ. ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಹೇಳುವುದಾದರೆ, SQL ನಲ್ಲಿ ಕರೆಯಲ್ಪಡುವ ಒಂದು ಇರುತ್ತದೆ. ಸೇವ್ಪಾಯಿಂಟ್, ಆದರೆ 1C ಅವುಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ, ಮತ್ತು ಈ ವಿಷಯವು ಸಾಕಷ್ಟು ನಿರ್ದಿಷ್ಟವಾಗಿದೆ.



ಕಾರ್ಯವಿಧಾನವು ತುಂಬಾ ಉಪಯುಕ್ತ ಮತ್ತು ಪ್ರಮುಖ ಕೋಡ್ (ಡೈರೆಕ್ಟರಿ ಲಿಂಕ್‌ಗಳ ಪಟ್ಟಿ) ವಹಿವಾಟು ಪ್ರಾರಂಭಿಸಿ (); ಡೈರೆಕ್ಟರಿ ಲಿಂಕ್‌ಗಳ ಪಟ್ಟಿಯಿಂದ ಪ್ರತಿ ಲಿಂಕ್‌ಗಾಗಿ ಲೂಪ್ ಡೈರೆಕ್ಟರಿ ಆಬ್ಜೆಕ್ಟ್ = Link.GetObject(); ಡೈರೆಕ್ಟರಿ Object.SomeField = "ನನ್ನನ್ನು ಪ್ರೋಗ್ರಾಂ ಕೋಡ್‌ನಿಂದ ಬದಲಾಯಿಸಲಾಗಿದೆ"; ಡೈರೆಕ್ಟರಿ ವಸ್ತು.ಬರೆಯಿರಿ(); ಎಂಡ್ಸೈಕಲ್; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ಕಾರ್ಯವಿಧಾನದ ಅಂತ್ಯ

ಇಂಗ್ಲಿಷ್‌ನಲ್ಲಿ ಕೋಡ್

ನಿಜವಾಗಿಯೂ ಅಲ್ಲ. ಪವಿತ್ರ ಯುದ್ಧಗಳು ಮತ್ತು ಪವಿತ್ರ ಯುದ್ಧಗಳ ಅಭಿಮಾನಿಗಳನ್ನು ರಂಜಿಸಲು ಇಂಗ್ಲಿಷ್‌ನಲ್ಲಿ ಉದಾಹರಣೆಗಳನ್ನು ನಕಲು ಮಾಡಲು ನಾನು ಸಂಪೂರ್ಣವಾಗಿ ಬಯಸುವುದಿಲ್ಲ.


ನೀವು ಬಹುಶಃ ಈ ರೀತಿಯ ಕೋಡ್ ಅನ್ನು ಬರೆಯುತ್ತೀರಿ, ಸರಿ? ಒದಗಿಸಿದ ಕೋಡ್ ಉದಾಹರಣೆಯು ದೋಷಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಕನಿಷ್ಠ ಮೂರು. ಯಾವುದು ಗೊತ್ತಾ? ಮೊದಲನೆಯದರ ಬಗ್ಗೆ ನಾನು ಈಗಿನಿಂದಲೇ ಹೇಳುತ್ತೇನೆ; ಇದು ಆಬ್ಜೆಕ್ಟ್ ಲಾಕ್‌ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದೆ ಮತ್ತು ವಹಿವಾಟುಗಳಿಗೆ ನೇರವಾಗಿ ಸಂಬಂಧಿಸಿಲ್ಲ. ಎರಡನೇ ಬಗ್ಗೆ - ಸ್ವಲ್ಪ ನಂತರ. ಮೂರನೆಯ ದೋಷವು ಡೆಡ್‌ಲಾಕ್ ಆಗಿದೆ, ಇದು ಈ ಕೋಡ್‌ನ ಸಮಾನಾಂತರ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯ ಸಮಯದಲ್ಲಿ ಸಂಭವಿಸುತ್ತದೆ, ಆದರೆ ಇದು ಪ್ರತ್ಯೇಕ ಲೇಖನಕ್ಕೆ ಒಂದು ವಿಷಯವಾಗಿದೆ; ಕೋಡ್ ಅನ್ನು ಸಂಕೀರ್ಣಗೊಳಿಸದಂತೆ ನಾವು ಈಗ ಅದನ್ನು ಪರಿಗಣಿಸುವುದಿಲ್ಲ. ಕೀವರ್ಡ್ಗೂಗ್ಲಿಂಗ್‌ಗಾಗಿ: ಡೆಡ್ಲಾಕ್ ನಿಯಂತ್ರಿತ ಬೀಗಗಳು.


ಕೋಡ್ ಸರಳವಾಗಿದೆ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ನಿಮ್ಮ 1C ಸಿಸ್ಟಂಗಳಲ್ಲಿ ಸರಳವಾಗಿ ಬಹಳಷ್ಟು ಇದೆ. ಮತ್ತು ಇದು ಏಕಕಾಲದಲ್ಲಿ ಕನಿಷ್ಠ 3 ದೋಷಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ನಿಮ್ಮ 1C ಪ್ರೋಗ್ರಾಮರ್‌ಗಳು ಬರೆದ ವಹಿವಾಟುಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ಎಷ್ಟು ದೋಷಗಳಿವೆ ಎಂದು ನಿಮ್ಮ ಬಿಡುವಿನ ವೇಳೆಯಲ್ಲಿ ಯೋಚಿಸಿ :)

ವಸ್ತುವಿನ ಬೀಗಗಳು

ಆದ್ದರಿಂದ, ಮೊದಲ ತಪ್ಪು. 1C ಯಲ್ಲಿ ಆಬ್ಜೆಕ್ಟ್ ಲಾಕ್‌ಗಳಿವೆ, ಇದನ್ನು "ಆಶಾವಾದಿ" ಮತ್ತು "ನಿರಾಶಾವಾದಿ" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಈ ಪದವನ್ನು ಯಾರು ಸೃಷ್ಟಿಸಿದ್ದಾರೆಂದು ನನಗೆ ತಿಳಿದಿಲ್ಲ, ನಾನು ಅವನನ್ನು ಕೊಲ್ಲುತ್ತಿದ್ದೆ :). ಅವುಗಳಲ್ಲಿ ಯಾವುದು ಯಾವುದಕ್ಕೆ ಕಾರಣವಾಗಿದೆ ಎಂಬುದನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳುವುದು ಸಂಪೂರ್ಣವಾಗಿ ಅಸಾಧ್ಯ. ಅವುಗಳನ್ನು ವಿವರವಾಗಿ ಮತ್ತು ಇತರ ಸಾಮಾನ್ಯ ಐಟಿ ಸಾಹಿತ್ಯದಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ.


ಸಮಸ್ಯೆಯ ಮೂಲತತ್ವವೆಂದರೆ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಕೋಡ್ ಉದಾಹರಣೆಯಲ್ಲಿ, ಡೇಟಾಬೇಸ್ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ, ಆದರೆ ಇನ್ನೊಂದು ಸೆಷನ್‌ನಲ್ಲಿ ಸಂವಾದಾತ್ಮಕ ಬಳಕೆದಾರ (ಅಥವಾ ನೆರೆಯ ಹಿನ್ನೆಲೆ ಥ್ರೆಡ್) ಇರಬಹುದು ಅವರು ಈ ವಸ್ತುವನ್ನು ಸಹ ಬದಲಾಯಿಸುತ್ತಾರೆ. ಇಲ್ಲಿ, ನಿಮ್ಮಲ್ಲಿ ಒಬ್ಬರು "ಪ್ರವೇಶವನ್ನು ಮಾರ್ಪಡಿಸಲಾಗಿದೆ ಅಥವಾ ಅಳಿಸಲಾಗಿದೆ" ಎಂಬ ದೋಷವನ್ನು ಸ್ವೀಕರಿಸಬಹುದು. ಇದು ಸಂವಾದಾತ್ಮಕ ಸೆಶನ್‌ನಲ್ಲಿ ಸಂಭವಿಸಿದಲ್ಲಿ, ಬಳಕೆದಾರರು ತಮ್ಮ ಬುಡವನ್ನು ಸ್ಕ್ರಾಚ್ ಮಾಡುತ್ತಾರೆ, ಪ್ರತಿಜ್ಞೆ ಮಾಡುತ್ತಾರೆ ಮತ್ತು ಫಾರ್ಮ್ ಅನ್ನು ಪುನಃ ತೆರೆಯಲು ಪ್ರಯತ್ನಿಸುತ್ತಾರೆ. ಇದು ಹಿನ್ನೆಲೆ ಥ್ರೆಡ್‌ನಲ್ಲಿ ಸಂಭವಿಸಿದಲ್ಲಿ, ನೀವು ಅದನ್ನು ಲಾಗ್‌ಗಳಲ್ಲಿ ಹುಡುಕಬೇಕಾಗುತ್ತದೆ. ಮತ್ತು ಲಾಗ್‌ಬುಕ್, ನಿಮಗೆ ತಿಳಿದಿರುವಂತೆ, ನಿಧಾನವಾಗಿದೆ, ಮತ್ತು ನಮ್ಮ ಉದ್ಯಮದಲ್ಲಿ ಕೆಲವೇ ಜನರು 1C ಲಾಗ್‌ಗಳಿಗಾಗಿ ELK ಸ್ಟಾಕ್ ಅನ್ನು ಹೊಂದಿಸುತ್ತಾರೆ... (ನಾವು, ಇತರರನ್ನು ಹೊಂದಿಸಲು ಮತ್ತು ಹೊಂದಿಸಲು ಸಹಾಯ ಮಾಡುವವರಲ್ಲಿ ಸೇರಿದ್ದೇವೆ :) )


ಸಂಕ್ಷಿಪ್ತವಾಗಿ, ಇದು ಕಿರಿಕಿರಿ ತಪ್ಪು ಮತ್ತು ಅದನ್ನು ಹೊಂದಿರದಿರುವುದು ಉತ್ತಮ. ಆದ್ದರಿಂದ, ಅಭಿವೃದ್ಧಿಯ ಮಾನದಂಡಗಳು ವಸ್ತುಗಳನ್ನು ಬದಲಾಯಿಸುವ ಮೊದಲು, "ಅನ್ನು ಬಳಸಿಕೊಂಡು ಆಬ್ಜೆಕ್ಟ್ ಲಾಕ್ ಅನ್ನು ಇರಿಸುವ ಅವಶ್ಯಕತೆಯಿದೆ ಎಂದು ಸ್ಪಷ್ಟವಾಗಿ ಹೇಳುತ್ತದೆ. ಡೈರೆಕ್ಟರಿ ಆಬ್ಜೆಕ್ಟ್. ಲಾಕ್()". ನಂತರ ಏಕಕಾಲೀನ ಅಧಿವೇಶನ (ಇದನ್ನು ಸಹ ಮಾಡಬೇಕು) ನವೀಕರಣ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ ಮತ್ತು ನಿರೀಕ್ಷಿತ, ನಿಯಂತ್ರಿತ ವೈಫಲ್ಯವನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ.

ಮತ್ತು ಈಗ ವಹಿವಾಟುಗಳ ಬಗ್ಗೆ

ನಾವು ಮೊದಲ ತಪ್ಪನ್ನು ನಿಭಾಯಿಸಿದ್ದೇವೆ, ಎರಡನೆಯದಕ್ಕೆ ಹೋಗೋಣ.


ಈ ವಿಧಾನದಲ್ಲಿ ನೀವು ವಿನಾಯಿತಿ ಪರಿಶೀಲನೆಯನ್ನು ಒದಗಿಸದಿದ್ದರೆ, ಒಂದು ವಿನಾಯಿತಿ (ಉದಾಹರಣೆಗೆ, "ಬರೆಯಿರಿ()" ವಿಧಾನದಲ್ಲಿ ಬಹಳ ಸಾಧ್ಯತೆ) ನಿಮ್ಮನ್ನು ಹೊರಹಾಕುತ್ತದೆ ಈ ವಿಧಾನ ವಹಿವಾಟನ್ನು ಪೂರ್ಣಗೊಳಿಸದೆ. "ಬರೆಯಿರಿ" ವಿಧಾನದಿಂದ ಒಂದು ವಿನಾಯಿತಿಯನ್ನು ವಿವಿಧ ಕಾರಣಗಳಿಗಾಗಿ ಎಸೆಯಬಹುದು, ಉದಾಹರಣೆಗೆ, ವ್ಯವಹಾರ ತರ್ಕದಲ್ಲಿ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ ಪರಿಶೀಲನೆಗಳನ್ನು ಪ್ರಚೋದಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ಮೇಲೆ ತಿಳಿಸಿದ ವಸ್ತು ಲಾಕ್ ಸಂಭವಿಸುತ್ತದೆ. ಹೇಗಾದರೂ, ಎರಡನೇ ದೋಷವು ಹೇಳುತ್ತದೆ: ವಹಿವಾಟನ್ನು ಪ್ರಾರಂಭಿಸಿದ ಕೋಡ್ ಅದರ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗೆ ಜವಾಬ್ದಾರನಾಗಿರುವುದಿಲ್ಲ.



ನಾನು ಈ ಸಮಸ್ಯೆಯನ್ನು ನಿಖರವಾಗಿ ಏನು ಕರೆಯುತ್ತೇನೆ. SonarQube ಆಧಾರಿತ ನಮ್ಮ ಸ್ಥಿರ 1C ಕೋಡ್ ವಿಶ್ಲೇಷಕದಲ್ಲಿ, ನಾವು ಅಂತಹ ರೋಗನಿರ್ಣಯದಲ್ಲಿ ಪ್ರತ್ಯೇಕವಾಗಿ ನಿರ್ಮಿಸಿದ್ದೇವೆ. ಈಗ ನಾನು ಅದರ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೇನೆ ಮತ್ತು 1C ಪ್ರೋಗ್ರಾಮರ್‌ಗಳ ಕಲ್ಪನೆ, ಅವರ ಕೋಡ್ ನನಗೆ ವಿಶ್ಲೇಷಣೆಗಾಗಿ ಬರುತ್ತದೆ, ಕೆಲವೊಮ್ಮೆ ನನಗೆ ಆಘಾತ ಮತ್ತು ವಿಸ್ಮಯವನ್ನು ನೀಡುತ್ತದೆ ...


ಏಕೆ? ಏಕೆಂದರೆ 90% ಪ್ರಕರಣಗಳಲ್ಲಿ ವಹಿವಾಟಿನ ಒಳಗೆ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಎಸೆದ ವಿನಾಯಿತಿಯು ಈ ವಹಿವಾಟನ್ನು ಬದ್ಧಗೊಳಿಸಲು ಅನುಮತಿಸುವುದಿಲ್ಲ ಮತ್ತು ದೋಷಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್‌ನಿಂದ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಕೋಡ್ ಮಟ್ಟಕ್ಕೆ ಹಿಂತಿರುಗಿದ ನಂತರವೇ 1C ಅಪೂರ್ಣ ವಹಿವಾಟನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ನೀವು 1C ಕೋಡ್ ಮಟ್ಟದಲ್ಲಿ ಇರುವವರೆಗೆ, ವಹಿವಾಟು ಸಕ್ರಿಯವಾಗಿರುತ್ತದೆ.


ಕರೆ ಸ್ಟಾಕ್‌ನಲ್ಲಿ ಒಂದು ಹಂತಕ್ಕೆ ಹೋಗೋಣ:


ಕಾರ್ಯವಿಧಾನ ಪ್ರಮುಖ ಕೋಡ್() LinkList = GetLinkListWhere(); ಬಹಳ ಉಪಯುಕ್ತ ಮತ್ತು ಪ್ರಮುಖ ಕೋಡ್ (ಲಿಂಕ್ಲಿಸ್ಟ್); ಕಾರ್ಯವಿಧಾನದ ಅಂತ್ಯ

ಏನಾಗುತ್ತದೆ ನೋಡಿ. ನಮ್ಮ ಸಮಸ್ಯಾತ್ಮಕ ವಿಧಾನವನ್ನು ಎಲ್ಲೋ ಹೊರಗಿನಿಂದ ಕರೆಯಲಾಗುತ್ತದೆ, ಸ್ಟಾಕ್ ಅನ್ನು ಮೇಲಕ್ಕೆತ್ತಿ. ಈ ವಿಧಾನದ ಮಟ್ಟದಲ್ಲಿ, ಡೆವಲಪರ್‌ಗೆ ತುಂಬಾ ಉಪಯುಕ್ತ ಮತ್ತು ಪ್ರಮುಖ ಕೋಡ್ ವಿಧಾನದಲ್ಲಿ ಯಾವುದೇ ವಹಿವಾಟುಗಳು ನಡೆಯುತ್ತವೆಯೇ ಅಥವಾ ಇಲ್ಲವೇ ಎಂಬ ಕಲ್ಪನೆಯಿಲ್ಲ. ಮತ್ತು ಇದ್ದರೆ, ಅವೆಲ್ಲವೂ ಪೂರ್ಣಗೊಳ್ಳುತ್ತವೆಯೇ ... ನಾವೆಲ್ಲರೂ ಶಾಂತಿ ಮತ್ತು ಸುತ್ತುವರಿಯುವಿಕೆಗಾಗಿ ಇಲ್ಲಿದ್ದೇವೆ, ಸರಿ? "ಪ್ರಮುಖ ಕೋಡ್" ವಿಧಾನದ ಲೇಖಕನು ತಾನು ಕರೆಯುವ ವಿಧಾನದೊಳಗೆ ನಿಖರವಾಗಿ ಏನಾಗುತ್ತದೆ ಎಂಬುದರ ಕುರಿತು ಯೋಚಿಸಬಾರದು. ಅದೇ ವ್ಯವಹಾರವನ್ನು ತಪ್ಪಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗಿದೆ. ಪರಿಣಾಮವಾಗಿ, ವಹಿವಾಟಿನ ಒಳಗಿನಿಂದ ವಿನಾಯಿತಿಯನ್ನು ಎಸೆದ ನಂತರ ಡೇಟಾಬೇಸ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಪ್ರಯತ್ನವು ಈ ಕೆಳಗಿನವುಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು: "ಈ ವಹಿವಾಟಿನಲ್ಲಿ ಬ್ಲಾ ಬ್ಲಾ..."

ವಿಧಾನಗಳಾದ್ಯಂತ ವಹಿವಾಟುಗಳನ್ನು ಹರಡುವುದು

"ವ್ಯವಹಾರ-ಸುರಕ್ಷಿತ" ಕೋಡ್‌ನ ಎರಡನೇ ನಿಯಮ: ವಿಧಾನದ ಪ್ರಾರಂಭದಲ್ಲಿ ಮತ್ತು ಅದರ ಕೊನೆಯಲ್ಲಿ ವಹಿವಾಟಿನ ಉಲ್ಲೇಖ ಎಣಿಕೆಯು ಒಂದೇ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿರಬೇಕು. ನೀವು ಒಂದು ವಿಧಾನದಲ್ಲಿ ವ್ಯವಹಾರವನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮತ್ತು ಇನ್ನೊಂದು ವಿಧಾನದಲ್ಲಿ ಅದನ್ನು ಕೊನೆಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ನಿಯಮಕ್ಕೆ ವಿನಾಯಿತಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ಬಹುಶಃ ಸಾಧ್ಯ, ಆದರೆ ಇದು ಹೆಚ್ಚು ಸಮರ್ಥ ವ್ಯಕ್ತಿಗಳಿಂದ ಬರೆಯಲ್ಪಟ್ಟ ಕೆಲವು ರೀತಿಯ ಕಡಿಮೆ-ಮಟ್ಟದ ಕೋಡ್ ಆಗಿರುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ, ನೀವು ಈ ರೀತಿ ಬರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ.


ಉದಾಹರಣೆಗೆ:


ಕಾರ್ಯವಿಧಾನ ಪ್ರಮುಖ ಕೋಡ್() LinkList = GetLinkListWhere(); ಬಹಳ ಉಪಯುಕ್ತ ಮತ್ತು ಪ್ರಮುಖ ಕೋಡ್ (ಲಿಂಕ್ಲಿಸ್ಟ್); ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); // ನರಕಕ್ಕೆ ಟಿಕೆಟ್, ನಮ್ಮ ಸಂಕೀರ್ಣ ಕಾರ್ಮಿಕ ಸಂಬಂಧಗಳ ಬಗ್ಗೆ ಲೇಖಕರೊಂದಿಗೆ ಗಂಭೀರ ಸಂಭಾಷಣೆ. ಕಾರ್ಯವಿಧಾನದ ಅಂತ್ಯ

ಮೇಲಿನವು ಸ್ವೀಕಾರಾರ್ಹವಲ್ಲದ ಶಿಟ್ ಕೋಡ್ ಆಗಿದೆ. ನೀವು ವಿಧಾನಗಳನ್ನು ಬರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ ಆದ್ದರಿಂದ ಕರೆ ಮಾಡುವವರು ಅದನ್ನು ಕರೆಯುವ ಇತರ ವಿಧಾನಗಳಲ್ಲಿ ಸಂಭವನೀಯ (ಅಥವಾ ಸಂಭವನೀಯ - ಯಾರಿಗೆ ಗೊತ್ತು) ವಹಿವಾಟುಗಳನ್ನು ನೆನಪಿಸಿಕೊಳ್ಳುತ್ತಾರೆ ಮತ್ತು ಟ್ರ್ಯಾಕ್ ಮಾಡುತ್ತಾರೆ. ಇದು ಎನ್‌ಕ್ಯಾಪ್ಸುಲೇಶನ್‌ನ ಉಲ್ಲಂಘನೆ ಮತ್ತು ಸ್ಪಾಗೆಟ್ಟಿ ಕೋಡ್‌ನ ಪ್ರಸರಣವಾಗಿದ್ದು ಅದನ್ನು ಒಬ್ಬರ ವಿವೇಕದಿಂದ ಪತ್ತೆಹಚ್ಚಲು ಸಾಧ್ಯವಿಲ್ಲ.


ಸಿಂಥೆಟಿಕ್ 3-ಲೈನ್ ಉದಾಹರಣೆಗಳಿಗಿಂತ ನೈಜ ಕೋಡ್ ತುಂಬಾ ದೊಡ್ಡದಾಗಿದೆ ಎಂದು ನೆನಪಿಟ್ಟುಕೊಳ್ಳುವುದು ವಿಶೇಷವಾಗಿ ಖುಷಿಯಾಗುತ್ತದೆ. ಗೂಡುಕಟ್ಟುವಿಕೆಯ ಆರು ಹಂತಗಳಲ್ಲಿ ವಹಿವಾಟುಗಳನ್ನು ಪ್ರಾರಂಭಿಸುವುದು ಮತ್ತು ಅಂತ್ಯಗೊಳಿಸುವುದನ್ನು ಕಂಡುಹಿಡಿಯುವುದು - ಇದು ಲೇಖಕರೊಂದಿಗಿನ ನಿಕಟ ಸಂಭಾಷಣೆಗಳನ್ನು ನೇರವಾಗಿ ಪ್ರೇರೇಪಿಸುತ್ತದೆ.

ಕೋಡ್ ಅನ್ನು ಸರಿಪಡಿಸಲು ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ

ಮೂಲ ವಿಧಾನಕ್ಕೆ ಹಿಂತಿರುಗಿ ಮತ್ತು ಅದನ್ನು ಸರಿಪಡಿಸಲು ಪ್ರಯತ್ನಿಸೋಣ. ಉದಾಹರಣೆ ಕೋಡ್ ಅನ್ನು ಸಂಕೀರ್ಣಗೊಳಿಸದಿರಲು ನಾವು ಇದೀಗ ಆಬ್ಜೆಕ್ಟ್ ಲಾಕ್ ಅನ್ನು ಸರಿಪಡಿಸುವುದಿಲ್ಲ ಎಂದು ನಾನು ಈಗಿನಿಂದಲೇ ಹೇಳುತ್ತೇನೆ.

ವಿಶಿಷ್ಟವಾದ 1C ಅಡ್ಡಹೆಸರಿನ ಮೊದಲ ವಿಧಾನ

ವಿಶಿಷ್ಟವಾಗಿ, 1C ಪ್ರೋಗ್ರಾಮರ್‌ಗಳು ರೆಕಾರ್ಡಿಂಗ್ ಮಾಡುವಾಗ ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಬಹುದು ಎಂದು ತಿಳಿದಿದ್ದಾರೆ. ಅವರು ವಿನಾಯಿತಿಗಳಿಗೆ ಹೆದರುತ್ತಾರೆ, ಆದ್ದರಿಂದ ಅವರು ಎಲ್ಲವನ್ನೂ ಹಿಡಿಯಲು ಪ್ರಯತ್ನಿಸುತ್ತಾರೆ. ಉದಾಹರಣೆಗೆ, ಈ ರೀತಿ:


ಕಾರ್ಯವಿಧಾನವು ತುಂಬಾ ಉಪಯುಕ್ತ ಮತ್ತು ಪ್ರಮುಖ ಕೋಡ್ (ಡೈರೆಕ್ಟರಿ ಲಿಂಕ್‌ಗಳ ಪಟ್ಟಿ) ವಹಿವಾಟು ಪ್ರಾರಂಭಿಸಿ (); ಡೈರೆಕ್ಟರಿ ಲಿಂಕ್‌ಗಳ ಪಟ್ಟಿಯಿಂದ ಪ್ರತಿ ಲಿಂಕ್‌ಗಾಗಿ ಲೂಪ್ ಡೈರೆಕ್ಟರಿ ಆಬ್ಜೆಕ್ಟ್ = Link.GetObject(); ಡೈರೆಕ್ಟರಿ Object.SomeField = "ನನ್ನನ್ನು ಪ್ರೋಗ್ರಾಂ ಕೋಡ್‌ನಿಂದ ಬದಲಾಯಿಸಲಾಗಿದೆ"; AttemptDirectoryObject.Write(); ವಿನಾಯಿತಿ Log.Error("ಅಂಶ %1 ಅನ್ನು ಬರೆಯಲಾಗಲಿಲ್ಲ", ಲಿಂಕ್); ಮುಂದುವರಿಸಿ; ಎಂಡ್ ಅಟೆಂಪ್ಟ್; ಎಂಡ್ಸೈಕಲ್; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ಕಾರ್ಯವಿಧಾನದ ಅಂತ್ಯ

ಸರಿ, ವಿಷಯಗಳು ಉತ್ತಮವಾಗಿವೆ, ಸರಿ? ಎಲ್ಲಾ ನಂತರ, ಈಗ ಸಂಭವನೀಯ ತಪ್ಪುಗಳುದಾಖಲೆಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಲಾಗ್ ಮಾಡಲಾಗಿದೆ. ವಸ್ತುವನ್ನು ಬರೆಯುವಾಗ ವಿನಾಯಿತಿಗಳನ್ನು ಇನ್ನು ಮುಂದೆ ಎಸೆಯಲಾಗುವುದಿಲ್ಲ. ಮತ್ತು ಲಾಗ್‌ನಲ್ಲಿ ನೀವು ಯಾವ ವಸ್ತುವಿನ ಮೇಲೆ ಸಹ ನೋಡಬಹುದು, ನಾನು ತುಂಬಾ ಸೋಮಾರಿಯಾಗಿರಲಿಲ್ಲ ಮತ್ತು ಲಕೋನಿಕ್ “ಡೈರೆಕ್ಟರಿಯನ್ನು ಬರೆಯುವಲ್ಲಿ ದೋಷ” ಬದಲಿಗೆ ಸಂದೇಶದಲ್ಲಿ ಲಿಂಕ್ ಅನ್ನು ಸೇರಿಸಿದ್ದೇನೆ, ಏಕೆಂದರೆ ಯಾವಾಗಲೂ ಹಸಿವಿನಲ್ಲಿರುವ ಡೆವಲಪರ್‌ಗಳು ಆಗಾಗ್ಗೆ ಬರೆಯಲು ಇಷ್ಟಪಡುತ್ತಾರೆ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಬಳಕೆದಾರರಿಗೆ ಕಾಳಜಿ ಮತ್ತು ಸಾಮರ್ಥ್ಯಗಳ ಹೆಚ್ಚಳವಿದೆ.


ಆದಾಗ್ಯೂ, ಇಲ್ಲಿ ಅನುಭವಿ 1C ಬಳಕೆದಾರರು ಇಲ್ಲ, ಅದು ಉತ್ತಮವಾಗಿಲ್ಲ ಎಂದು ಹೇಳುತ್ತಾರೆ. ವಾಸ್ತವವಾಗಿ, ಏನೂ ಬದಲಾಗಿಲ್ಲ, ಮತ್ತು ಬಹುಶಃ ಇನ್ನೂ ಕೆಟ್ಟದಾಗಿದೆ. "ಬರಹ()" ವಿಧಾನದಲ್ಲಿ, 1C ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಸ್ವತಃ ಬರೆಯುವ ವಹಿವಾಟನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಮತ್ತು ಈ ವಹಿವಾಟು ಈಗಾಗಲೇ ನಮ್ಮದಕ್ಕೆ ಸಂಬಂಧಿಸಿದಂತೆ ನೆಸ್ಟ್ ಆಗಿರುತ್ತದೆ. ಮತ್ತು 1C ಡೇಟಾಬೇಸ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ವಹಿವಾಟು ಹಿಂತಿರುಗಿದರೆ (ಉದಾಹರಣೆಗೆ, ವ್ಯವಹಾರ ತರ್ಕ ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಲಾಗುತ್ತದೆ), ಆಗ ನಮ್ಮ ಉನ್ನತ ಮಟ್ಟದ ವಹಿವಾಟನ್ನು ಇನ್ನೂ "ಭ್ರಷ್ಟಗೊಳಿಸಲಾಗಿದೆ" ಎಂದು ಗುರುತಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಬದ್ಧವಾಗಿರುವುದಿಲ್ಲ. ಪರಿಣಾಮವಾಗಿ, ಈ ಕೋಡ್ ಸಮಸ್ಯಾತ್ಮಕವಾಗಿ ಉಳಿಯುತ್ತದೆ ಮತ್ತು ನೀವು ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ಅದು "ದೋಷಗಳು ಈಗಾಗಲೇ ಸಂಭವಿಸಿವೆ" ಎಂದು ಪ್ರದರ್ಶಿಸುತ್ತದೆ.


ಈಗ ನಾವು ಒಂದು ಸಣ್ಣ ವಿಧಾನದ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತಿಲ್ಲ ಎಂದು ಊಹಿಸಿ, ಆದರೆ ಆಳವಾದ ಕರೆ ಸ್ಟಾಕ್ ಬಗ್ಗೆ, ಅಲ್ಲಿ ಅತ್ಯಂತ ಕೆಳಭಾಗದಲ್ಲಿ ಯಾರಾದರೂ ತಮ್ಮ ವಿಧಾನದಿಂದ ಪ್ರಾರಂಭಿಸಿದ ವಹಿವಾಟನ್ನು ತೆಗೆದುಕೊಂಡು "ಬಿಡುಗಡೆ" ಮಾಡಿದ್ದಾರೆ. ಉನ್ನತ ಮಟ್ಟದ ಕಾರ್ಯವಿಧಾನಗಳು ಅಲ್ಲಿರುವ ಯಾರಾದರೂ ವಹಿವಾಟುಗಳನ್ನು ಪ್ರಾರಂಭಿಸಿದ್ದಾರೆ ಎಂಬ ಕಲ್ಪನೆಯನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ. ಪರಿಣಾಮವಾಗಿ, ಸಂಪೂರ್ಣ ಕೋಡ್ ಅಸ್ಪಷ್ಟ ದೋಷದೊಂದಿಗೆ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ, ಅದು ತಾತ್ವಿಕವಾಗಿ ತನಿಖೆ ಮಾಡಲು ಅಸಾಧ್ಯವಾಗಿದೆ.


ವಹಿವಾಟನ್ನು ಪ್ರಾರಂಭಿಸುವ ಕೋಡ್ ಅದನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಅಥವಾ ಹಿಂತಿರುಗಿಸಲು ಅಗತ್ಯವಿದೆ.ಯಾವುದೇ ವಿನಾಯಿತಿಗಳ ಹೊರತಾಗಿಯೂ. ಪ್ರತಿ ಕೋಡ್ ಶಾಖೆಯು ವ್ಯವಹಾರವನ್ನು ಮಾಡದೆ ಅಥವಾ ರದ್ದುಗೊಳಿಸದೆ ಒಂದು ವಿಧಾನವು ನಿರ್ಗಮಿಸುತ್ತದೆಯೇ ಎಂದು ನೋಡಲು ಪರೀಕ್ಷಿಸಬೇಕು.

1C ನಲ್ಲಿ ವಹಿವಾಟುಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ವಿಧಾನಗಳು

ವಹಿವಾಟುಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು 1C ಸಾಮಾನ್ಯವಾಗಿ ನಮಗೆ ಏನನ್ನು ಒದಗಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಮಗೆ ನೆನಪಿಸಲು ಇದು ಅತಿಯಾಗಿರುವುದಿಲ್ಲ. ಇವುಗಳು ಪ್ರಸಿದ್ಧ ವಿಧಾನಗಳಾಗಿವೆ:

  • ವಹಿವಾಟು ಪ್ರಾರಂಭಿಸಿ()
  • ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್()
  • ವಹಿವಾಟು ರದ್ದುಮಾಡು()
  • ವಹಿವಾಟು ಸಕ್ರಿಯ()

ಮೊದಲ 3 ವಿಧಾನಗಳು ಸ್ಪಷ್ಟವಾಗಿವೆ ಮತ್ತು ಅವರ ಹೆಸರುಗಳು ಏನು ಹೇಳುತ್ತವೆ. ವಹಿವಾಟು ಕೌಂಟರ್ ಶೂನ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚಿದ್ದರೆ ಕೊನೆಯ ವಿಧಾನವು ಸರಿ ಎಂದು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.


ಮತ್ತು ಆಸಕ್ತಿದಾಯಕ ವೈಶಿಷ್ಟ್ಯವಿದೆ. ವಹಿವಾಟಿನ ಎಣಿಕೆ ಶೂನ್ಯವಾಗಿದ್ದರೆ ವಹಿವಾಟು ನಿರ್ಗಮನ ವಿಧಾನಗಳು (ಬದ್ಧತೆ ಮತ್ತು ರದ್ದು) ವಿನಾಯಿತಿಗಳನ್ನು ಎಸೆಯುತ್ತವೆ. ಅಂದರೆ, ನೀವು ವಹಿವಾಟಿನ ಹೊರಗೆ ಅವುಗಳಲ್ಲಿ ಒಂದನ್ನು ಕರೆದರೆ, ದೋಷ ಸಂಭವಿಸುತ್ತದೆ.


ಈ ವಿಧಾನಗಳನ್ನು ಸರಿಯಾಗಿ ಬಳಸುವುದು ಹೇಗೆ? ಇದು ತುಂಬಾ ಸರಳವಾಗಿದೆ: ಮೇಲೆ ರೂಪಿಸಿದ ನಿಯಮವನ್ನು ನೀವು ಓದಬೇಕು:


ಈ ನಿಯಮವನ್ನು ಹೇಗೆ ಅನುಸರಿಸುವುದು? ಪ್ರಯತ್ನಿಸೋಣ:


ಏನಾದರೂ ಮಾಡು ವಿಧಾನವು ಅಪಾಯಕಾರಿ ಎಂದು ನಾವು ಈಗಾಗಲೇ ಮೇಲೆ ಅರ್ಥಮಾಡಿಕೊಂಡಿದ್ದೇವೆ. ಇದು ಕೆಲವು ರೀತಿಯ ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಬಹುದು ಮತ್ತು ವಹಿವಾಟು ನಮ್ಮ ವಿಧಾನದಿಂದ "ಕ್ರಾಲ್ ಔಟ್" ಆಗುತ್ತದೆ. ಸರಿ, ಸಂಭವನೀಯ ವಿನಾಯಿತಿ ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಸೇರಿಸೋಣ:


ಪ್ರಾರಂಭ ವಹಿವಾಟು (); ಏನಾದರೂ ಮಾಡಿ(); ವಿನಾಯಿತಿ // ಆದರೆ ನಾನು ಇಲ್ಲಿ ಏನು ಬರೆಯಬೇಕು? ಎಂಡ್ ಅಟೆಂಪ್ಟ್; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

ಅದ್ಭುತವಾಗಿದೆ, ಸಂಭವಿಸುತ್ತಿರುವ ದೋಷವನ್ನು ನಾವು ಹಿಡಿದಿದ್ದೇವೆ, ಆದರೆ ಅದರ ಬಗ್ಗೆ ನಾವು ಏನು ಮಾಡಬೇಕು? ಲಾಗ್‌ಗೆ ಸಂದೇಶವನ್ನು ಬರೆಯುವುದೇ? ಸರಿ, ಬಹುಶಃ ದೋಷ ಲಾಗಿಂಗ್ ಕೋಡ್ ನಿಖರವಾಗಿ ಈ ಮಟ್ಟದಲ್ಲಿರಬೇಕು ಮತ್ತು ನಾವು ಇಲ್ಲಿ ದೋಷಕ್ಕಾಗಿ ಕಾಯುತ್ತಿದ್ದೇವೆ. ಮತ್ತು ಇಲ್ಲದಿದ್ದರೆ? ನಾವು ಇಲ್ಲಿ ಯಾವುದೇ ದೋಷಗಳನ್ನು ನಿರೀಕ್ಷಿಸದಿದ್ದರೆ ಏನು? ನಂತರ ನಾವು ಆ ವಿನಾಯಿತಿಯನ್ನು ರವಾನಿಸಬೇಕು ಮತ್ತು ವಾಸ್ತುಶಿಲ್ಪದ ಇನ್ನೊಂದು ಪದರವು ಅದರೊಂದಿಗೆ ವ್ಯವಹರಿಸಬೇಕು. ಇದನ್ನು "ಕಾಸ್ಎಕ್ಸೆಪ್ಶನ್" ಆಪರೇಟರ್ನೊಂದಿಗೆ ವಾದಗಳಿಲ್ಲದೆ ಮಾಡಲಾಗುತ್ತದೆ. ನಿಮ್ಮ ಈ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ, ಥ್ರೋ ಆಪರೇಟರ್‌ನೊಂದಿಗೆ ನಿಖರವಾಗಿ ಅದೇ ರೀತಿಯಲ್ಲಿ ಇದನ್ನು ಮಾಡಲಾಗುತ್ತದೆ.


ಪ್ರಾರಂಭ ವಹಿವಾಟು (); ಏನಾದರೂ ಮಾಡಿ(); ಎಕ್ಸೆಪ್ಶನ್ ಥ್ರೋ ಎಕ್ಸೆಪ್ಶನ್; ಎಂಡ್ ಅಟೆಂಪ್ಟ್; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

ಆದ್ದರಿಂದ, ನಿರೀಕ್ಷಿಸಿ... ನಾವು ವಿನಾಯಿತಿಯನ್ನು ಮತ್ತಷ್ಟು ಎಸೆದರೆ, ಪ್ರಯತ್ನದ ಅವಶ್ಯಕತೆ ಏಕೆ? ಇಲ್ಲಿ ಏಕೆ: ನಾವು ಪ್ರಾರಂಭಿಸಿದ ವಹಿವಾಟಿನ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನಿಯಮವು ನಮ್ಮನ್ನು ಒತ್ತಾಯಿಸುತ್ತದೆ.


ಪ್ರಾರಂಭ ವಹಿವಾಟು (); ಏನಾದರೂ ಮಾಡಿ(); ವಿನಾಯಿತಿ ರದ್ದು ವಹಿವಾಟು(); ಥ್ರೋ ಎಕ್ಸೆಪ್ಶನ್; ಎಂಡ್ ಅಟೆಂಪ್ಟ್; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

ಈಗ ಅದು ಸುಂದರವಾಗಿದೆ ಎಂದು ತೋರುತ್ತದೆ. ಆದಾಗ್ಯೂ, ನಾವು ಏನನ್ನಾದರೂ ಮಾಡು() ಕೋಡ್ ಅನ್ನು ನಂಬುವುದಿಲ್ಲ ಎಂದು ನಾವು ನೆನಪಿಸಿಕೊಳ್ಳುತ್ತೇವೆ. ಒಳಗೆ ಲೇಖಕರು ಈ ಲೇಖನವನ್ನು ಓದದಿದ್ದರೆ ಮತ್ತು ವಹಿವಾಟುಗಳೊಂದಿಗೆ ಹೇಗೆ ಕೆಲಸ ಮಾಡಬೇಕೆಂದು ತಿಳಿದಿಲ್ಲದಿದ್ದರೆ ಏನು? ಅವನು ಅದನ್ನು ಅಲ್ಲಿಗೆ ಕರೆದೊಯ್ದರೆ ಮತ್ತು ರದ್ದುಗೊಳಿಸುವಿಕೆ ವಿಧಾನವನ್ನು ಕರೆದರೆ ಅಥವಾ ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ ಅದನ್ನು ಒಪ್ಪಿಸಿದರೆ ಏನು? ಅದು ನಮಗೆ ಬಹಳ ಮುಖ್ಯ ವಿನಾಯಿತಿ ನಿರ್ವಾಹಕರು ಹೊಸ ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಲಿಲ್ಲ, ಇಲ್ಲದಿದ್ದರೆ ಮೂಲ ದೋಷ ಕಳೆದುಹೋಗುತ್ತದೆ ಮತ್ತು ದೋಷನಿವಾರಣೆ ಅಸಾಧ್ಯವಾಗುತ್ತದೆ. ಮತ್ತು ವಹಿವಾಟು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿದ್ದರೆ ಕಮಿಟ್ ಮತ್ತು ರದ್ದು ವಿಧಾನಗಳು ವಿನಾಯಿತಿಯನ್ನು ನೀಡಬಹುದು ಎಂದು ನಾವು ನೆನಪಿಸಿಕೊಳ್ಳುತ್ತೇವೆ. ಇಲ್ಲಿ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಆಕ್ಟಿವ್ ವಿಧಾನವು ಸೂಕ್ತವಾಗಿ ಬರುತ್ತದೆ.

ಅಂತಿಮ ಆವೃತ್ತಿ

ಅಂತಿಮವಾಗಿ, ನಾವು ಕೋಡ್‌ನ ಸರಿಯಾದ, "ವ್ಯವಹಾರ-ಸುರಕ್ಷಿತ" ಆವೃತ್ತಿಯನ್ನು ಬರೆಯಬಹುದು. ಇಲ್ಲಿ ಅವನು:


**ಯುಪಿಡಿ: ಕಮಿಟ್‌ಟ್ರಾನ್ಸಕ್ಷನ್ ಅಟೆಂಪ್ಟ್ ಬ್ಲಾಕ್‌ನಲ್ಲಿ ಇರುವಾಗ ಕಾಮೆಂಟ್‌ಗಳು ಸುರಕ್ಷಿತ ಆಯ್ಕೆಯನ್ನು ಸೂಚಿಸಿವೆ. ಈ ನಿರ್ದಿಷ್ಟ ಆಯ್ಕೆಯನ್ನು ಇಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ; ಹಿಂದೆ ಅಟೆಂಪ್ಟ್-ಎಕ್ಸೆಪ್ಶನ್ ಬ್ಲಾಕ್ ನಂತರ ಸ್ಥಿರೀಕರಣವನ್ನು ಸ್ಥಾಪಿಸಲಾಗಿದೆ.


ಪ್ರಾರಂಭ ವಹಿವಾಟು (); ಏನಾದರೂ ಮಾಡಿ(); ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ (); ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಇಸ್ ಆಕ್ಟಿವ್ () ನಂತರ ರದ್ದು ಟ್ರಾನ್ಸಕ್ಷನ್ (); ಕೊನೆಯಲ್ಲಿ ವೇಳೆ; ಥ್ರೋ ಎಕ್ಸೆಪ್ಶನ್; ಎಂಡ್ ಅಟೆಂಪ್ಟ್;

ನಿರೀಕ್ಷಿಸಿ, ಆದರೆ ಇದು ದೋಷಗಳನ್ನು ಉಂಟುಮಾಡುವ "ವ್ಯವಹಾರ ರದ್ದು" ಮಾತ್ರವಲ್ಲ. ಹಾಗಾದರೆ "ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್" ಅನ್ನು "ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಆಕ್ಟಿವ್" ನೊಂದಿಗೆ ಅದೇ ಸ್ಥಿತಿಯಲ್ಲಿ ಏಕೆ ಸುತ್ತಿಕೊಳ್ಳಲಾಗಿಲ್ಲ? ಮತ್ತೊಮ್ಮೆ, ಅದೇ ನಿಯಮವನ್ನು ಬಳಸಿ: ವಹಿವಾಟನ್ನು ಪ್ರಾರಂಭಿಸಿದ ಕೋಡ್ ಅದನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಜವಾಬ್ದಾರರಾಗಿರಬೇಕು.ನಮ್ಮ ವಹಿವಾಟು ಮೊದಲನೆಯದು ಎಂದೇನೂ ಅಲ್ಲ; ಅದನ್ನು ನೆಸ್ಟೆಡ್ ಮಾಡಬಹುದು. ನಮ್ಮ ಅಮೂರ್ತತೆಯ ಮಟ್ಟದಲ್ಲಿ, ನಾವು ನಮ್ಮ ವಹಿವಾಟಿನ ಬಗ್ಗೆ ಮಾತ್ರ ಕಾಳಜಿ ವಹಿಸಬೇಕಾಗುತ್ತದೆ. ಉಳಿದವರೆಲ್ಲ ನಮಗೆ ಆಸಕ್ತಿ ತೋರಬಾರದು. ಅವರು ಅಪರಿಚಿತರು, ಅವರಿಗೆ ನಾವು ಜವಾಬ್ದಾರರಾಗಬಾರದು. ನಿಖರವಾಗಿ ಅವರು ಮಾಡಬಾರದು. ನಿಜವಾದ ವಹಿವಾಟು ಕೌಂಟರ್ ಮಟ್ಟವನ್ನು ನಿರ್ಧರಿಸಲು ಯಾವುದೇ ಪ್ರಯತ್ನ ಮಾಡಬಾರದು. ಇದು ಮತ್ತೊಮ್ಮೆ ಎನ್ಕ್ಯಾಪ್ಸುಲೇಶನ್ ಅನ್ನು ಮುರಿಯುತ್ತದೆ ಮತ್ತು "ಸ್ಮೀಯರಿಂಗ್" ವಹಿವಾಟು ನಿರ್ವಹಣೆ ತರ್ಕಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ನಾವು ಎಕ್ಸೆಪ್ಶನ್ ಹ್ಯಾಂಡ್ಲರ್‌ನಲ್ಲಿನ ಚಟುವಟಿಕೆಯನ್ನು ಮಾತ್ರ ಪರಿಶೀಲಿಸಿದ್ದೇವೆ ಮತ್ತು ನಮ್ಮ ಹ್ಯಾಂಡ್ಲರ್ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಮಾತ್ರ ಹೊಸ ವಿನಾಯಿತಿಯನ್ನು ರಚಿಸುವುದಿಲ್ಲ, ಹಳೆಯದನ್ನು "ಮರೆಮಾಡುವುದು".

ರಿಫ್ಯಾಕ್ಟರಿಂಗ್ ಪರಿಶೀಲನಾಪಟ್ಟಿ

ಕೋಡ್ ಹಸ್ತಕ್ಷೇಪದ ಅಗತ್ಯವಿರುವ ಕೆಲವು ಸಾಮಾನ್ಯ ಸಂದರ್ಭಗಳನ್ನು ನೋಡೋಣ.


ಮಾದರಿ:


ಪ್ರಾರಂಭ ವಹಿವಾಟು (); ಏನಾದರೂ (); ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

ಪ್ರಯತ್ನದೊಂದಿಗೆ "ಸುರಕ್ಷಿತ" ವಿನ್ಯಾಸದಲ್ಲಿ ಸುತ್ತಿ, ಜೀವಂತವಾಗಿರಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ವಿನಾಯಿತಿಯನ್ನು ಎಸೆಯಿರಿ.


ಮಾದರಿ:


ನಾಟ್ ಟ್ರಾನ್ಸಕ್ಷನ್ ಆಕ್ಟಿವ್() ನಂತರ ಸ್ಟಾರ್ಟ್ ಟ್ರಾನ್ಸಕ್ಷನ್()ಎಂಡಿಇಫ್

ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ರಿಫ್ಯಾಕ್ಟರಿಂಗ್. ಲೇಖಕನಿಗೆ ಅವನು ಏನು ಮಾಡುತ್ತಿದ್ದಾನೆಂದು ಅರ್ಥವಾಗಲಿಲ್ಲ. ನೆಸ್ಟೆಡ್ ವಹಿವಾಟುಗಳನ್ನು ಪ್ರಾರಂಭಿಸುವುದು ಸುರಕ್ಷಿತವಾಗಿದೆ. ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸುವ ಅಗತ್ಯವಿಲ್ಲ, ನೀವು ನೆಸ್ಟೆಡ್ ವಹಿವಾಟನ್ನು ಪ್ರಾರಂಭಿಸಬೇಕಾಗಿದೆ. ಮಾಡ್ಯುಲಸ್‌ನ ಕೆಳಗೆ, ಅದು ಬಹುಶಃ ಅವರ ಸ್ಥಿರೀಕರಣದೊಂದಿಗೆ ಇನ್ನೂ ವಿರೂಪಗೊಂಡಿದೆ. ಇದು ಹೆಮೊರೊಯಿಡ್ಸ್ ಅನ್ನು ಖಾತರಿಪಡಿಸುತ್ತದೆ.


ಸರಿಸುಮಾರು ಒಂದೇ ರೀತಿಯ ಆಯ್ಕೆ:


ವಹಿವಾಟು ಸಕ್ರಿಯವಾಗಿದ್ದರೆ() ನಂತರ ಕಮಿಟ್ ಟ್ರಾನ್ಸಕ್ಷನ್() ಎಂಡಿಫ್

ಅದೇ ರೀತಿ: ಷರತ್ತಿನ ಮೂಲಕ ವಹಿವಾಟು ಮಾಡುವುದು ವಿಚಿತ್ರವಾಗಿದೆ. ಇಲ್ಲಿ ಏಕೆ ಒಂದು ಸ್ಥಿತಿ ಇದೆ? ಏನು, ಬೇರೆ ಯಾರಾದರೂ ಈಗಾಗಲೇ ಈ ವಹಿವಾಟನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿರಬಹುದು? ವಿಚಾರಣೆಗೆ ಕಾರಣ.


ಮಾದರಿ:


StartTransaction() ಆಯ್ಕೆ ಮಾಡುವಾಗ.ಮುಂದೆ() ಲೂಪ್ // ಉಲ್ಲೇಖದ ಮೂಲಕ ವಸ್ತುವನ್ನು ಓದುವುದು // ಒಂದು ವಸ್ತುವನ್ನು ಬರೆಯುವುದು EndCycle; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();
  1. ಸ್ಥಗಿತವನ್ನು ತಪ್ಪಿಸಲು ನಿಯಂತ್ರಿತ ಲಾಕಿಂಗ್ ಅನ್ನು ಪರಿಚಯಿಸಿ
  2. ಬ್ಲಾಕ್ ವಿಧಾನಕ್ಕೆ ಕರೆಯನ್ನು ನಮೂದಿಸಿ
  3. ಮೇಲೆ ತೋರಿಸಿರುವಂತೆ "ಪ್ರಯತ್ನಿಸಿ" ರಲ್ಲಿ ಸುತ್ತು

ಮಾದರಿ:


StartTransaction()ಆಯ್ಕೆ ಮಾಡುವಾಗ.ಮುಂದೆ() ಲೂಪ್ ಅಟೆಂಪ್ಟ್ ಆಬ್ಜೆಕ್ಟ್.Write(); ವಿನಾಯಿತಿ ವರದಿ ("ಬರೆಯಲು ವಿಫಲವಾಗಿದೆ"); ಎಂಡ್ ಅಟೆಂಪ್ಟ್; ಎಂಡ್ಸೈಕಲ್; ಕಮಿಟ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ();

ವಿನಾಯಿತಿಯ ಸಂದರ್ಭದಲ್ಲಿ ಈ ವಹಿವಾಟು ಇನ್ನು ಮುಂದೆ ಪೂರ್ಣಗೊಳ್ಳುವುದಿಲ್ಲ. ಚಕ್ರವನ್ನು ಮುಂದುವರಿಸುವುದರಲ್ಲಿ ಯಾವುದೇ ಅರ್ಥವಿಲ್ಲ. ಕೋಡ್ ಅನ್ನು ಪುನಃ ಬರೆಯಬೇಕಾಗಿದೆ, ಮೂಲ ಕಾರ್ಯವನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ ಹೆಚ್ಚು ತಿಳಿವಳಿಕೆ ದೋಷ ಸಂದೇಶವನ್ನು ಒದಗಿಸಿ.

ಅಂತಿಮವಾಗಿ

ನಾನು, ನೀವು ಬಹುಶಃ ಈಗಾಗಲೇ ಊಹಿಸಿದಂತೆ, 1C ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಮತ್ತು ಅದರ ಅಭಿವೃದ್ಧಿಯನ್ನು ಪ್ರೀತಿಸುವ ಜನರಲ್ಲಿ ಒಬ್ಬನಾಗಿದ್ದೇನೆ. ಸಹಜವಾಗಿ, ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಬಗ್ಗೆ ದೂರುಗಳಿವೆ, ವಿಶೇಷವಾಗಿ ಹೈಲೋಡ್ ಪರಿಸರದಲ್ಲಿ, ಆದರೆ ಸಾಮಾನ್ಯವಾಗಿ, ಇದು ಅಗ್ಗವಾಗಿ ಮತ್ತು ತ್ವರಿತವಾಗಿ ಉತ್ತಮ ಗುಣಮಟ್ಟದ ಎಂಟರ್‌ಪ್ರೈಸ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಬಾಕ್ಸ್‌ನಿಂದ ORM, GUI, ವೆಬ್ ಇಂಟರ್‌ಫೇಸ್, ವರದಿ ಮಾಡುವಿಕೆ ಮತ್ತು ಹೆಚ್ಚಿನದನ್ನು ಒದಗಿಸುವುದು. Habré ನಲ್ಲಿನ ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ ಅವರು ಸಾಮಾನ್ಯವಾಗಿ ಎಲ್ಲಾ ರೀತಿಯ ಸೊಕ್ಕಿನ ವಿಷಯಗಳನ್ನು ಬರೆಯುತ್ತಾರೆ, ಆದ್ದರಿಂದ ಹುಡುಗರೇ - 1C ಯೊಂದಿಗಿನ ಮುಖ್ಯ ಸಮಸ್ಯೆ, ಪರಿಸರ ವ್ಯವಸ್ಥೆಯಾಗಿ, ವೇದಿಕೆ ಅಥವಾ ಮಾರಾಟಗಾರರಲ್ಲ. ಪ್ರವೇಶಕ್ಕೆ ಇದು ತುಂಬಾ ಕಡಿಮೆ ಮಿತಿಯಾಗಿದೆ, ಇದು ಕಂಪ್ಯೂಟರ್, ಡೇಟಾಬೇಸ್, ಕ್ಲೈಂಟ್-ಸರ್ವರ್, ನೆಟ್‌ವರ್ಕ್ ಮತ್ತು ಎಲ್ಲವನ್ನೂ ಅರ್ಥಮಾಡಿಕೊಳ್ಳದ ಜನರಿಗೆ ಉದ್ಯಮವನ್ನು ಪ್ರವೇಶಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. 1C ಎಂಟರ್‌ಪ್ರೈಸ್ ಅಪ್ಲಿಕೇಶನ್ ಅಭಿವೃದ್ಧಿಯನ್ನು ತುಂಬಾ ಸುಲಭಗೊಳಿಸಿದೆ. 20 ನಿಮಿಷಗಳಲ್ಲಿ ನಾನು ಹೊಂದಿಕೊಳ್ಳುವ ವರದಿಗಳು ಮತ್ತು ವೆಬ್ ಕ್ಲೈಂಟ್‌ನೊಂದಿಗೆ ಖರೀದಿ/ಮಾರಾಟಕ್ಕಾಗಿ ಲೆಕ್ಕಪತ್ರ ವ್ಯವಸ್ಥೆಯನ್ನು ಬರೆಯಬಹುದು. ಇದರ ನಂತರ, ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿ ನೀವು ಅದೇ ರೀತಿಯಲ್ಲಿ ಬರೆಯಬಹುದು ಎಂದು ನನಗೆ ನಾನೇ ಯೋಚಿಸುವುದು ಸುಲಭ. ಹೇಗಾದರೂ 1C ಆಂತರಿಕವಾಗಿ ಎಲ್ಲವನ್ನೂ ಮಾಡುತ್ತದೆ, ನನಗೆ ಹೇಗೆ ಗೊತ್ತಿಲ್ಲ, ಆದರೆ ಅದು ಬಹುಶಃ ಅದನ್ನು ಮಾಡುತ್ತದೆ. ನಾನು "StartTransaction()" ಎಂದು ಬರೆಯುತ್ತೇನೆ....

ಟ್ಯಾಗ್‌ಗಳನ್ನು ಸೇರಿಸಿ