Имя: Пароль:
1C
1С v8
Проблема "В данной транзакции уже происходили ошибки"
0 darth Fiery
 
15.05.17
11:16
Доброе время суток.
Не так давно в системе начали происходить следующие ситуации:
- пользователь, запускающий сеанс "Предприятие" получает ошибку на то, что система не может получить значение константы (подробного текста нет, но суть похожа на пример, расположенный ниже) и предлагает завершить работу.

- при работе в системе только что зашедший пользователь и начавший работать с каким-либо механизмом, получает уведомление, например следующего характера:
"{Форма.Форма.Форма(32)}: Ошибка при вызове метода контекста (НайтиПоКоду)
            СписокПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("00001"));
по причине:
В данной транзакции уже происходили ошибки!"

При этом никакие транзакции еще у него не открывались и не закрывались.
Помогает перезапуск сервера 1С и СУБД. Через некоторое время проблема повторяется.
Подскажите, в каком направлении решать ?
1 МихаилМ
 
15.05.17
11:20
ознакомьтесь с правилами форума. в них есть ссылка , как задавать правильно вопросы
2 polosov
 
15.05.17
11:23
(0)   СписокПодразделений.Добавить(Справочники.Подразделения.НайтиПоКоду("00001"));

Эта та еще  быстродописка. Но если все работает периодически, то необходимо  пробовать запускаться только в толстом клиенте
3 darth Fiery
 
15.05.17
11:26
(1) Я об не спрашивал.
(2) Ну суть не в этом, работать то должно в любом случае. Это лишь пример участка на который только что получили ссылку.
4 darth Fiery
 
15.05.17
11:30
Добавлю по программной и аппаратной части:
SQL-сервер и сервер 1С Предприятия стоят на раздельных машинах под 2008-м Сервером.
СУБД - SQL Server 2014 Developer.
Платформа: 8.2.19.83.
Конфа - переписанная УТ.
5 МихаилМ
 
15.05.17
11:48
(0)
сколько рабочих процессов 1с ?
6 ptiz
 
15.05.17
12:03
(0) Заходим в конфигуратор, запускаем отладку от имени проблемного пользователя с остановкой по ошибке. Профит.
7 cons74
 
15.05.17
12:06
Погуглить про "система не может получить значение константы" не пробовали?
Варианты:
1) реструтуризацию сделать
2) в ОФ - поменяли значение функциональной опции
8 cons74
 
15.05.17
12:07
"При этом никакие транзакции еще у него не открывались и не закрывались. " - "видишь суслика? Нет. А он есть"
Транзакция есть, но не явная. И не закрылась она - вывалилась в ошибке чтения видимо. См.(6)
9 Elatiell
 
15.05.17
12:32
Ищите конструкцию Попытка...исключение...КонецПопытки
10 darth Fiery
 
15.05.17
14:33
(5) 4 процесса на несколько ИБ. На сервере 1С два восьмиядерных проца.
(6) Пробовал само собой, но суть в том, что ошибки возникают на фрагментах кода, которые безошибочны.
Пример такой "ошибочной строки" :
Константы.РежимЗавершенияРаботыПользователей.Получить()

(7) ошибка то не в том, что система не может получить значение константы, а в том, что она возникает в местах, где ошибок нет. Что гуглить-то в этом случае ? )
Реструктуризация сделана средствами скуля. Средствами 1С не получается - база большая и времени столько нет, так как компания работает 6 дней в неделю.
Что такое ОФ ?

(9) Их там нет, до мест возникновения проблем.
11 1dvd
 
15.05.17
14:35
Динамически обновляете?
12 МихаилМ
 
15.05.17
14:41
(0) добавьте процессов из расчета озу 1 (лучше 2) гига на ос
+ по 700 мег на процесс.
13 DDwe
 
15.05.17
14:42
(11) +100
14 МихаилМ
 
15.05.17
14:46
+ (12) проблема может быть в том что 1 8.2 создает пул подключений на процесс . и если на одно подключение приходится много соединений то ошибки одного соединения могут влиять на другие. соответственно такие ошибки сложно выявить, если не умееть работать с тж. сокращается частота ошибок путем увеличения числа раб.процессов.

но это для для 1с 8.2.
15 darth Fiery
 
15.05.17
16:11
(11) Не обновляем.
(12) Не до конца понял, какая механика добавления рекомендуется.
Вот к примеру мой случай: у меня сервер 1С х64 и 96Гб ОЗУ.
Вообще у Гилева или Инфостарте читал, что 4 процесса - это самое оптимальное, если памяти 96 и более и более 12 ядер на сервере.

(14) Как вариант. Еще у нас иногда стала выходить ошибка у пользователей: "Рабочий процесс не найден", может имеет с этим связь.
Как раз прирост пользователей был месяц назад. Не сказать, чтобы существенный, всего человек 30.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший