Як не реєструвати стопку документів в планах обміну з включеною автореєстрація при груповому

Напевно, кожен розробник стикався з проблемою автоматичної реєстрації документів в планах обміну, які просто необхідно послідовно перепровести.






Я розповім про свій вихід з подібної ситуації.

Звичайно, зараз мода на ручну реєстрацію змін в планах обміну. але до сих пір залишається багато старих і самописних конфігурацій, яким, можливо, зможе допомогти моя публікація.

Для початку я коротко розкажу, як ручна реєстрація відбувається в типовій конфігурації:

  1. Перед записом документа викликається подія "МеханізмРегістрацііОб'ектовПередЗапісьюДокумента", яке, власне, і відповідає за реєстрацію. Я пропущу більшу частину всіх умов, а перейду до суті.
  2. А саме до функції "Об'ектМодіфіцірованДляПланаОбменаПопиткаІсключеніе". Функція отримує "ТабліцаРеквізітовРегістраціі", яка, очевидно, береться з правил реєстрації об'єктів. Після чого для кожного реквізиту або таблиці реєстрації йде запит (ЗАПИТ В ЦИКЛІ) для значення реквізиту до змін. І йде порівняння з поточним значенням реквізиту.
  3. В результаті перед записом одного документа виконується Хренова купа коду з хреново купою запитів.






Скажу чесно, такий підхід мені здався не надто оптимальним. і при цьому досить МНОГОВРЕМЕНІЗАТРАЧІВАЕМИМ для моєї простий невеликої бази. Тому я і вирішив пошукати спосіб простіше.

Яке ж було моє здивування, що вона не працює))) Причому, навіть є перевіряти модифікування на самому початку в модулі об'єкта. Рішенням став виклик передплатника на процедуру "ОбработкаПроверкіЗаполненія". Але і це не все! якщо проведення відбувається зі списку документів. то перевірка на модифікування дає БРЕХНЯ. а якщо через форму документа (навіть якщо ти просто натиснув ОК) ІСТИНА.

В результаті я спокійно при груповому перепроведенні перепровожу документи, не побоюючись, що вся ця МАСА полізе обмінюватися.

П.С. Я не думаю, що була б набагато ефективніше ручна реєстрація. У моєму випадку.))) Невелика кількість зайвих документів не компенсує звістку той код, який виконується перед записом для кожного документа.