Самый первый шаг, который нужно сделать это перевести саму конфигурацию на автоматический и управляемый режим.
2 шаг: Тот документ который хотим перевести в управляемый режим, в свойствах на вкладке прочее, тоже переводим в режим: Управляемый
3 шаг: Открываем модуль объекта этого документа, и в обработке проведения пишем блокировки. Хорошо рассказано про блокировки вот здесь: http://1cexpo.ru/informacziya/27-blokirovki-dannyx-v-1spredpriyatii-8.html, если вы сними еще не ознакомились.
У меня конечно даже после прочитанного был ступр и я не знала за что браться, когда открыла модуль объекта, поэтому попробую объяснить подробно, как я действовала..
1. Блокировать, как правило нужно только регисты накопления, т.е. там где могут измениться остатки или какие-то данные, для начала смотрим какие регисты накопления прописаны в модуле, анализируем, где и что нам нужно заблокировать. У меня например были регистры накопления ОстаткиТоваровКомпании и ВзаиморасчетыКомпании. Для них в обработкеПроведения я прописывала вот такой код:
Блокировка = Новый БлокировкаДанных;
ЭБТовВП = Блокировка.Добавить("РегистрНакопления.ОстаткиТоваровКомпании");
ЭБТовВП.ИсточникДанных = ЭтотОбъект.Товары;
ЭБТовВП.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
ЭБТовВП.ИспользоватьИзИсточникаДанных("СкладКомпании", "СкладКомпании");
ЭБТовВП.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Блокировка = Новый БлокировкаДанных;
ЭБТовВП = Блокировка.Добавить("РегистрНакопления.ВзаиморасчетыКомпании");
ЭБТовВП.ИсточникДанных = ЭтотОбъект.Товары;
ЭБТовВП.ИспользоватьИзИсточникаДанных("Контрагент", "Контрагент");
ЭБТовВП.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
В первой блокировке в момент проведения блокируется остатки номенклатуры с которой идет работа на определенном складе, т.е если второй пользователь у себя попробует провести документ с аналогичной номенклатурой, но с другого склада, ему это удастся, но если с этого же то проведение этого документа (пока первый пользователь не проведет документ у себя) будет невозможно. Если время ожидания для второго пользователя истечет, то выдастся сообщение о конфликте блокировок.
2. После того, как вы заблокировали нужные вам регистры накопления, вам нужно все регистры к которым идет обращение, или просто они хотябы упоминаются в этом модуле, их ВСЕ нужно (также в их свойствах, на вкладке прочее) перевести в управляемый режим, я еще раз повторюсь ВСЕ РЕГИСТРЫ (накопления, сведения), не важно блокировали вы их или нет!
Очень часто вываливается ошибка о менеджере блокировок и что-то там о невозможности использовать автоматический режим(к сожалению не сделала скриншот в свое время), это происходит вызов исключительной ситуации, когда главный документ по которому делается проведение, в управляемом режиме, а ему «подчиненный» остался в автоматическом, об этом написано в той статье на которую я дала ссылку. Иногда ошибки показывают на общий модуль, это тоже означает(как было в моем случае), что просто это функция вызывается оттуда, а там что-нибудь прописано о каком-нибудь регистреСведения например, или делается запрос из него, а этот регистр остался в автоматическом режиме, поэтоому просмотрите все внимательно, потому что эти внутренние транзакции бывают очень коварны)))
После того как вы все это сделали, тестируйте свою работу).Как то так я победила свою маленькую задачу с блокировками, я надеюсь,что кто-нибудь здесь найдет для себя что-то полезное) Если статья оказалась не бесполезной с вас плюсик))
Вообще то первоисточник инфы по 1с блокировкам находиться тут:http://kb.1c.ru/
Остальное в целом пере посты…
Лучше все-таки в качестве источника данных передавать не саму табличную часть, а результат запроса. При проведении документа это будет шустрее работать.
И еще интересно, что заблокирует такая конструкция:
ЭБТовВП.ИспользоватьИзИсточникаДанных(«Номенклатура», «Номенклатура»);
ЭБТовВП.ИспользоватьИзИсточникаДанных(«СкладКомпании», «СкладКомпании»); ?
Судя по кавычкам 2-го параметра во второй строке, используется реквизит табличной части СкладКомпании, а не реквизит шапки документа. Т.е. заблокируются все записи где встречаются и номенклатура из списка номенклатуры и склад из списка складов?
Современный взгляд на проблему тутhttp://forum.infostart.ru/forum24/topic90504/
А зачем переводить на управляемые блокировки все регистры регистратора?