В ERP по умолчанию выстален режимы ведения взаиморасчетов "онлайн" (итс), соотвественно, распределение расчетов по документам запускается сразу в транзакции проведения документов. Но у клиента постоянно возникает таймаут на блокировках при установке соотвествующей константы, хотя пользователей (пока) не больше ста:
Ошибка при вызове метода контекста (Установить)
{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(8421)}:Константы.ВыполняетсяРаспределениеПлановыхРасчетов.Установить(Истина);
{(1)}:ОперативныеВзаиморасчетыСервер.ВыполнитьФоновоеРаспределениеРасчетов(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5359)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1456)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1433)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
по причине:
Конфликт блокировок при выполнении транзакции:
Превышено максимальное время ожидания предоставления блокировки
Показать
Отсюда вопрос: пользуетесь ли вы таким режимом на нагруженных базах? Решение вендора менять константу при проведении документа, кажется, довольно спорным.
Это еще что. при пробитие чека именно при пробитии, не проведении, чека может запускаться фоновое по перераспределению расчетов, и если документ оплаты в закрытом периоде для пользователя то ошибка по дате запрета...
(3) Ну, это ошибка не совсем связана с вопросом :)
Да, и, кажется, там привилегированный режим распределения расчетов.
У вас видимо тоже онлайн-режим? Насколько стабильно он отрабатывает?
(4) Видимо хотел сказать что косяков похожих на твой там полно. Могу тоже подкинуть, например пересчет планов, там тоже эксклюзивная блокировка целиком на на регистр сведений накладывается, причем от нечего делать при открытии формы плана ))). А кому и этого мало, ещё и по таймеру запустим на форме списка )))
Уже наверное не актуально
Но если есть такая ошибка, нужно выносить установку из транзакции
вместо
НачатьТранзакцию()
Попытка
Константы.ВыполняетсяРаспределениеПлановыхРасчетов.Установить(Истина)
нужно
Константы.ВыполняетсяРаспределениеПлановыхРасчетов.Установить(Истина)
НачатьТранзакцию()
Попытка