|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Привет. Простенький вопрос: Из разных источников - все они базы 1С - идет запись в один файл Собственно для записи во всех базах используется такая конструкция: ф = Новый ЗаписьТекста(ИмяФайла,,, Дописывать); ф.ЗаписатьСтроку(блаблабла); ф.Закрыть(); Периодически встречается вот такое: Ошибка при вызове конструктора (ЗаписьТекста): Ошибка совместного доступа к файлу ... Как избежать этой ошибки? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2021, 16:08 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Никак. Файл открывается на запись. Делайте через попытку, с повторением через тайм-аут ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2021, 16:48 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Сделайте несколько файлов, а обработку по чтению лога чуть поправьте. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2021, 17:11 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Нужно обработать исключение. https://kb.mista.ru/article.php?id=886 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2021, 18:54 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Спасибо, понято. Похоже, зациклить попытки с таймаутом до успешного завершения - самый надежный вариант. Правда, чтобы пользователь не замечал тормоза, придется наверное всё это дело запихать в фоновое задание. А если изменить исходное условие - источники разные, но все в одной базе (разные пользователи или компы одной базы например) - рекомендации те же? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2021, 00:06 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Рекомендации те же, т.к. физика процесса не меняется от того, несколько коннектов из одной базы идут или из разных. Любопытно, почему использован такой архитектурный паттерн? В чем фишка? В сторону Elastic + Beats не смотрели? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2021, 10:19 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Пишите в регистр сведений - там нет блокировок. И периодически скидывайте в файл... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2021, 15:53 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
elastic не рассматривал. использовать промежуточный регистр как буфер можно, но это вроде как не самый простой вариант. Объясню к чему это всё начал. Вопрос про разные источники из разных баз скорее из любопытства в надежде услышать что-нибудь ранее неизвестное. Интересует вариант с разными источниками в одной базе. На самом деле описанная в самом начале проблема давно решена, но таким способом, который никогда мне не попадался на глаза ни в документации, ни на форумах. Поэтому истинная цель этого поста - услышать критику и возможные недостатки изложенной ниже методики. Суть того что я использую: использовать точно такие же механизмы блокировок, которые используются для записи в базу данных. т.е. запись лога оборачиваете в транзакции. Выглядит оно всё примерно так НачатьТранзакцию(); <блокируете любую запись любого регистра> Попытка <Собственно запись лога> ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); КонецПопытки Такой подход работает - и успешно на мой взгляд - не только при рассматриваемой записи лога, но и в любом другом случае, когда нужно обеспечить очередность выполнения каких-нибудь процессов. Поделитесь плиз своими соображениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2021, 18:15 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Идея как-бы не нова. Я на предыдущей работе таким же образом блокировал произвольный регистр сведений, чтобы записать документы в нужной последовательности. Было это лет 7 назад :) Схема работает, что тут критиковать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2021, 19:09 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Только одно - размер регистра. Поэтому для логов используют файлы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 13:12 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Программист 1с Только одно - размер регистра. Поэтому для логов используют файлы. Недопонял... Что имеется в виду? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 15:51 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Я так понял Ваш вариант - пишете в регистр через блокировку? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 12:48 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Программист 1с Я так понял Ваш вариант - пишете в регистр через блокировку? Нет, запись идет в обычный любимый всеми нами текстовый файл. Но чтобы выстроить очередь и избежать упомянутой в самом начале ошибки, используется обычная блокировка. Возможно, вас ввело в заблуждение вот это: <блокируете любую запись любого регистра> Для наглядности представьте, что есть регистр сведений "Блокировки". В нем одно измерение С(10) и одна запись, например "ЗаписьЛога" Вот эта запись и блокируется. Если уж совсем по феншую, то в этот регистр нужно добавить столько строк сколько лог-файлов используется и блокировать только нужную запись. но это уже детали. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 15:40 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
А блокировка чего? Когда нужно заблокировать, то что нельзя заблокировать - можно например константу свою создать и ее блокировать на время записи :). И можете проверить - "НачатьЗапись" - а этот метод тоже интересно вызовет ошибку? Или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 21:21 |
|
Запись лога в 1С
|
|||
---|---|---|---|
#18+
Можно и константу, но идиотский принцип 1С - создавать для каждой константы отдельную таблицу - травмирует мою нежную психику, поэтому константы я не использую вообще. авторИ можете проверить - "НачатьЗапись" - а этот метод тоже интересно вызовет ошибку? Или нет? опять я не понял, о чем речь, но ошибок скорее всего не будет. Методика-то универсальная ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 10:56 |
|
|
start [/forum/topic.php?fid=28&msg=40072032&tid=1518142]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 242ms |
total: | 413ms |
0 / 0 |