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

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

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

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


Ага, таким извращенным способом, они поди вот это реализовали в своей поделке.
13. user1203706 12 28.01.22 10:57 Сейчас в теме
(12) есть запрос выгрузки, где идёт обращение к табличке изменений Номенклатуры, что б понимать, чего помимо самой номенклатуры летит в обмен ?
Если там остатки/цены..то имеет смысл выкинуть регистрацию самой номенклатуры со всех доков, и тупо (если она так нужна), получать её с тех же доков за период потом запросом при обмене.
14. Free_Danial 53 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 12 28.01.22 19:13 Сейчас в теме
(14) автор уже нашел это - запись регистрации всей номенклатуры ТЧ доков при проведении каждого документа с товаром.
16. triviumfan 93 29.01.22 00:36 Сейчас в теме
Мне вообще интересно, кто-нибудь вообще использует битрикс как интернет-магазин?! какая-нибудь средняя контора с достаточно большим документооборотом? Он же вообще неюзабелен.
17. LosevI 05.10.23 09:32 Сейчас в теме
Здравствуйте. Как решили, чем кончилось? Та же самая проблема с тем же самым модулем Битрикс и даже стек +- такой же.
Проблема возникает у нас при перезаписи документов внутри собственного алгоритма в длительной операции (фоновое задние).
УТ 11.5.12, модуль Битрикс актуальный под нее.
18. nomad_irk 71 05.10.23 09:50 Сейчас в теме
(17)ИМХО, решение одно: выкинуть модули обмена Bitrix и написать свой обмен с блэкджеком и женщинами, иначе все так и будет.
19. LosevI 05.10.23 10:02 Сейчас в теме
(18) Ну что-же так радикально. Клиент годами работал и все было ок. Недавно вот обновили с 11.4 на 11.5 + обновили соответственно модуль Битрикс, давно не обновляли. И началось вот это. Чтобы самим там писать обмен нет ни бюджетов ни времени. Хочется услышать ответ именно от топик стартера, что сделали конкреетно они потом с этим.

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

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

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

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

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)