Блокировки, частичный переход на управляемые

26.09.12

Разработка - Механизмы платформы 1С

В свое время надо было перевести конфу на частично управляемые блокировки, информации оказалось мало, тем более я новичок в 1С, в общем, намучилась, и решила поделиться опытом, может, кому пригодится.

Самый первый шаг, который нужно сделать это перевести саму конфигурацию на автоматический и управляемый режим.

2 шаг: Тот документ который хотим перевести в управляемый режим, в свойствах на вкладке прочее, тоже переводим в режим: Управляемый

3 шаг: Открываем модуль объекта этого документа, и в обработке проведения пишем блокировки. Хорошо рассказано про блокировки вот здесь: http://1cexpo.ru/informacziya/27-blokirovki-dannyx-v-1spredpriyatii-8.html, если вы сними еще не ознакомились.

У меня конечно даже после прочитанного был ступр и я не знала за что браться, когда открыла модуль объекта, поэтому попробую объяснить подробно, как я действовала..

1. Блокировать, как правило нужно только регисты накопления, т.е. там где могут измениться остатки или какие-то данные, для начала смотрим какие регисты накопления прописаны в модуле, анализируем, где и что нам нужно заблокировать. У меня например были регистры накопления ОстаткиТоваровКомпании и ВзаиморасчетыКомпании. Для них в обработкеПроведения я прописывала вот такой код:

Блокировка = Новый БлокировкаДанных;
ЭБТовВП = Блокировка.Добавить("РегистрНакопления.ОстаткиТоваровКомпании");
ЭБТовВП.ИсточникДанных = ЭтотОбъект.Товары;
ЭБТовВП.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
ЭБТовВП.ИспользоватьИзИсточникаДанных("СкладКомпании", "СкладКомпании");
ЭБТовВП.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();

 

Блокировка = Новый БлокировкаДанных;
ЭБТовВП = Блокировка.Добавить("РегистрНакопления.ВзаиморасчетыКомпании");
ЭБТовВП.ИсточникДанных = ЭтотОбъект.Товары;
ЭБТовВП.ИспользоватьИзИсточникаДанных("Контрагент", "Контрагент");
ЭБТовВП.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();

 

В первой блокировке в момент проведения блокируется остатки номенклатуры с которой идет работа на определенном складе, т.е если второй пользователь у себя попробует провести документ с аналогичной номенклатурой, но с другого склада, ему это удастся, но если с этого же то проведение этого документа (пока первый пользователь не проведет документ у себя) будет невозможно. Если время ожидания для второго пользователя истечет, то выдастся сообщение о конфликте блокировок. 

2. После того, как вы заблокировали нужные вам регистры накопления, вам нужно все регистры к которым идет обращение, или просто они хотябы упоминаются в этом модуле, их ВСЕ нужно (также в их свойствах, на вкладке прочее) перевести в управляемый режим, я еще раз повторюсь ВСЕ РЕГИСТРЫ (накопления, сведения), не важно блокировали вы их или нет!

Очень часто вываливается ошибка о менеджере блокировок и что-то там о невозможности использовать автоматический режим(к сожалению не сделала скриншот в свое время), это происходит вызов исключительной ситуации, когда главный документ по которому делается проведение, в управляемом режиме, а ему "подчиненный" остался в автоматическом, об этом написано в той статье на которую я дала ссылку. Иногда ошибки показывают на общий модуль, это тоже означает(как было в моем случае), что просто это функция вызывается оттуда, а там что-нибудь прописано о каком-нибудь регистреСведения например, или делается запрос из него, а этот регистр остался в автоматическом режиме, поэтоому просмотрите все внимательно, потому что эти внутренние транзакции бывают очень коварны)))

После того как вы все это сделали, тестируйте свою работу).Как то так я победила свою маленькую задачу с блокировками, я надеюсь,что кто-нибудь здесь найдет для себя что-то полезное) Если статья оказалась не бесполезной с вас плюсик))

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4576    dsdred    53    

73

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5301    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6427    dsdred    36    

112

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18491    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12101    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8841    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6284    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15998    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Angeros 29.10.12 10:58 Сейчас в теме
Вообще то первоисточник инфы по 1с блокировкам находиться тут: http://kb.1c.ru/
Остальное в целом пере посты...
2. Mortiferus 362 17.07.13 13:12 Сейчас в теме
Лучше все-таки в качестве источника данных передавать не саму табличную часть, а результат запроса. При проведении документа это будет шустрее работать.
3. Mortiferus 362 17.07.13 13:22 Сейчас в теме
И еще интересно, что заблокирует такая конструкция:
ЭБТовВП.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
ЭБТовВП.ИспользоватьИзИсточникаДанных("СкладКомпании", "СкладКомпании"); ?
Судя по кавычкам 2-го параметра во второй строке, используется реквизит табличной части СкладКомпании, а не реквизит шапки документа. Т.е. заблокируются все записи где встречаются и номенклатура из списка номенклатуры и склад из списка складов?
4. ZLENKO 398 12.08.13 16:55 Сейчас в теме
5. Kamikadze 46 23.11.16 21:50 Сейчас в теме
А зачем переводить на управляемые блокировки все регистры регистратора?
6. cptnfokin 20.06.23 10:43 Сейчас в теме
Переводишь один документ в управляемый режим - он двигает один регистр, его тоже переводишь. У этого регистра есть и другие регистраторы - их тоже переводишь, у регистраторов есть другие движения - и их тоже и так до конца...
Какой смыл тогда от "автоматический и управляемый режим"? Проще сразу Управляемый на корне конфигурации ставить
Оставьте свое сообщение