|
8.3 Транзакция | ☑ | ||
---|---|---|---|---|
0
alexei366
14.10.13
✎
15:22
|
Я думаю что ответ нет, но всеже спрошу. Есть у меня некая функция завернутая в Транзакцию, по мере её выполнения я пишу лог - в моем случае это объект базы типом Документ.
Надо чтобы лог писался вне зависимости от того зафиксируется ли транзакция в итоге или нет. Пока придумал запуск записи в лог через фоновое задание - но этот вариант не особо радует. Есть ли другие возможности оперативной записи данных в базу при наличии Транзакции? |
|||
1
alexei366
14.10.13
✎
15:23
|
(0) А ну естественно у меня 1С сервер
|
|||
2
MrStomak
14.10.13
✎
15:24
|
Только другим сеансом - а значит только фоновым заданием.
|
|||
3
pumbaEO
14.10.13
✎
15:24
|
Журнал регистрации, типа православно верный способ, одобренный самой 1С.
|
|||
4
Maxus43
14.10.13
✎
15:24
|
ЖР конечно
|
|||
5
samozvanec
14.10.13
✎
15:26
|
(0) Лог.Записать() делай после отмены/завершения транзакции
|
|||
6
alexei366
14.10.13
✎
15:27
|
(2) Блин жалко
|
|||
7
alexei366
14.10.13
✎
15:29
|
(3) (4) Ну это мы покапаем, просто аналогичный функционал сделан для Фонового задание. Ну всмысле запускаю фоновое задание (весь код в транзакции), которое через запуск фоновых обновляет регистр сведений куды пишет текущий процент своего выполнения. Я и для этого тож спрашивал просто.
|
|||
8
alexei366
14.10.13
✎
15:30
|
(5) А вдруг до отмены/завершения по какимто причинам процесс 1С вообще упадет, и логи получаются не запишуться.
|
|||
9
samozvanec
14.10.13
✎
15:35
|
(8) т.е. в транзакцию ты обернул, а исключение не обработал?
ну пиши сразу и запоминай, что записал. если делаешь отмену - повторно пиши. а вообще про ЖР тебе правильно говорят, твой велосипед никак не лучше. |
|||
10
alexei366
14.10.13
✎
15:41
|
(9) Да завернул я в исключение.
Давайте рассмотрим случай тогда с процентом выполнения фонового задания. Там то только через другое ФН получается? |
|||
11
alexei366
14.10.13
✎
15:44
|
(10) Мож конечно через временное хранилище попробывать, но сеанс проверяющий процент не является родителем для сеанса выполняющего ФН
|
|||
12
samozvanec
14.10.13
✎
15:51
|
(11) попробуй через ЖР, точно тебе говорю
|
|||
13
alexei366
14.10.13
✎
15:52
|
(12) Я ща не про лог, а про процент выполнения фонового задания
|
|||
14
IKSparrow
14.10.13
✎
15:54
|
(0) Попытка...Исключение...КонецПопытки
Не? |
|||
15
alexei366
14.10.13
✎
16:01
|
(14) Да этого г_а_в_н_а у меня везде понатыкано, вопрос то в другом
|
|||
16
samozvanec
14.10.13
✎
16:04
|
(13) первое, что приходит в голову, сделать форму, на ней индикатор, ее открывать и из ФЗ индикатор обновлять. хз, насколько рабочая идея.
|
|||
17
alexei366
14.10.13
✎
16:22
|
(16) Ну ты и даванул, у меня ФЗ вообще из операции web-сервиса запускается, и процент считывается другой операцией. Корочь нету у меня интерфейса.
|
|||
18
samozvanec
14.10.13
✎
16:28
|
(17) какой тебе тогда индикатор, если интерфейса нет? кто об нем знать то должен?
|
|||
19
alexei366
14.10.13
✎
17:17
|
(18) есть кому не переживай
|
|||
20
fisher
14.10.13
✎
17:24
|
А не проще эту лабуду через текстовые файлы сделать?
|
|||
21
fisher
14.10.13
✎
17:25
|
В чем необходимость писать эту инфу именно в БД?
|
|||
22
elCust
14.10.13
✎
17:36
|
Функция ...()
ТЗЛог = Новый ТаблицаЗначения; ... НачатьТранзакцию(); ... Если... ЗафиксироватьТранзакцию() Иначе ОтменитьТранзакцию() КонецЕсли; Для Каждого СтрЛог Из ТЗЛог Цикл ... КонецЦикла; КонецФункции Не? |
|||
23
alexei366
14.10.13
✎
18:51
|
(20) Эт д_е_р_ь_м_о какоето, а вдруг у меня кластер серверов, что им ещё и общий сетевой каталог давай. Да и как там с блокировками будет? сразу с исключением падать будет если др сеанс ведет запись в файл, или перезаписывать будет (всмысле открывают файл 2 сеанса, а данные в итоге только с последнего)
|
|||
24
alexei366
14.10.13
✎
18:51
|
(22) Да блин я уже не про лог говорю посмотри в (10)
|
|||
25
Зойч
14.10.13
✎
18:56
|
пиши в скл напрямую
|
|||
26
bolobol
14.10.13
✎
19:09
|
В жёсткий диск магнитом вводи!
|
|||
27
alexei366
14.10.13
✎
22:48
|
Корочь я понял мутить через фоновое
|
|||
28
fisher
15.10.13
✎
11:06
|
(23) Те же логи обычно пишутся без "удержания" файла. Записал-отпустил. Это быстрая операция. При конкурентном доступе - в пределах таймаута доступа. Писать разными сеансами в один файл - не вижу необходимости на твоих задачах. Вот с кластером серверов - да, незадача...
Если подумать, то таки да - фоновые задания привлекательней :) |
|||
29
alexei366
15.10.13
✎
12:17
|
(28) Ну пока все через фоновые сделано, я даж подумываю мож в коде открывать доп коннект через ком к 1С, и кода основной код завернут в транзакцию, через доп конект обновлять регистр статуса выполнения процесса, получается вроде как я создаю сам Фоновое задание которое держу за "я_й_ц_а", единственный минус этой затеи что я в коде буду ожидать выполнения процедуры вызываемой в доп коннекте (но на это н_а_с_р_а_т_ь, думаю ожидание завершения процедуры перезаписи одной строки РС ничтожно). Встают др вопросы: например как сделать доп коннект в коде от тек пользователя - ведь пароль то мы не знаем.
|
|||
30
pumbaEO
15.10.13
✎
12:29
|
(29) добавь еще один веб сервис, который только будет писать логи и его дергай.
|
|||
31
alexei366
15.10.13
✎
12:32
|
(30) Ты что мне предлагаешь из операции веб сервиса вызывать опять вебсервис для записи тек статуса выполнения (забудьте вы про логи блин). И какя тут нах разница по сравнению с фоновым задание, фоновое хотябы логин пароль не запрашивает, а через веб сервис я должен буду захардкодить его получается, или в базе хранить (что не по феншую).
|
|||
32
fisher
15.10.13
✎
12:34
|
(29) Я думал об этом. Но стремное это дело - писать в таблицы 1С со стороны. Фиг его знает, чего там сервер приложений кэширует и как. Если уж писать, то в служебную БД.
Но если прикинуть все в целом, получается что проще таки через фоновое задание :) |
|||
33
fisher
15.10.13
✎
12:37
|
А, стоп. Пропустил, что ты через COM-соединение 1С хотел писать. Все равно через фоновое проще, ИМХО.
|
|||
34
alexei366
15.10.13
✎
12:55
|
(33) Да я имел ввиду заменить вызов фоновых (раз 30) созданием доп коннекта.
|
|||
35
fisher
15.10.13
✎
13:26
|
Один коннект вместо множественных запусков фоновых? Тогда имеет смысл. А запускать можно под служебным пользователем.
|
|||
36
fisher
15.10.13
✎
13:27
|
Плохо, что COM. Это привязка к винде.
|
|||
37
МуМу
15.10.13
✎
16:35
|
Для хорошего логирования проблем несколько. Фиксация откатанных транзакций, фиксация при возвратах, фиксация пр критических ошибках. Также нужно учитывать производительность(не должно быть задержек, лишних блокировок) а также необходимо реализовать удобное отображение с учетом изменений в структуре объектов.(если нужны старые и новые значения а не просто факт)
Что касается (0) Сделай отдельное АДО соединение и пиши в таблицу MSSQL в отдельной базе(что бы лицензионное соглашение не нарушать:)). |
|||
38
fisher
15.10.13
✎
17:26
|
(37) Ему не совсем логирование в чистом виде нужно. Ему вообще нужно отображать на клиенте ход выполнения фонового задания.
|
|||
39
alexei366
16.10.13
✎
14:08
|
(38) Не на клиенте, а в второму сеансу дать возможность считывать ход выполнения первого
|
|||
40
alexei366
16.10.13
✎
14:09
|
(37) А что фоновые тоже лицуху жрут?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |