Взаимоблокировки (Записать в Журнал регистрации)

1. TVA_11 26.07.23 15:30 Сейчас в теме
РегистрНакопления.ОтгрузкаТоваров
Ошибка при вызове метода контекста (Записать): Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 10.0: Транзакция (идентификатор процесса 100) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно.
HRESULT=80004005, SQLSrvr: SQLSTATE=40001, state=38, Severity=D, native=1205, line=1
Ошибка при попытке проведения документа!

Здравствуйте!

Есть регистр ОтгрузкаТоваров и он прописан в Движении документа Отгрузка.
Нигде в конфигурации регистр.ОтгрузкаТоваров.Записать() - нет.

Надо отловить вышеуказанный случай, который выходит пользователям и записать в журнал регистраций. (Чтобы увидеть статистику и поискать возможные причины..)

Как записывать в Журнал регистрации - взамоблокировки Движения документов?



Процедура ОбработкаПроведения(Отказ, Режим)

	// регистр ОтгрузкаТоваров Расход
	Движения.ОтгрузкаТоваров.Записывать = Истина;
	Движения.ОтгрузкаТоваров.Очистить();
		
		Для Каждого ТекСтрокаТовары Из Товары Цикл
			Движение = Движения.ОтгрузкаТоваров.Добавить();
			Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
			Движение.Период = Дата;
			Движение.Организация = Организация;
			Движение.Склад = Склад;
			Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
			Движение.ХарактеристикаНоменклатуры = ТекСтрокаТовары.ХарактеристикаНоменклатуры; 
			Движение.ШтрихкодОтгрузки = ШтрихкодОтгрузки;
			Движение.Контрагент = Контрагент;
			Движение.ДокументРеализации = ДокументРеализации;
			Движение.Количество = ТекСтрокаТовары.Количество;
			Движение.Стоимость = ТекСтрокаТовары.Стоимость;
		КонецЦикла;
		

КонецПроцедуры


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	// Вставить содержимое обработчика.
	Если ОбменДанными.Загрузка  Тогда
		Возврат;
	КонецЕсли;
КонецПроцедуры
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
5. nomad_irk 80 26.07.23 16:23 Сейчас в теме +0.03 $m
(4)Для этого есть другие средства: технологический журнал.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. TVA_11 26.07.23 15:42 Сейчас в теме
(1)

Может в модуль регистра куда-то можно вставить подобную конструкцию?


	НачатьТранзакцию();
	Попытка


//  Движения..?

	ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		// Запись события в журнал регистрации для системного администратора.
    	ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"),
       	УровеньЖурналаРегистрации.Ошибка,,Строка(СсылкаДляПередачиВЖурналРегистрации(Ссылка)),
       	ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));		
		
		Отказ = Истина;
	#Если Клиент или ВнешнееСоединение Тогда
		Сообщить("Не выполнена запись об изменении документа");
	#КонецЕсли
	КонецПопытки;

Показать
3. nomad_irk 80 26.07.23 15:52 Сейчас в теме
(1)Вы бы лучше разобрались в причине появления взаимоблокировок
4. TVA_11 26.07.23 16:17 Сейчас в теме
(3)
А как разобраться, если не видно когда она происходит?
В журнале то записи нет.
5. nomad_irk 80 26.07.23 16:23 Сейчас в теме +0.03 $m
(4)Для этого есть другие средства: технологический журнал.
6. TVA_11 26.07.23 16:58 Сейчас в теме
(5)
Решил, добавить запись регистра явным образом.
В транзакции.

Движения.ОтгрузкаТоваров.Записать();

На тесте, все работает.
7. TVA_11 28.07.23 12:49 Сейчас в теме
(5)

Ошибка локализована.
Запускаем два клиента, на одном делаем массовое распроведение РТиУ через групповую обработку.
На втором, так же проводим ЧекиККМ.

{Обработка.ГрупповаяОбработкаСправочниковИДокументов.Форма.Форма.Форма(1701)}: Ошибка при вызове метода контекста (Записать)
Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 10.0: Транзакция (идентификатор процесса 115) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно.
HRESULT=80004005, SQLSrvr: SQLSTATE=40001, state=38, Severity=D, native=1205, line=1

Вроде бы все удачно, но не указывается причина блокировки, ожидаемо регистр по товарам.
Непонятно, что взаимоблокируется.

Как быть?
9. TVA_11 28.07.23 13:58 Сейчас в теме
(8) Эта обработка только под управляемые формы..
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот