Имя: Пароль:
1C
1С v8
Зависает запись элемента справочника при установке нового кода
0 rabbidX
 
05.06.19
12:22
8.3.14
Изменил тип кода в справочнике со строки на число. Нумерация - во всем справочнике. Если ставить галку автонумерация или вызывать процедуру УстановитьНовыйКод() база зависает. Запись без установки кода или с ручным присвоением кода работает нормально. Пробовал очищать справочник - не помогло.
Как исправить? Не хочется костыли писать.
1 rabbidX
 
05.06.19
12:37
Включение/выключение контроля уникальности не влияет
2 novichok79
 
05.06.19
12:41
что говорит технологический журнал?
обычно 1С делает что-то такое:

1. начинаем транзакцию
BEGIN TRANSACTION
2. потом блокировка
Regions=Reference142.REFLOCK,Locks='Reference142.REFLOCK Exclusive ID=0:80a28de658f596b744c70eff4586396a
3. потом ищем последний код
SELECT
MAX(T1._Code)
FROM _Reference142 T1
4. потом инсертим
INSERT INTO Reference142 (Marked, PredefinedID, Code, Description, Fld143, Fld144, Fld145, Fld146, Fld147) VALUES(FALSE,0x00000000000000000000000000000000,"000000001","раз","два","три","хеви-метал","короли","!!!")
5. потом получаем ссылку в 1С
SELECT
T1._IDRRef
FROM _Reference142 T1
WHERE T1._Code = '000000001'
6. потом коммитим транзакцию
COMMIT (edited)
3 RomanYS
 
05.06.19
12:43
(0) Сделай замер. Возможно у тебя что-то в обработчике "при установке номера" зациклилось
4 novichok79
 
05.06.19
12:47
(3) еще подписки на событие "установка нового кода" могут быть
5 Cyberhawk
 
05.06.19
12:52
Да кластер рестартануть и все дела
6 Cyberhawk
 
05.06.19
12:53
(2) Это делается только однократно (по каждому пространству) сервисом нумерации. Далее уже в базе хранится последний выданный номер (по каждому пространству) до рестарта кластера..