Конфликт блокировок при выполнении транзакции (1С:БУС)

1. triviumfan 97 27.01.22 10:42 Сейчас в теме
Доброго дня.

Есть вот такая шляпа:

src\basic\src\DocumentLogFormObjController.cpp(884):
afd2b550-0d52-4e03-b448-15ed68d87ac5
0d2200af-1696-4395-91e5-2872675e6d3d: Ошибка при выполнении обработчика - 'ОбработкаПроведения'
8d366056-4d5a-4d88-a207-0ae535b7d28e: Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Объект.Движения.Записать();
{Документ.ПриходныйОрдерНаТовары.МодульОбъекта(101)}: ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);
f08d92f8-9eb2-4e19-9dd9-977d907cec2d: Ошибка при выполнении обработчика - 'ПередЗаписью'
0d2200af-1696-4395-91e5-2872675e6d3d: Ошибка при выполнении обработчика - 'ПередЗаписью'
8d366056-4d5a-4d88-a207-0ae535b7d28e: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения)
{ОбщийМодуль.Б_ОбменССайтомСервер.Модуль(566)}: ПланыОбмена.ЗарегистрироватьИзменения(МассивУзловТовары, Запись.Номенклатура);
{ОбщийМодуль.Б_ОбменССайтомСервер.Модуль(175)}: ЗарегистрироватьИзменения(Источник, Замещение);
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Объект.Движения.Записать();
{Документ.ПриходныйОрдерНаТовары.МодульОбъекта(101)}: ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);
f08d92f8-9eb2-4e19-9dd9-977d907cec2d
dc31263e-ecbf-41bd-9b3a-7b55897d5fd6: Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 11.0: Lock request time out period exceeded.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=33, Severity=10, native=1222, line=1
Показать

Я много раз видел ошибки с блокировками с планами обмена, но они были связаны с тем, что использовался метод ВыбратьИзменения(). У меня же типовой модуль Битрикса 7 редакции и УТ11.4.
Там изменения получаются запросом! Далее складываются в пакеты, пакеты в файлы, файлы уже идут в Битрикс.
Я не пойму, в чем проблема то?

Хотя, вижу, что судя по ошибке, проблема связана с узлом "Товары"
ПланыОбмена.ЗарегистрироватьИзменения(МассивУзловТовары, Запись.Номенклатура).

А в товарах у нас всегда множество изменений, ведь регистрируется там почти вся номенклатура из-за того, что меняется количество, цена, сегмент ... все эти телодвижения регистрируют номенклатуру к выгрузке и получаем ~10к номенклатуры в узле Б (выгрузка изменений каждый час). Сейчас думаю, чтобы исправить это на уровне регистрации к выгрузке. Правильно ли я двигаюсь?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1203706 14 27.01.22 10:50 Сейчас в теме
(1)
Зачем при проведении документа регистрировать к обмену саму номенклатуру ?
Что за дикость ?...
3. triviumfan 97 27.01.22 10:54 Сейчас в теме
(2) Так написан типовой интеграционный модуль Б.
При выгрузке номенклатуры он берёт её, доп реквизиты, количество и цены.
Отдельной выгрузки цен и остатков нету.
При проведении разных типов доков, влияющих на это, идёт регистрация именно номенклатуры.
4. user1203706 14 27.01.22 10:56 Сейчас в теме
(3) Это полный ПЭ.
Кто писал это чудо ?
6. user1203706 14 27.01.22 13:19 Сейчас в теме
(5) какая версия платформы хоть ?
Тут только или переписывать это чудо..
Релиз платформы какой у вас ?
Какой режим блокировки установлен в свойствах конфы ?
7. triviumfan 97 27.01.22 14:21 Сейчас в теме
(6) последняя, управляемый режим, разумеется, ут11.4 как никак)
Никто не будет переписывать стандартный модуль обмена.
8. user1203706 14 27.01.22 14:42 Сейчас в теме
(7) mdop = 1 хоть в свойствах сервера ?
11. triviumfan 97 28.01.22 09:31 Сейчас в теме
9. user1203706 14 27.01.22 14:44 Сейчас в теме
(7) я б переписал, и эту ересь с регистрацией номенклатуры в перед записью , в первую очередь.

Оно поди, во всех доках такое - в реализации/поступлении/списании.. раз в приходном ордере даже запихали?
12. triviumfan 97 28.01.22 09:32 Сейчас в теме
(9)
Оно поди, во всех доках такое - в реализации/поступлении/списании.. раз в приходном ордере даже запихали?

