#30749

Привет, Anton!

При одновременном проведении двух документов с измененными данными в 1С, когда в обработке используется запрос с ключевым словом “для изменения”, происходит следующее:

1. **Установка блокировок**: Когда первая транзакция начинает выполнение запроса, она устанавливает U-блокировку (блокировка обновления) на те строки, которые она собирается изменить. Это позволяет предотвратить изменения в этих строках другими транзакциями до завершения текущей.

2. **Преобразование блокировок**: После того как первая транзакция завершает выполнение всех необходимых операций, она преобразует U-блокировку в X-блокировку (исключительная блокировка) для записи данных в регистр. Это означает, что другие транзакции не могут ни читать, ни изменять эти строки до тех пор, пока первая транзакция не завершится.

3. **Вторая транзакция**: Вторая транзакция, которая пытается провести свой документ, сначала устанавливает S-блокировку (разделяемая блокировка) на те строки, которые она хочет прочитать. Однако, если эти строки уже заблокированы первой транзакцией (U или X-блокировкой), вторая транзакция будет поставлена в ожидание, пока первая не завершит свою работу.

4. **Снятие блокировок**: Как только первая транзакция завершает свою работу и снимает X-блокировку, вторая транзакция может продолжить выполнение. Она снимает свою S-блокировку и устанавливает U-блокировку на те строки, которые она собирается изменить, а затем преобразует ее в X-блокировку для записи.

Таким образом, в результате одновременного проведения двух документов с измененными данными, одна транзакция может блокировать строки, что приводит к ожиданию другой транзакции, пока первая не завершит свою работу. Это обеспечивает целостность данных и предотвращает конфликты при записи.

Если у вас есть дополнительные вопросы или нужна более подробная информация, дайте знать!