Имя: Пароль:
1C
1C 7.7
v7: Программное создание документа и время ожидания
,
0 zenon46
 
28.01.19
16:17
Доброго дня! Имеется база SQL, столкнулись со следующей ситуацией, в некоторых документах, программно создаются к ним документы, например к документу Товарный чек создается сразу документ ПКО, заметил что иногда документы не создаются, у пользователя выходит сообщение Время ожидания истекло, и все. Хотя в теле используется конструкция
НачатьТранзакцию() - ЗафиксироватьТранзакцию(). Как можно решить эту проблему?
1 zenon46
 
28.01.19
16:20
Оказывается не время ожидания истекло --- пользователь не смог вспомнить, пока подожду что конкретно выдается.
2 Mikeware
 
28.01.19
16:22
ну просто обзий журнал занят, и "Новый()" не проходит.
создавай в попытке в цикле.
3 zenon46
 
28.01.19
16:24
(2) да сейчас просто вот так             НовыйДокРеализ.Новый();
4 zenon46
 
28.01.19
16:33
(2) немного не понял, а как Новый() в цикле создавать, в СП не нашел информации.
5 Ёпрст
 
28.01.19
17:05
(4)

КоличествоПопыток=10;
Пока КоличествоПопыток>0 Цикл
  Попытка
      Док.Новый();
      Прервать;
  Исключение
  КонецПопытки
  КоличествоПопыток  = КоличествоПопыток-1;
КонецЦикла
6 Ёпрст
 
28.01.19
17:06
аналогично на запись/проведение дока.
Можно еще и ОписаниеОшибки парсить
7 zenon46
 
28.01.19
17:06
(5) потому и не понимал, как определить количество итераций цикла, ведь 10 тоже может не помочь, получается опытным путем только?
8 Ёпрст
 
28.01.19
17:06
Ну и Транзакция.. это зло :)
9 Ёпрст
 
28.01.19
17:07
(7) ну ставь 100
10 Ёпрст
 
28.01.19
17:07
Только не поможет.
Нужно время блокировки всем в 0 а параметрах выставлять, принудительно
11 Ёпрст
 
28.01.19
17:07
Тогда проведение будет всегда.
12 zenon46
 
28.01.19
17:08
(10) можно, поподробней, пожалуйста.
13 Mikeware
 
28.01.19
17:13
(12) "время ожидания захвата таблиц базы"
14 zenon46
 
28.01.19
18:24
(13) где этот параметр задается?
15 vova1122
 
28.01.19
18:34
(14) Сервис/Параметры/общие
16 ikea
 
28.01.19
20:43
(0) В цикле создания документов делай паузу в 1-2 секунды, тогда точно будет работать.
17 zenon46
 
29.01.19
09:25
(13) (15) да, спасибо. Вот только про установку в 0 нигде не написано, софтпоинт вообще пишет про 180 секунд.
18 uno-group
 
29.01.19
10:13
Док=СоздатьОбъект("...")
Пока Док.Выбран()=0 Цикла
Попытка
Док.Новый();
Исключение
конецПопытки
КонецЦикла
Зачем по кругу гонять непонятное число раз
19 Ёпрст
 
29.01.19
10:21
(18) затем, что если журнал кто -то держит, то при блокировке в 0 сразу выдается сообщение и в цикле удастся создать/записать/провести документ.
И по этой методе пофик на групповые проведения доков - они не мешают остальным нормально работать.
20 Ёпрст
 
29.01.19
10:21
ибо никто не держит журнал
21 Ёпрст
 
29.01.19
10:22
Ну и писать Док.Выбран()= 0  - моветон.
22 Mikeware
 
29.01.19
10:27
(17) софтпойнт работает с серверными базами. Ну и методики у них свои...
23 zenon46
 
29.01.19
10:43
(21) как резюме, пройтись по юзерам проставить везде 0, и написать как в (18) - ?
24 Ёпрст
 
29.01.19
10:59
(23) проходится не надо, надо либо штатно в ПриНачалеРаботы системы проверить содержимое файла cfg у пользователя и принудительно ему туда прописать параметры, либо через вк установить всем.
25 Mikeware
 
29.01.19
11:01
(23) можно через компоненту, только не помню какой.
26 Ёпрст
 
29.01.19
11:04