Верно
10. user1203706 14 27.01.22 14:46 Сейчас в теме
2) Выгрузка на сайт только измененных позиций с момента последней выгрузки.


Ага, таким извращенным способом, они поди вот это реализовали в своей поделке.
13. user1203706 14 28.01.22 10:57 Сейчас в теме
(12) есть запрос выгрузки, где идёт обращение к табличке изменений Номенклатуры, что б понимать, чего помимо самой номенклатуры летит в обмен ?
Если там остатки/цены..то имеет смысл выкинуть регистрацию самой номенклатуры со всех доков, и тупо (если она так нужна), получать её с тех же доков за период потом запросом при обмене.
14. Free_Danial 59 28.01.22 19:04 Сейчас в теме
Можно попробовать найти что с чем заблокировалось в момент выгрузки:
На SQL пособирать события:
lock_timeout_greater_than_0
rpc_completed
sql_batch_completed
lock_escalation
lock_acquired

Для 1С ТЖ
<?xml version="1.0"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">

<log location="Ваш путь" history="8">

<event>
<eq property="name" value="DBMSSQL"/>
</event>
<event>
<eq property="name" value="SDBL"/>
</event>
<event>
<eq property="name" value="CALL"/>
</event>
<event>
<eq property="name" value="EXCP"/>
</event>
<event>
<eq property="name" value="EXCPCNTX"/>
</event>

<property name="all"/>

</log>

</config>

С событий SQL- ТЖ найдете код с которым блокируется, может тоже регламентное задание и сможете разнести по времени или подкорректировать код.
Для правок типового можно расширением обойтись и написать разрабам конфы о проблеме блокировок для исправления на постоянке.
Дмитрий74Чел; +1 Ответить
15. user1203706 14 28.01.22 19:13 Сейчас в теме
(14) автор уже нашел это - запись регистрации всей номенклатуры ТЧ доков при проведении каждого документа с товаром.
16. triviumfan 97 29.01.22 00:36 Сейчас в теме
Мне вообще интересно, кто-нибудь вообще использует битрикс как интернет-магазин?! какая-нибудь средняя контора с достаточно большим документооборотом? Он же вообще неюзабелен.
17. LosevI 05.10.23 09:32 Сейчас в теме
Здравствуйте. Как решили, чем кончилось? Та же самая проблема с тем же самым модулем Битрикс и даже стек +- такой же.
Проблема возникает у нас при перезаписи документов внутри собственного алгоритма в длительной операции (фоновое задние).
УТ 11.5.12, модуль Битрикс актуальный под нее.
18. nomad_irk 76 05.10.23 09:50 Сейчас в теме
(17)ИМХО, решение одно: выкинуть модули обмена Bitrix и написать свой обмен с блэкджеком и женщинами, иначе все так и будет.
19. LosevI 05.10.23 10:02 Сейчас в теме
(18) Ну что-же так радикально. Клиент годами работал и все было ок. Недавно вот обновили с 11.4 на 11.5 + обновили соответственно модуль Битрикс, давно не обновляли. И началось вот это. Чтобы самим там писать обмен нет ни бюджетов ни времени. Хочется услышать ответ именно от топик стартера, что сделали конкреетно они потом с этим.

Все таки битрикс это не подвал, попробую их тех. поддержку.
20. nomad_irk 76 05.10.23 10:03 Сейчас в теме
(19)
Ну что-же так радикально.

Потому что модуль обмена написан кем угодно, только не программистами 1С.
21. Дмитрий74Чел 239 16.11.23 11:53 Сейчас в теме
(19) Есть ответ от техподдержки?
22. LosevI 17.11.23 05:01 Сейчас в теме
(21) Не обращался в итоге. Посмотрел код. Лично у нас не смог в модуле Битрикс найти место, где данные по номенклатуре бы извлекались из этого узла обмена. Они туда всегда только пишутся, но не удаляются, по итогу там уже тысячи номенклатур лежат, и все время код пытается при каждом чихе внести туда то, что там уже есть. Обмен с сайтом также узел не очищает.

Дописал модуль сам. В местах, где у них было ЗарегистрироватьИзменения по узлу с номенклатурой, вместо этого вызываю свой код, который сначала запросом проверяет, нет ли там уже этого.

После этого проблемы ушли, вроде как.
Предвещая возможный вопрос - код доработки скинуть не смогу, доступа больше к этой конфигурации этого клиента у меня нет. Но идею дал.
Дмитрий74Чел; +1 Ответить
Оставьте свое сообщение

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