Ідея про те, що простого повідомлення, що відкривається документ вже заблокований кимсь іншим, недостатньо, народилася з простого усвідомлення того, що організація велика, і люди, які можуть працювати над одним і тим же документом, будуть сидіти не те, що в НЕ одному кабінеті, а взагалі в різних будівлях і можуть навіть не підозрювати один про одного.
Цілком можливо, що я винаходив велосипед, і рішення даного завдання вже було придумано кимсь до мене і простіше, але. я такого не знайшов, хоча зізнаюся: далі першої сторінки Google не заглядав. Отже. Є, звичайно, ще варіант створювати реєстр відомостей, де буде зберігатися інформація про блокування, але я вирішив не створювати подібного, а піти через журнал реєстрації 1С.
В обробник форми відкриття () помістимо наступний код
Якщо ЕтоНовий () тоді
// обробник для нового елементи
Якщо Відповідь = КодВозвратаДіалога.Да тоді
ІначеЕслі Відповідь = КодВозвратаДіалога.Нет тоді
ІначеЕслі Відповідь = КодВозвратаДіалога.Отмена тоді
Також в модулі форми поміщаємо таку функцію
Тепер, власне про роботу даного коду.
При відкритті не нового документа, користувач відразу намагається заблокувати об'єкт. Якщо у нього це не виходить, то починається пошук заблокував об'єкт. Якщо ж виходить, то документ тут же записується. Важливо це робити до будь-яких змін в об'єкті, щоб користувачеві не вискакувало ніяких повідомлень, типу "Ви впевнені, що хочете зберегти зміни" і не ставили його цим в глухий кут. Записується об'єкт для того, щоб залишився запис в журналі реєстрації, тому що сам факт відкриття форми в ньому не відображається.
Питання має на увазі три відповіді: "Ні" - закриття форми, "Так" - відкриття в режимі читання, "Скасування" - з тим щоб пройти процедуру в надії, що блокування знята. Або зателефонувати вже використовує об'єкт і попросити його закрити і по кнопці "Скасування" відкрити його вже в режимі для зміни. На жаль, стандартні діалоги в 1С не мають на увазі варіанти "ДаНетПовторіть".