Имя: Пароль:
1C
1С v8
Конфликт блокировок при выполнении транзакции.
,
0 Serpom
 
12.10.21
06:46
Делаю фоновое проведение документа. Когда начинаю его проводить выходит ошибка:
Проведение документа Расчет себестоимости выпуска. ДлительныеОперации.ВыполнитьСКонтекстомКлиента
Задание завершено с ошибками {ОбщийМодуль.ПроцедурыРасчетаСебестоимостиРасширеннаяАналитика.Модуль(921)}: Ошибка при вызове метода контекста (Записать)
        СтруктураНаборыЗаписей.УчетЗатрат.Записать(Ложь);
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 11.0: Lock request time out period exceeded.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=38, Severity=10, native=1222, line=1
Подскажите куда смотреть? Как убрать блокировку?
1 Конструктор1С
 
12.10.21
06:50
Запускай в профилировщике скуля трассировку с событием deadlock, он тебе покажет, запись каких данных сталкивается лбами
2 Serpom
 
12.10.21
06:58
(1) А если до скуля доступа нет, то по другому никак?
3 ДенисЧ
 
12.10.21
07:07
(2) Можно техжурнал настроить, а потом его просмотреть.
ТутЪ есть видео, в картинках показывают
https://www.youtube.com/results?search_query=1с+анализ+блокировок

Но если нет доступа и к ТЖ, то остаётся только ставить свечи и поливать сервер святой водой (литр на гигагерц)
4 osa1C
 
12.10.21
07:17
(3) думаешь литра будет достаточно?
5 ДенисЧ
 
12.10.21
07:20
(4) Святой воды - да. А того, о чём ты подумал - нет.
6 osa1C
 
12.10.21
07:22
(5) я о святой воде и думал)))) Каждый думает в меру своей распущенности )))
7 ИС-2
 
naïve
12.10.21
07:26
(0) батенька, да Вы извращенец. Это расчет себестоимости. Он накладывает блокирвку на основные регистры и ни кто работать не может.
Или у Вас ошибка вылетает когда только 1 человек в базе ?
8 Serpom
 
12.10.21
07:32
(7) Да, ошибка вылазит когда 1 человек в базе.
9 Serpom
 
12.10.21
08:55
(0) И еще один момент. Если в коде отключить форму прогресса выполнения (ДлительныеОперацииКлиент.ОжидатьЗавершение(Результат, , ПараметрыОжидания);) то тогда документ проводится в фоне без проблем.
10 1c-kind
 
12.10.21
09:14
(8) Проверяйте работающие фоновые задания.
11 pechkin
 
12.10.21
09:37
(1) deadlock?  с какого х..?
12 pechkin
 
12.10.21
09:38
наверняка несколько фоновых запускается
13 Конструктор1С
 
12.10.21
10:05
(11) с телефона читал топик. Событие профилировщика будет timeout
14 pechkin
 
12.10.21
10:09
поищи в ошибках ерп. наверняка уже зарегистрирована
15 H A D G E H O G s
 
12.10.21
10:13
(1) Я тебе без профайлера скажу, что это регистр УчетЗатрат.
16 fisher
 
12.10.21
10:15
Фига себе. А какой же там таймаут?
17 Serpom
 
12.10.21
10:18
(12) Фоновое одно. Это уже проверил
18 Конструктор1С
 
12.10.21
10:24
(15) спасибо, кэп, только нужно выяснить кого он там ожидал
19 Serpom
 
12.10.21
10:26
Сейчас, кстати, начала падать в другом месте:
{ОбщийМодуль.КорректировкаСтоимостиУчетЗатрат.Модуль(108)}: Ошибка при получении значения атрибута контекста (ОтражатьВУправленческомУчете)
    Если РегламентныйДокумент.ОтражатьВУправленческомУчете Тогда
по причине:
Конфликт блокировок при выполнении транзакции:
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
20 ДенисЧ
 
12.10.21
10:27
Я дал ссылки на видео, где разбирается, как искать взаимоблокировки. Там одно, на полчаса. За это время уже можно было бы посмотреть.
21 pechkin
 
12.10.21
10:28
(20) это НЕ взаимоблокирвоки
22 ДенисЧ
 
12.10.21
10:29
(21) ТЫ УВЕрен?
23 pechkin
 
12.10.21
10:30
(22) ты путешь lock timeout и deadlock
24 pechkin
 
12.10.21
10:31
25 ДенисЧ
 
12.10.21
10:33
(23) Я не путаю. Но начать с видео, чтобы иметь хотя бы представление - имеет смысл.
26 ДенисЧ
 
12.10.21
10:34
Тем более падает основной процесс на превышении. А почему превышение? Потому что кто-то другой держит и не отдаёт.
27 H A D G E H O G s
 
