|   |   | 
| 
 | 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) А что фоновые тоже лицуху жрут?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |