Имя: Пароль:
1C
 
База зависает при проведении документа.
0 Dunstan
 
22.06.17
15:22
Есть самописная база. На сервере 1с зависает, а в файловом варианте нет. В какую сторону копать?
1 1c-kind
 
22.06.17
15:23
Проверить выполнение регламентных заданий на сервере БД.
2 Dunstan
 
22.06.17
15:24
База простая как песня. Там их нет этих регламентных заданий.
3 ejikbeznojek
 
22.06.17
15:25
Количество пользователей?
4 pessok
 
22.06.17
15:27
блокировки?
5 Dunstan
 
22.06.17
15:29
пользователь один
она тестовая
6 Cyberhawk
 
22.06.17
15:31
А ты там кем?
7 Dunstan
 
22.06.17
15:36
Такой нюанс. Там доформировываются комплекты(или нет) и делается новым методом проведения. И записываются и проверяются остатки в обработке проведения.
И когда прошло движение с отрицательными остатками и дальше надо просто Отказ = Истина и выйти, вот тогда зависает на сервере, а в файловой все ок.
8 Dunstan
 
22.06.17
15:36
(6) там полные права
9 Fragster
 
гуру
22.06.17
15:36
да, так и задумано
10 Господин ПЖ
 
22.06.17
15:36
дедлок
11 Fragster
 
гуру
22.06.17
15:37
ошибка в (7). допроведение и сам алгоритм проведения не должны трогать одни и те же данные
12 ejikbeznojek
 
22.06.17
15:37
Так запусти замер производительности
и пакеж запрос, который висит)
13 Dunstan
 
22.06.17
15:37
ну куда копать то?
14 Fragster
 
гуру
22.06.17
15:37
или допроведение должно работать после проведения
15 Fragster
 
гуру
22.06.17
15:38
в файловой фоновое ждет освобождения блокировки таблицы, а в серверной - нет
16 Dunstan
 
22.06.17
15:38
Зависает при выходе из процедуры обработки проведения.
17 Dunstan
 
22.06.17
15:39
нет фоновых заданий
18 Cyberhawk
 
22.06.17
15:40
(15) Что за фоновое по допроведению?
19 Fragster
 
гуру
22.06.17
15:40
тогда что такое "допроведение"?
20 Fragster
 
гуру
22.06.17
15:40
(18)->(19)
21 pessok
 
22.06.17
15:42
(7) а что, нельзя все сначала посчитать/проверить в транзакции, а потом, если надо, дописать/исправить/выйти и уже зафиксировать? зачем двойное проведение?
22 Cyberhawk
 
22.06.17
15:43
(19) Так это ты ввел такой термин. Что имеешь в виду?
23 Fragster
 
гуру
22.06.17
15:46
(22) я плохо прочитал (7) :)
просто иногда по "оперативным" регистрам идет проведение в обработке проведения, а по остальным - регламентом/фоновым. и если стартовать это фоновое в обработке проведения, то нужно обеспечить начало этого фонового после обработки проведения, например эксклюзивной блокировкой чего-нибудь.

так делается для психологической "более быстрой работы" 1с.
24 pessok
 
22.06.17
15:47
(23) на самом деле, это реально неплохо ускоряет работу. особенно БСПшных тяжеленных конф, а-ля ERP.
но чет мне кажется, что тут дело в другом :)
25 Cyberhawk
 
22.06.17
15:58
(23) "нужно обеспечить начало этого фонового после обработки проведения, например эксклюзивной блокировкой чего-нибудь" // В ФЗ делать что ли бесконечный цикл по проверке заблокированности чего-либо, ожидая, когда завершение транзакции проведения (записи) освободит заблокированное?
Не проще ли массово шерстить очередь документов-кандидатов на допроведение без привязки к событию проведения каждого документа?
26 Fragster
 
гуру
22.06.17
16:03
(25) нет, можно сделать как в многопоточном тесте производительности для обеспечения одновременности старта потоков - в "родительской" транзакции установить эксклюзивную блокировку на ресурс, а в "дочерней" - разделяемую. в случае фонового допроведения это может быть сама ссылка на документ.
27 Dunstan
 
22.06.17
16:45
Эх как Вас всех далеко унесло.
1. Фоновых заданий нет
2. Пользователь один с полными правами
Кратко алгоритм:
Документ расхода при галке "Собирать недостающие комплекты" их формирует и списывает, а так отказывается от проведения.
Проведение по новой методике: все списывает, а потом если запрос по отрицательным остаткам. Если ок, то проводит, если нет то отказ = истина и возврат,
Вот когда  отказ = истина и возврат,то при выходе из обработки проведения 1с зависает.
Зависает только на сервере, в файловом варианте все ок!
Все делается в обработке проведения. Больше ничего нет!
28 pessok
 
22.06.17
16:49
(27) после "все списывает" транзакция завершается?
да и, почему бы сначала не сделать запрос, прибавив к остатков то количество, которое надо списать?
29 H A D G E H O G s
 
22.06.17
16:52
Посмотреть, не full ли режим стоит у базы и когда последний раз делался бэкап с этом случае.
Короче, смотреть размер лог файла.
30 Dunstan
 
22.06.17
16:53
(28) А разве обработка проведения она не есть одна транзакция?
ну новая методика проведения. Проводит как есть, потом саотрим отрицательные остатки. Если ушли в минус выходим с отказом.
31 Dunstan
 
22.06.17
16:55
(29) фул режим это где смотреть?
32 Cyberhawk
 
22.06.17
17:03
(31) В свойствах базы в СУБД
33 Cyberhawk
 
22.06.17
17:04
"Вот когда  отказ = истина и возврат,то при выходе из обработки проведения 1с зависает" // При откате транзакции, значит, зависает
34 Dunstan
 
22.06.17
17:09
(31) спс гляну
(32) ну да
35 Dunstan
 
22.06.17
17:12
(32) спс за обобщение
а как с этим бороться то?
36 Cyberhawk
 
22.06.17
17:15
(35) Надо знать, с чем бороться. Может, у тебя там подписка какая с кодом #Если Сервер Тогда,
а может дело исключительно в СУБД.
Перенеси инфобазу в другую СУБД и проверь.
37 Cyberhawk
 
22.06.17
17:16
+(36) В другую СУБД на другом хосте
38 Dunstan
 
22.06.17
17:24
(37) Спс Попробую
39 Dunstan
 
23.06.17
13:27
В продолжении темы поставил себе локально PostgreSQL и на нем не зависает.
40 Cyberhawk
 
23.06.17
13:37
(39) Тогда попробуй обслужить рабочую базу (шринкани лог хотя бы)
41 Dunstan
 
23.06.17
13:48
а кроме шринка что еще можно посмотреть?
42 Cyberhawk
 
23.06.17
13:50
43 Cyberhawk
 
23.06.17
13:50
44 Cyberhawk
 
23.06.17
13:53
45 Dunstan
 
24.06.17
17:25
Thanks a big, Cyberhawk!