12.10.21
10:34
(18) другую транзакцию с этим же самым регистром. Откуда вы беретесь?
Профайлер ничем не поможет, нужно собирать ТЖ с контекстом выполнения, чтобы был стек вызовов, тогда только можно будет понять.
28 ДенисЧ
 
12.10.21
10:36
(27) "нужно собирать ТЖ "
Слышал про поговорку про кол и тесать? Так тут именно такая ситуация.
29 Конструктор1С
 
12.10.21
10:38
(27) вообще-то я это и имел ввиду
30 H A D G E H O G s
 
12.10.21
10:40
Даже не знаю, как в современной конфиге, ситуация докатилась до СУБД таймаута, может плохой план запроса при чтении и скан всей таблицы.
31 fisher
 
12.10.21
10:41
На длинных блокировках частенько можно и без всяких ТЖ, профайлеров и стеков вызовов догадаться о сути проблемы тупо в мониторинге сиквельных процессов. Глянув какой процесс какой ожидает и что в обоих происходит. Но не всегда, конечно.
32 Конструктор1С
 
12.10.21
11:13
(24) парсит 1сом ТЖ такая себе идея. На этом прогорел 1сный ЦУП. Там, где bash-утилиты отрабатывают за минуты, доблестный ЦУП может пыхтеть часами, а то и днями
33 H A D G E H O G s
 
12.10.21
11:44
(32) Писать ерунду, не вникая в подробности - не меньшее зло. Вы крайне близки к попаданию в список.
34 pechkin
 
12.10.21
11:47
(30) эскалация же
35 H A D G E H O G s
 
12.10.21
11:48
(34) Да, это очень может быть.

Вот тут автору поможет профайлер с фильтром на эскалацию, а потом, если подтвердиться, ключ
-t1211
36 2mugik
 
12.10.21
12:30
(0)А не фоновое проведение нормально отрабатывает?
37 Конструктор1С
 
12.10.21
12:34
(33) сам же ерунду и пишешь
38 H A D G E H O G s
 
12.10.21
12:58
##молча добавляет Конструктора в список к Г1С и Ливингстарам.
39 Конструктор1С
 
12.10.21
13:00
Сначала в себе разберись. То ему в скульной блокировке профилировщик не помощник, потом вдруг помощник
40 pechkin
 
12.10.21
13:02
(39) искать другую сторону не помощник. искать эскалацию - помощник
41 Конструктор1С
 
12.10.21
13:11
(40) проливать информацию, почему возникла блокировка - помощник
42 pechkin
 
12.10.21
13:12
(41) этой инфы будет явно не достаточно и поэтому и смысла этого делать нет
43 Конструктор1С
 
12.10.21
13:16
(42) а я что, где-то писал "только профилировщик и ничего более"? Так-то логично первым делом узнать подробности у скуля, что же ему не понравилось. И только потом нырять в ТЖ. Я тебе даже больше скажу, скуль тебе подскажет SPID и номер транзакции, по которым ты потом быстренько найдёшь инфу в ТЖ
44 H A D G E H O G s
 
12.10.21
13:19
(43) SQL profiler без отборов тебе выдаст портянку в подмиллион строк в продуктивной системе, при этом, тормознет ее нехило и с ненулевым шансом, подвесит. Ты репу почешешь и скажешь - не смогла.

А ИР в (24) разбирает гиговые ТЖ за несколько минут, через внешние компоненты, но ты, скорее всего, даже его не щупал.
45 H A D G E H O G s
 
12.10.21
13:20
Поэтому, в список, в список.

Вы особенно и опасны, что извлекаете из себя околоправильные вещи, с умным видом, которые оказываются вредными.
46 Конструктор1С
 
12.10.21
13:24
(44) да-да-да, как бы не миллиард. Внезапно, есть событие lock:timeout, которое выводит _только_ таймауты. Профэссор, блин
На кой нужен этот ИР, когда с ТЖ прекрасно работается bash-утилитами?
47 pechkin
 
12.10.21
13:26
(46) так нужен то не таймаут. таймаут - вот он в (0). нужен тот кто установил. а их миллионы может быть
48 pechkin
 
12.10.21
13:26
(46) вопрос из серии: зачем гуй, когда можно все командами
49 ДенисЧ
 
12.10.21
13:27
(48) вопрос простой - зачем набирать две строки непонятных символов (видео из ссылки выше), ошибаясь в каждой, если можно у гуе галками расставить?
50 Конструктор1С
 
12.10.21
13:27
(47) у него что там, гугловские запросы к регистру идут?
51 Serpom
 
13.10.21
04:48
(36) Не фоновое проводится без проблем. И без ожидания завершения (как я писал выше (9)), тоже проводится.
52 pechkin
 
13.10.21
09:08
Отключи эскалацию и попробуй еще раз