powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Запись лога в 1С
16 сообщений из 16, страница 1 из 1
Запись лога в 1С
    #40071973
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Простенький вопрос:

Из разных источников - все они базы 1С - идет запись в один файл

Собственно для записи во всех базах используется такая конструкция:

ф = Новый ЗаписьТекста(ИмяФайла,,, Дописывать);
ф.ЗаписатьСтроку(блаблабла);
ф.Закрыть();

Периодически встречается вот такое:

Ошибка при вызове конструктора (ЗаписьТекста): Ошибка совместного доступа к файлу ...

Как избежать этой ошибки?
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40071993
Dorosh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак. Файл открывается на запись. Делайте через попытку, с повторением через тайм-аут
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40072002
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделайте несколько файлов, а обработку по чтению лога чуть поправьте.
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40072032
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно обработать исключение.
https://kb.mista.ru/article.php?id=886
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40072108
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, понято.

Похоже, зациклить попытки с таймаутом до успешного завершения - самый надежный вариант.
Правда, чтобы пользователь не замечал тормоза, придется наверное всё это дело запихать в фоновое задание.

А если изменить исходное условие - источники разные, но все в одной базе (разные пользователи или компы одной базы например) -
рекомендации те же?
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40072137
nicxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рекомендации те же, т.к. физика процесса не меняется от того, несколько коннектов из одной базы идут или из разных.

Любопытно, почему использован такой архитектурный паттерн? В чем фишка?
В сторону Elastic + Beats не смотрели?
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40072183
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишите в регистр сведений - там нет блокировок. И периодически скидывайте в файл...
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40072300
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
elastic не рассматривал.
использовать промежуточный регистр как буфер можно, но это вроде как не самый простой вариант.

Объясню к чему это всё начал.

Вопрос про разные источники из разных баз скорее из любопытства в надежде услышать что-нибудь ранее неизвестное.

Интересует вариант с разными источниками в одной базе.

На самом деле описанная в самом начале проблема давно решена, но таким способом, который никогда мне не попадался на глаза ни в документации, ни на форумах.

Поэтому истинная цель этого поста - услышать критику и возможные недостатки изложенной ниже методики.

Суть того что я использую: использовать точно такие же механизмы блокировок, которые используются для записи в базу данных.
т.е. запись лога оборачиваете в транзакции. Выглядит оно всё примерно так

НачатьТранзакцию();
<блокируете любую запись любого регистра>
Попытка
<Собственно запись лога>
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
КонецПопытки


Такой подход работает - и успешно на мой взгляд - не только при рассматриваемой записи лога, но и в любом другом случае, когда нужно обеспечить очередность выполнения каких-нибудь процессов.

Поделитесь плиз своими соображениями.
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40072307
nicxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Идея как-бы не нова.
Я на предыдущей работе таким же образом блокировал произвольный регистр сведений, чтобы записать документы в нужной последовательности. Было это лет 7 назад :)
Схема работает, что тут критиковать.
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40073104
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только одно - размер регистра. Поэтому для логов используют файлы.
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40073194
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1с
Только одно - размер регистра. Поэтому для логов используют файлы.


Недопонял... Что имеется в виду?
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40073482
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял Ваш вариант - пишете в регистр через блокировку?
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40073575
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист 1с
Я так понял Ваш вариант - пишете в регистр через блокировку?


Нет, запись идет в обычный любимый всеми нами текстовый файл.
Но чтобы выстроить очередь и избежать упомянутой в самом начале ошибки, используется обычная блокировка.

Возможно, вас ввело в заблуждение вот это: <блокируете любую запись любого регистра>

Для наглядности представьте, что есть регистр сведений "Блокировки".
В нем одно измерение С(10) и одна запись, например "ЗаписьЛога"
Вот эта запись и блокируется.

Если уж совсем по феншую, то в этот регистр нужно добавить столько строк сколько лог-файлов используется и блокировать только нужную запись.
но это уже детали.
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40073670
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А блокировка чего?

Когда нужно заблокировать, то что нельзя заблокировать - можно например константу свою создать и ее блокировать на время записи :).

И можете проверить - "НачатьЗапись" - а этот метод тоже интересно вызовет ошибку? Или нет?
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40073750
swkx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно и константу, но идиотский принцип 1С - создавать для каждой константы отдельную таблицу - травмирует мою нежную психику, поэтому константы я не использую вообще.

авторИ можете проверить - "НачатьЗапись" - а этот метод тоже интересно вызовет ошибку? Или нет?

опять я не понял, о чем речь,
но ошибок скорее всего не будет. Методика-то универсальная
...
Рейтинг: 0 / 0
Запись лога в 1С
    #40073938
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вызовет ли метод начатьзапись ошибку - если одновременно писать 2 записи - 10 записей.

ЗаписатьФайл - да ошибка при одновременной записи, это понятно.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Запись лога в 1С
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]