Имя: Пароль:
1C
1С v8
Какая блокировка ставится при СообщениеXML.НачатьЗапись()
0 Антиквар
 
16.11.21
10:43
Всем привет!
Реализую обмен через JSON (формат не обсуждается, это жесткое требование), и хотелось бы понять, что теряю, или наоборот обретаю, отказавшись от XML.
А именно, интересует блокировка, которую автоматически ставит система при начале записи сообщения XML.
В описании сказано:

СообщениеXML.НачатьЗапись() – ставится блокировка на изменение данных узла.
СообщениеXML.ЗакончитьЗапись() – снимается блокировка для узла.

Непонятно, блокируется только запись плана обмена, соответствующая нашему узлу, либо же блокируются и все данные (Справочники, Документы,…), изменения которых регистрируются для данного узла обмена?
Поскольку делаю обмен через JSON, то никаких блокировок у меня не будет, т.к. не будет такого: СообщениеXML.НачатьЗапись()
Хотелось бы понять суть этой блокировки, нужна она мне или нет. С одной стороны мы и так страдаем от блокировок, т.к. большая база и очень много пользователей, с другой стороны хотелось бы избежать коллизий  по причине отсутствия необходимых блокировок
1 Антиквар
 
16.11.21
10:47
Может быть блокируется только запись плана обмена, соответствующая узлу, в который выгружаем. Это логично. Чтобы одновременно не запустилось две выгрузки в этот узел, чтобы как минимум не испортить нумерацию сообщений.
Но читал, что стандартный обмен сильно тормозит систему как раз таки из-за блокировок. Блокировка узла в плане обмена безобидная, видимо система блокирует что-то ещё, допустим справочник, который выгружаем, чтобы не вносились изменения в него во время выборки изменений для выгрузки...
2 Галахад
 
гуру
16.11.21
11:09
(0) Суть.
Начинается транзакция.
Изменяется номер сообщения, в таблице изменений.
Выбираются изменения.
Фиксируется транзакция.
3 Галахад
 
гуру
16.11.21
11:10
По узлу и плану обмена.
4 Антиквар
 
16.11.21
11:18
(3) поясните пжста, что значит по узлу и плану обмена?
5 Галахад
 
гуру
16.11.21
11:59
(4) Косякнул. По узлу плана обмена.
6 Антиквар
 
16.11.21
15:47
(2) Получается, что блокируются все записи таблицы регистрации изменений? Но при этом ведь добавление записей в эту таблицу возможно? Если нет, если блокируется таблица в целом, то значит невозможно редактирование любых объектов, участвующих в обмене, поскольку зафиксировать изменение будет невозможно до завершения транзакции.
7 Антиквар
 
16.11.21
15:55
Т.е. допустим в обмене участвует справочник контрагентов. В таблице регистрации изменений есть одна запись по Контрагент1. Мы хотим его выгрузить.
Запускаем блок:

СообщениеXML.НачатьЗапись()
ПланыОбмена.ВыбратьИзменения(Узел, Номер)
СообщениеXML.ЗакончитьЗапись()

На всё время выполнения данного блока невозможно редактирование справочника контрагентов (ну если регистрация изменений этого справочника автоматическая, безусловная) ???
Либо что блокируется?
8 Антиквар
 
17.11.21
10:39
В общем не особо понял какая ставится блокировка, на какие объекты. Но думаю, что и без неё будет нормально.
Нужно только предусмотреть, чтобы в одно время не запускались две выгрузки в один и тот же узел.
А в остальном проблем особых не вижу.
Буду делать только:
ПланыОбмена.ВыбратьИзменения(Узел, Номер)
При этом, если какой-то объект из таблицы регистрации изменений изменится во время этой выборки, то я проблем не вижу. Создастся новая запись в таблице регистрации... Может я что не понимаю, но не вижу необходимости реализовывать блокировки самому.
Ну понять бы какие блокировки делает 1С, тогда может и проникнусь)
9 Spieluhr
 
17.11.21
10:57
(8) На сами объекты не ставится, таблицы изменений блокируются. Новый объект записывается в свою таблицу, а в таблицу изменений не может
10 Антиквар
 
17.11.21
11:53
(9) Но это равнозначно блокировке и самого объекта. При записи объекта он должен попасть в таблицу регистрации изменений. Если она заблокирована, то и запись самого объекта не произойдет. Иначе внесенные в объект изменения не уйдут в обмен.
Таким образом получается, что блокируются все объекты, участвующие в обмене, т.е. по которым должна делаться регистрация изменений.
Это глобально слишком (
11 Cyberhawk
 
17.11.21
12:16
(8) А когда планируешь удалять изменения?
12 Антиквар
 
17.11.21
13:58
(11) Скорее всего при получении ответного пакета с подтверждением загрузки пакета с таким-то номером
13 Антиквар
 
17.11.21
15:13
ну т.е. получаю сообщение с подтверждением загрузки пакета с таким-то номером, и удаляю из регистрации изменений записи с этим номером.
Возможно придем к тому, что отправил пакет и сразу удалил.
Но это вроде к теме не относится
14 fisher
 
17.11.21
15:20
(0) > Непонятно, блокируется только запись плана обмена, соответствующая нашему узлу, либо
Только запись обмена, соответствующая нашему узлу. Это лишь не позволяет параллельно по тому же узлу читать/писать сообщение или менять номера последних.
15 fisher
 
17.11.21
15:22
На регистрацию изменений это ессно никаким боком не влияет.
16 Антиквар
 
17.11.21
15:29
(15) На это и надеялся, спасибо за инфу.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.