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