Имя: Пароль:
1C
1С v8
Как долго 1С может ожидать разблокировки таблицы для записи?
,
0 Бешеный заяц
 
12.11.20
12:00
Планирую грузить данные из Документа оборота в Документооборот через сервис в несколько потоков (чем больше тем лучше пока не ришил), вопрос возможны ли ошибки когда пытается записаться одновременно два объекта, таблица же блокируется? как долго 1С может ожидать таблицу для записи не влетая в ошибку? данные для записи это регистры сведений и справочники
1 ДенисЧ
 
12.11.20
12:00
Сколько указано в настройках
2 Бешеный заяц
 
12.11.20
12:03
(1) где это можно посмотреть?
Во время записи образуется вроде очереди по типу FIFO кто раньше встал в очередь на запись тот первым и запишется? или все рандомно происходит?
3 youalex
 
12.11.20
12:05
Администрирование/Параметры информационной базы. В конфигурятнике.
4 ДенисЧ
 
12.11.20
12:06
Порядком рулит сервер 1с. Но в общем да, тапки забирает первый.
5 Бешеный заяц
 
12.11.20
12:08
ок спасибо, буду изучать
6 Василий Алибабаевич
 
12.11.20
12:11
(2) "образуется вроде очереди по типу FIFO".
Никакой очереди. С заданным периодом задержки каждый поток стучится на сервер за ресурсами. Никто и никогда вам не скажет будет ли доступен в такое-то время нужный ресурс.
Постучался на сервер - получил отлуп - подождал - опять постучался. И так пока не надоест или не получит нужный ресурс.
7 Бешеный заяц
 
12.11.20
13:13
(6) печально организован механизм(( сложно многопоток организовывать
8 ДенисЧ
 
12.11.20
13:54
(7) А зачем у тебя многопоток впятером в один элемент справочника пишет?
9 Бешеный заяц
 
12.11.20
14:11
(8) нет, так при записи вся таблица блокируется те весь справочник или я не прав?
10 vicof
 
12.11.20
14:12
(9) Смотря какая платформа. Смотря какие блокировки наложены. Смотря на какое пространство блокировок.
11 vicof
 
12.11.20
14:13
+ Смотря какой режим совместимости
12 ДенисЧ
 
12.11.20
14:13
(9) То есть ты даже не разобрался в блокировках, а уже многопоток делаешь?
13 Бешеный заяц
 
12.11.20
14:27
(12) насколько помню правило такое, если управляемая блокировка то ты волен сам ей управлять отборами, если автоматическая то тупо блокируется вся таблица.
(10) платформа 8.3.15 режим совместимости Версия 8.3.8
14 ДенисЧ
 
12.11.20
14:37
(13) Плохо помнишь. Если блокировка автоматическая, то начинает действовать скуль
15 ДенисЧ
 
12.11.20
14:37
а вот если файловая...
16 ProxyInspector
 
12.11.20
15:40
8-ка с точки зрения многопоточности полный отстой. В настройках базы по аналогии с 7-кой есть параметр "Время ожидания блокировка данных". Так вот в 7-ке это работало, а в 8-ке - нет. Поэтому если ты запустишь обработку в два потока в момент  Документ.Записать() сразу же возникнет блокировка. Единственный способ немного сгладить ситуацию везде делать
Попытка
     Документ.Записать();
Исключение
     Документ.Записать();
КонецПопытки;
17 H A D G E H O G s
 
12.11.20
18:01
Единственный способ немного сгладить ситуацию - это не слушать бред недалеких.
18 Бешеный заяц
 
12.11.20
18:09
(17) в смысле? блокировка мешать не будет?
19 youalex
 
12.11.20
18:28
(16) пятнично)
20 1Сергей
 
12.11.20
18:32
(17) +1
21 BeerHelpsMeWin
 
12.11.20
18:32
(16)
ДокументЗаписан=Ложь;
Пока НЕ ДокументЗаписан Цикл
  Попытка
    Документ.Записать();
    ДокументЗаписан=Истина;
  Исключение
  КонецПопытки;
КонецЦикла;

Только так!
22 1Сергей
 
12.11.20
18:34
я бы старался потоки разделить по каким-то признакам и строить блокировки соответственно
23 Aleksey
 
12.11.20
18:43
(21) И так долбиться пока сервер не ляжет?
24 fisher
 
12.11.20
18:44
Запись регистров сведений и справочников в принципе параллелиться должна и на автоматических блокировках. Но сколько ты на этом планируешь выиграть и не пытаешься ли решать несуществующую проблему?
Если производительность в один поток устраивает, то не ищи приключений. Грамотную работу в несколько потоков в пол-пинка не сделаешь.
25 fisher
 
12.11.20
18:47
(21) Это алгоритм китайской записи. На какой-то попытке 1с придется согласиться, что документ должен записаться без ошибок :)
26 vi0
 
12.11.20
19:18
(24) регистры сведений на автоматических блокировках это сериалайзбл, а значит вероятны избыточные блокировки
27 vi0
 
12.11.20
19:19
(25) ну да, в тех журнале будет запись "уговорил таки"
28 Бешеный заяц
 
13.11.20
09:06
(24) мне около 70к внутренних документв нужно залить + вся "свита" к ним в виде регистров седений и различных справочников
29 Конструктор1С
 
13.11.20
09:21
(16) ты просто не умеешь готовить многопоточность
30 Конструктор1С
 
13.11.20
09:23
(28) это копейки
31 H A D G E H O G s
 
13.11.20
11:26
Бери и заливай от 2 х пользователей.
Заливай в транзакции (начатьтранзакцию)

Ну и если нет ошибки - то все хорошо.