|
Какая блокировка ставится при Сообщение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) На это и надеялся, спасибо за инфу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |