Работа с журналом регистрации. Выходим за границы платформы

Публикация № 1234678

Администрирование - Администрирование данных 1С - Журнал регистрации

журнал регистрации платформа библиотеки нестандартные возможности .NET

Работа с журналом регистрации нестандартными средствами. А также немного про использование платформы .NET в экосистеме 1С.

Начнем

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

Работать с журналом регистрации можно как встроенными в платформу инструментами, так и с помощью обработок из подсистем БСП. Также можно использовать нестандартные инструменты, например отчет "Просмотр и анализ журнала регистрации (отчет на СКД)".

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

Есть несколько путей решения этих проблем:

  1. Не использовать его. Это не наш путь, но если он Вам не нужен - тогда это идеальное решение. При этом встречался со случаями, когда вместо него создавали регистры сведений и записывали нужные данные туда. Не будем касаться этой темы, у нее есть свои плюсы и минусы.
  2. Выгружать данные журнала в отдельную базу средствами платформы 1С. Создаем регламентное задание (а может и не одно) для выгрузки данных в какую-либо внешнюю базу. Решение рабочее и может функционировать весьма эффективно. Главными недостатками являются: недостаточная производительность при большом объеме данных, влияние на рабочий сервер 1С (иногда значительное), а также потенциально большой лаг по времени выгрузки.
  3. Использовать регулярные выражения для поиска данных. Для этого переводим формат журнала в текстовый и парсим его с помощью регулярных выражений. Производительность на высоте, но вот сопровождение такого решения требует значительных трудозатрат. К тому же отдать такое в использование рядовым пользователям тоже не просто.

Сегодня мы коснемся немного другого пути работы с журналом регистрации, в котором задействуем средства платформы .NET.

Не первое решение

Еще в далеком 2013 году (уже 7 лет прошло!) Алексей Бочков предложил решение для сообщества в виде приложения "EventLogLoader" на Visual Basic, которое напрямую парсит файлы (для старого формата журнала регистрации) или получает данные из SQLite-базы журнала (для нового формата) После отправляет в одно из возможных хранилищ данных (база SQL Server, MySQL или индекс ElasticSearch).

В статье "Периодическая загрузка событий из журналов регистрации в базу MS SQL Server (с исходниками)" дано описание работы инструмента и, судя по статистике, он пользуется некоторой востребованностью.

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

Пройдемте в библиотеку

Чем же отличается предлагаемое решение от того, что было сделано столько лет назад? Главными особенностями будут следующие:

  • Это библиотеки с открытым исходным кодом (лицензия MIT), поставляемые в виде Nuget-пакетов. Но никто не мешает взять их в виде исходного кода из репозиториев на GitHub. Подчеркиваю, это библиотеки, а не готовое приложение. Конечно, в репозитории есть примеры консольных приложений, но вряд ли они могут подойти всем и потребуют адаптации, но использовать их никто не запрещает.
  • Реализованы на базе платформе .NET Core с использованием языка C#.
  • Чтение и выгрузка данных реализованы в отдельных библиотеках, что позволяет использовать их отдельно в зависимости от задач.
  • Возможность расширять стандартные возможности библиотеки экспорта, добавляя новые хранилища.
  • Изначально готов функционал выгрузки в базы данных SQL Server и PostgreSQL.

Далее пройдемся по каждой библиотеке. И сейчас будет неожиданное - листинги кода C#!

Помощник чтения данных журнала регистрации

Библиотека "YY.EventLogReaderAssistant" позволяет читать данные файлов журнала регистрации как старого текстового формата (*.lgf, *.lgp), так и нового формата SQLite-базы (*.lgd). На следующем листинге продемонстрирован простой пример ее использования в виде консольного приложения.

private static int _eventNumber = 0;

static void Main(string[] args)
{
    if (args.Length == 0)
        return;

    // Каталог хранения файлов журнала регистрации.
    // Может быть указан конкретный файл журнала (*.lgd / *.lgf)
    string dataDirectoryPath = args[0];
    Console.WriteLine($"{DateTime.Now}: Инициализация чтения логов \"{dataDirectoryPath}\"...");

    // Инициализация объекта чтения логов
    using (EventLogReader reader = EventLogReader.CreateReader(dataDirectoryPath))
    {
        // Устанавливаем обработчики событий
        reader.AfterReadEvent += Reader_AfterReadEvent;
        reader.AfterReadFile += Reader_AfterReadFile;
        reader.BeforeReadEvent += Reader_BeforeReadEvent;
        reader.BeforeReadFile += Reader_BeforeReadFile;
        reader.OnErrorEvent += Reader_OnErrorEvent;

        // Выводим общее количество событий
        Console.WriteLine($"{DateTime.Now}: Всего событий к обработке: ({reader.Count()})...");
        Console.WriteLine();
        Console.WriteLine();
        
        // Последовательно читаем все события журнала
        while (reader.Read())
        {
            // reader.CurrentRow - данные текущего события
            _eventNumber += 1;
        }
    }

    Console.WriteLine($"{DateTime.Now}: Для выхода нажмите любую клавишу...");
    Console.ReadKey();
}

Тут все просто. Создаем экземпляр класса "EventLogReader", передав путь к каталогу с файлами данных журнала регистрации. Далее подписываемся на события:

  • После чтения файла (AfterReadFile)
  • После чтения события (AfterReadEvent)
  • Перед чтением события (BeforeReadEvent)
  • Перед чтением файла (BeforeReadFile)
  • При ошибке (OnErrorEvent)
 
 Примеры обработчиков событий 

С их помощью можно обрабатывать прочитанные данные из журнала и привязать любую другую логику. Непосредственно чтение данных выполняется в потоке, что позволяет экономить память и начать чтение данных с определенной позиции. То есть можно прочитать половину файла, а через некоторое время продолжить чтение с последнего прочитанного события. Для этого используются методы "GetCurrentPosition" и "SetCurrentPosition", но подробнее на этом останавливаться не будем. Код в репозитории ответит на все вопросы.

Непосредственно получить данные события можно из свойства "CurrentRow", которое содержит:

 
 Поля события

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

Что делать со считанными данными - решать Вам. А пока перейдем к библиотекам экспорта данных.

Помощник экспорта журнала регистрации

Библиотека "YY.EventLogExportAssistant", а точнее набор библиотек, созданных для возможности экспорта данных журнала регистрации. Использует библиотеку чтения данных журнала, о которой шла речь выше. Решение содержит следующие части:

  • YY.EventLogExportAssistant.Core - базовый пакет. В нем реализована основная логика по чтению и передаче данных в указанное хранилище.
  • YY.EventLogExportAssistant.SQLServer - пакет для экспорта данных журнала регистрации в базу данных SQL Server. Зависит от базовой библиотеки.
  • YY.EventLogExportAssistant.PostgreSQL - пакет для экспорта данных журнала регистрации в базу данных PostgreSQL. Зависит от базовой библиотеки.

Решение не только передает данные в хранилища, но и содержит алгоритмы инициализации баз данных с минимальным набором индексов и другими настройками (но никто не мешает создать эти базы вручную). В репозитории Вы можете ознакомиться с реализацией более подробно, а сейчас посмотрим на листинг с примером использования.

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

Подробнее Вы можете прочитать в описании репозитория. Сейчас стоит обратить внимание на установку точки назначения выгрузки, которая определяется в этой части листинга.

// 3.2. Инициализируем назначение экспорта данных. Для каждого назначения - свой класс, наследуемый от класса
// "EventLogOnTarget" и устанавливаем в нем информационную систему для выгрузки.
// Для SQL Server - "EventLogOnSQLServer"
// Для PostgreSQL - "EventLogOnPostgreSQL"
// Можно создать собственный класс для выгрузки в произвольное хранилище.
EventLogOnSQLServer target = new EventLogOnSQLServer(optionsBuilder.Options, portion);
// 4. Устанавливаем назначение экспорта
exporter.SetTarget(target);

Фактически, вся логика отправки должна быть реализована в классе, реализующим интерфейс "IEventLogOnTarget".

public interface IEventLogOnTarget
{
    EventLogPosition GetLastPosition();
    void SaveLogPosition(FileInfo logFileInfo, EventLogPosition position);
    int GetPortionSize();
    void SetInformationSystem(InformationSystemsBase system);
    void Save(RowData rowData);
    void Save(IList<RowData> rowsData);
    void UpdateReferences(ReferencesData data);
}

Для SQL Server - это класс "EventLogOnSQLServer", для PostgreSQL - "EventLogOnPostgreSQL". Никто не мешает Вам создать собственную реализацию интерфейса и выгружать данные журнала регистрации в том виде и в то хранилище, которое нужно именно Вам.

В итоге, у Вас будет база данных, куда будет выполняться выгрузка записей журнала регистрации. Чтение и отправка данных может выполняться как сразу для всего файла, так и с последней выгруженной записи (это делается в библиотеке экспорта автоматически).

Зачем это все

Это лишь библиотеки на .NET Core, которые Вы можете использовать в своих разработках и приложениях. Со временем они будут развиваться и дальше как в части производительности, так и в части функциональности. В репозитории будут появляться более развернутые инструкции и описание работы. И создавалось все это для удобства расширения возможностей работы с платформой 1С и решением проблем производительности журнала регистрации. Ну и для "just for fun" тоже.

На практике удается достичь выгрузку записей журнала на уровне 35 тысяч записей в минуту вне зависимости от хранилища (PostgreSQL или SQL Server). В описании репозитория есть информация о скорости работы библиотеки и используемых ресурсов для ее работы. В принципе ничто не мешает сделать на ее основе приложение для передачи записей журнала регистрации во внешнее хранилище почти в онлайн режиме.

Недооцененная тема

Да, в этот раз статья была не совсем про 1С, но тему считаю интересной и требующей развития. Если сообщество проявит интерес, то в будущем появится готовое приложение для экспорта данных журнала регистрации с дополнительными функциями в виде:

  • Внешнего источника данных для работы с базой журнала регистрации. Представьте, Вы сможете делать запросы к журналу регистрации из консоли запросов :)
  • Отчет на СКД для работы с данными журнала регистрации через внешний источник данных.
  • Это будет быстро, красиво и эффективно.

Но это не все, что я бы хотел сказать. Пример работы с журналом регистрации не 1С'ными средствами - это не единственное, что можно реализовать таким путем. Платформа .NET предлагает обширные возможности, которые мы можем использовать для решения повседневных задач. И это не только работа с журналом регистрации:

  • Работа с технологическим журналом
  • Метаданными конфигурации
  • Оптимизация работы базы данных
  • Микросервисы для выноса части функционала из конфигураций.
  • Построение фронт офиса для учетной системы.
  • И многое другое.

Скорее всего, ничего нового в этом списке я не написал, но тему считаю недооцененной. Уже прошло большое количество времени, в сообществе появляются различные "не1Сные" разработки, но большим спросом и интересом могут похвастаться не многие. В репозитории "YellowYard.NET" составлен некоторый список таких решений, на полноту которого я не претендую. Некоторые из них распространяются в виде Nuget-пакетов. Обратите внимание на разработки Евгения Акпаева. Приведу некоторую часть здесь.

 
 Список разработок на .NET для 1С

На Инфостарт Сергей Смирнов, автор компоненты NetObjectToIDispatch, создал серию интересных публикаций по использованию .NET при разработке на платформе 1С:Предприятие. То же относится и к разработке Elisy .Net Bridge от Сергея Карташева. Вот этот шикарный список.

 
 Статьи по использованию .NET в разработке на 1С

При всем этом только одна разработка на .NET стала пользоваться спросом в среде разработчиков 1С - это OneScript. Секрет, наверное, кроется в том, что эта разработка не требует знаний (почти) чего-то выходящего за рамки платформы и позволяет разрабатывать в привычном виде не привязываясь к платформе 1С.

Хотелось бы узнать мнение сообщества на тему использования платформы .NET в разработке, приходиться ли Вам в работе иметь с ней дело и какие задачи приходиться решать. Если Вам есть что сказать - пишите в комментарии! 

А если есть опыт использования NetObjectToIDispatch или Elisy .Net Bridge, то жду с нетерпением :)

Всем здоровья

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

Если хотите поддержать проект, чтобы он развивался далее, то поддержите плюсом на Инфостарт и/или на GitHub.

А Вы готовы выйти за пределы экосистемы 1С? :)

Другие ссылки

Авторские разработки

 
 Другие разработки

 

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. -vito- 452 12.05.20 14:02 Сейчас в теме
Юрий, очередной плюс доставлен, конечно.

Возможно, Вы пропустили, совсем недавно была публикация на эту же тему Журнал регистрации в эластике с использованием службы без использования 1С - служба на .Net, отправляющая данные в Эластик. К сожалению автор не стал приводить ссылку на свой проект в GitHub.

У меня вопрос по Вашему механизму: чтение и отправка данных ЖР осуществляется при вызове приложения (к примеру EventLogExportToSQLServer) или оно работает фоново и отправляет данные в реальном времени?
2. YPermitin 8340 12.05.20 14:11 Сейчас в теме
(1) это библиотеки и тут нет готового приложения.

Но его можно создать на их основе, просто добавив Nuget-пакет к себе в решение.
Фоново или нет - это будет зависеть как-раз от приложения. Ничто не мешает запустить сбор и отправку данных в отдельном потоке.

Приложение, если будет интерес, я создам отдельно.

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

Вообщем, публикация для разработчиков. Готового решения тут нет.
3. pashamak 159 13.05.20 07:36 Сейчас в теме
(2)
По поводу другой публикации. Там я так понял готовое приложение и оно не предназначено для использования другими разработчиками.
Больше ничего сказать не могу, не смотрел.


Это продукт для конечного пользователя.
Его суть в легкой установке и применении.
Для разработчиков отдельное api не делал.
YPermitin; +1 Ответить
4. YPermitin 8340 13.05.20 08:33 Сейчас в теме
6. YPermitin 8340 13.05.20 12:06 Сейчас в теме
(3) добавил ссылку на репозиторий в список ПО на .NET:
https://github.com/YPermitin/YellowYard.NET
5. Yashazz 3199 13.05.20 11:16 Сейчас в теме
Всё бы хорошо, но выход "за пределы экосистемы" - верный путь нарваться на неожиданные грабли. Начиная от внезапного внутреннего изменения какой-нибудь ерундовины в очередном релизе, из-за которой все эти внешние утилиты можно выкинуть на помойку, продолжая, допустим, поломкой некой утилиты из-за переезда на другой сервер или софт, и заканчивая нарушением лицензии, где сказано, что работать с файлами 1С средствами "не 1С" низя-низя. Мне этих граблей хватило с избытком. Кому ещё нет - флаг в руки.

Имхо, идеальное решение - отдельная база для разборов ЖР рабочих баз. Нечто подобное 1С недавно сподобилась сделать, вынеся отчётность в отдельную служебную базу.
7. YPermitin 8340 13.05.20 12:06 Сейчас в теме
(5) молодец, так держать :)
8. akpaevj 88 13.05.20 14:26 Сейчас в теме
(5) У 1С есть один большой недостаток в части работы с большими данными - она, мягко говоря, очень медленная. Имеются ввиду задачи обработки больших массивов данных, не хранения.
9. zhichkin 646 13.05.20 17:37 Сейчас в теме
Прошу добавить мой проект в Ваш каталог проектов .NET для 1С
https://github.com/zhichkin/one-c-sharp-sql
YPermitin; +1 Ответить
11. YPermitin 8340 13.05.20 18:52 Сейчас в теме
(9) обязательно добавлю!

Все никак не успевал ознакомиться с ним.
Добавлю в раздел инструментов для разработчиков.
12. YPermitin 8340 13.05.20 20:16 Сейчас в теме
(9) информацию добавил.

Вы можете изменить описание или предложить другие ссылки отправил pull-request в репозиторий.
zhichkin; +1 Ответить
13. zhichkin 646 13.05.20 20:25 Сейчас в теме
10. zhichkin 646 13.05.20 17:58 Сейчас в теме
А Вы готовы выйти за пределы экосистемы 1С ?

Речь скорее о том, чтобы сделать нашу любимую 1С лучше.
Однако, она не хочет, чтобы этим занимались "кул хацкеры".
Хочет всё сделать сама, а чтобы никто не мешал ей в этом благородном стремлении, зафиксировала это желание в известном пункте лицензионного соглашения.
Очень ценим и всемерно благодарны 1С за её заботу о нас любимых !
"Ибо не ведаем, что творим ..."

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

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

Аргумент слабый. Фобия какая-то. Нормальный софт имеет покрытие тестами, доказывающими его работоспособность.

Кроме этого "неожиданных граблей" со стороны 1С тоже хватает выше крыши ... Ничего, живём как-то, держимся там ...

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

Вот читаю так как-будто бы это про 1С написано =) Однако нет =)

Приобретая софт, имеющий техническую поддержку, этого боятся не стоит. Вендор доработает всё как надо. Если используете софт без поддержки, то значит берёте эту самую поддержку на себя. Нужно трезво оценивать свои силы при этом.
TreeDogNight; DrAku1a; -vito-; YPermitin; +4 Ответить
14. aspirator23 420 14.05.20 10:54 Сейчас в теме
В 8.3.17, если не путаю, добавилось индексирование журналов. Не спасет ли оно журнал регистрации?
YPermitin; +1 Ответить
15. YPermitin 8340 14.05.20 11:44 Сейчас в теме
(14) пока не щупал. Скорость поиска должна будет значительно уменьшиться.
Но решит ли это основные проблемы? Вряд ли. Но можно будет потестировать :)
cleaner_it; +1 Ответить
19. cleaner_it 239 17.05.20 08:18 Сейчас в теме
(15) Скорость должна увеличиться) А вот задержка должна уменьшиться
20. YPermitin 8340 17.05.20 13:27 Сейчас в теме
(19) скорость поиска да, а скорость записи в журнал. Ну и проблемы с подвисанием сервера.
В общем, протестирую как-нибудь :)
16. Free1CforAll 14.05.20 12:12 Сейчас в теме
(0) а еще будут статьи про .NET? :)
17. YPermitin 8340 14.05.20 12:50 Сейчас в теме
18. overloader 57 16.05.20 11:08 Сейчас в теме
21. YPermitin 8340 17.05.20 13:29 Сейчас в теме
(18) разработка хорошая, но она никак не относится к платформе .NET.
Это же чисто 1Сная разработка.

Илия ошибаюсь?
22. overloader 57 18.05.20 09:20 Сейчас в теме
(21) Да решение под 1С, универсальное под любые конфигурации на БСП
23. YPermitin 8340 18.05.20 09:42 Сейчас в теме
(22) значит к теме .NET оно не относится.
В список его добавлять не могу :(
24. DonAlPatino 140 24.05.20 17:10 Сейчас в теме
Вот тут: https://infostart.ru/public/1128327/ я рассказывал, как мы переписали EventLogApp Алексея Бочкова на C# и выкачали журнал в конечном счете в ELK. Исходники переписанного на C# EventLogApp на github. Я уже оттуда уволился, на проект без меня забили, так что если есть желающие развивать - welcome
Оставьте свое сообщение

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    70997    0    Serginio    108    

Экспорт журнала регистрации. Набор инструментов (приложения + исходный код)

Прочие инструменты разработчика Журнал регистрации Абонемент ($m)

Набор инструментов для экспорта данных журнала регистрации во внешние хранилища для Windows и Linux. Готовые приложения и исходный код.

10 стартмани

26.05.2020    1380    0    YPermitin    0    

История работы пользователей (отчет на СКД)

Администрирование СУБД v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Отчет для просмотра истории работы пользователей (СКД, просмотр для любого пользователя).

2 стартмани

14.03.2020    3640    46    YPermitin    26    

Информация о пользователях информационной базы (отчет на СКД)

Администрирование данных 1С Роли и права v8 v8::Права v8::СКД 1cv8.cf Абонемент ($m)

Два простых отчета по пользователям информационной базы и информации по ним.

1 стартмани

02.03.2020    3274    13    YPermitin    8    

Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент. Промо

Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Данная разработка создана для использования сборок .Net в 1С через преобразование объектов и классов в COM-объекты, которые можно использовать в 1С. Достигается это путем создания класса, реализующего методы интерфейса IReflect public class AutoWrap: IReflect.

1 стартмани

28.11.2013    77925    229    Serginio    69    

Технические проверки данных регистров бухгалтерии (отчет на СКД)

Администрирование данных 1С Бухгалтерский учет Механизмы бухгалтерского учета v8::БУ 1cv8.cf БУ Абонемент ($m)

Отчет для технических проверок данных бухгалтерских регистров.

5 стартмани

25.02.2020    3472    10    YPermitin    2    

Мастер полнотекстового поиска

Поиск данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Набор инструментов для работы с полнотекстовым индексом платформы 1С. Стандартные и расширенные возможности.

2 стартмани

07.02.2020    4581    35    YPermitin    28    

Помощник работы с идентификаторами объектов

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Инструмент для расширенного анализа идентификаторов объектов.

2 стартмани

24.01.2020    5740    19    YPermitin    22    

1С.Net:Предприятие - подключите .Net Framework к 1C через Elisy .Net Bridge Промо

Внешние источники данных v8 1cv8.cf Россия Платные (руб)

.Net Framework – это большой набор решений, созданных для разработки современных приложений взамен COM/OLE/ActiveX. Компонент Elisy .Net Bridge позволяет без особых усилий добавить недостающую функциональность в 1C 7.7/8.0/8.1/8.2, реализуя бесконечное количество сценариев обращения к платформе. Здесь разработчики могут ознакомиться также с бесплатной NFR-версией.

5000 руб.

18.05.2009    32059    23    79    

Транслятор запросов 1С в SQL

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.

10 стартмани

07.01.2020    9197    69    YPermitin    89    

Выгрузка журнала регистрации в SQL

Журнал регистрации v8::УФ 1cv8.cf Россия Абонемент ($m)

Ни для кого не секрет, что для эффективного использования возможностей встроенного журнала регистрации требуется приложить немало усилий. Я не спорю, что тема избита, но тем не менее... Хотел предложить для Вас мое решение. Задача: Легкий способ ежедневно анализировать журнал регистрации. Для реализации не стал я использовать Elasticsearch. Возможно, это и удобный способ, но мне не понравилось по ряду причин. Меня устраивает, когда журнал с ошибками приходит на электронную почту ответственным за поддержку и открывается в excel. А также, когда лог-базу можно открыть как внешний источник данных, например, совсем в другой базе, где таких источников, как правило, несколько.

3 стартмани

25.11.2019    2523    10    MikeLetto    0    

Командный интерпретатор для 1С

Сервисные утилиты v8 1cv8.cf Абонемент ($m)

Инструмент для выполнения команд CMD / PowerShell из 1С.

2 стартмани

15.11.2019    9480    20    YPermitin    41    

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо

Практика программирования WEB v7.7 v8 Бесплатно (free)

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    53687    0    Serginio    33    

Пакетная выгрузка / загрузка внешних отчетов и обработок

Прочие инструменты разработчика Менеджеры внешних отчетов v8 1cv8.cf Абонемент ($m)

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

2 стартмани

04.11.2019    7058    24    YPermitin    22    

ELK. Время изумительных историй!

Журнал регистрации Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Всем привет! Сегодня хочу рассказать вам несколько полезных историй про то как нам помог Elastic search в связке с Kibana. Про сам Elastic рассказывать не буду, уже все давным давно описали и до меня. Все обычно говорят что это полезно, это классно. В то же время, очень мало кто рассказывает про практические ситуации: когда и как помог Elastic. Итак, начнем.

31.10.2019    7555    0    slozhenikin_com    27    

Обозреватель криптографии

Инструментарий разработчика Защита ПО v8 Абонемент ($m)

Отчет для просмотра доступных провайдеров и сертификатов криптографии на сервере и клиенте.

2 стартмани

21.10.2019    8116    10    YPermitin    10    

1C Messenger для отправки сообщений, файлов и обмена данными между пользователями 1С, вэб страницы, мобильными приложениями а ля Skype, WhatsApp Промо

Практика программирования v8 Бесплатно (free)

Данная разработка позволяет пользователям 1С обмениваться сообщениями, файлами (до 3 мб). Запрашивать данные у клиента как Вэб или HTTP сервисах. Основано на технологиях ASP.Net SignaR который использует WebSockets и т.д. для двунаправленного обмена данными. Используется обертка над классами .Net

15.12.2015    60071    0    Serginio    5    

Сложнейшая загрузка журнала регистрации в ElasticSearch (или делаем настоящий ETL)

Журнал регистрации v8 Россия Абонемент ($m)

Году в 2017ом возникло (наверное странное на тот момент) желание перегрузить журнал регистраций 1С в ELK. Чтобы журналы место на диске не съедали, 1С программисты забыв поставить фильтр сервер не подвешивали, все журналы лежали в одном месте да и можно было безопасно туда ответственных пользователей пускать, чтобы сами смотрели кто какой документ поправил.На предложение написать выгрузку сразу из 1С программисты благополучно забили ("ой на это минимум месяц", "у нас срочные бизнес-фичи" и т.д. и т.п.). Зато попалась статья от Aleksey.Bochkov (https://infostart.ru/public/182820/). Ну и решили мы все это запилить без 1С программистов. Во что влезаем я тогда еще не понимал. А вылилось почти в год допилок (хорошо хоть в фоновом режиме) в цельный ETL с использованием C#, T-SQL и прочими делами.

1 стартмани

27.09.2019    8283    6    DonAlPatino    33    

Версионирование регистров сведений

Журнал регистрации Практика программирования v8 Бесплатно (free)

Моя реализация механизма мониторинга изменений регистра сведений.

17.09.2019    3440    0    KonS    9    

Анализ производительности APDEX

Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Отчет для просмотра и анализа замеров производительности в конфигурациях на базе БСП.

31.08.2019    9048    2    YPermitin    7    

Code First и Linq to EF на примере 1С версии 7.7 и 8.3 часть I Промо

Практика программирования v8 Абонемент ($m)

Данный проект является чисто исследовательским примером использования Code First и Linq to EF на примере 1С версии 7.7. Так как сам я программист 1С, то мне всегда было интересно, как можно перенести модель объектов 1С на компилируемые языки, и использовать мощь Linq to EF. С появлением Code First давно хотел прикрутить, но все как-то руки не доходили, и вот, наконец ..

1 стартмани

28.08.2015    20934    3    Serginio    2    

Путеводитель по истории релизов

WEB v8 1cv8.cf Абонемент ($m)

Отчет по истории выпуска релизов и анализа информации по обновлениям.

5 стартмани

13.08.2019    10662    10    YPermitin    18    

Просмотр и анализ структуры базы данных (отчет на СКД)

Инструментарий разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Отчет для просмотра и анализа структуры базы данных с поддержкой файловых баз (ограниченный режим), а также баз на SQL Server и PostgreSQL.

5 стартмани

24.07.2019    17125    148    YPermitin    27    

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

Журнал регистрации v8 1cv8.cf Бесплатно (free)

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

20.06.2019    6482    2    milut    11    

Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7 Промо

Универсальные функции Практика программирования v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

1 стартмани

25.06.2015    25821    3    Serginio    1    

Переход на 64-х разрядный сервер 1С

Журнал регистрации Администрирование данных 1С v8 Бесплатно (free)

Переход с 32-х разрядной версии сервера 1С на 64-х разрядную с сохранением данных журналов регистрации информационных баз, используемых в 32-х разрядной версии.

05.04.2019    17041    0    ids79    12    

Анализ 1С: Предприятие 7.7 с помощью ELK стека

Журнал регистрации Администрирование данных 1С v7.7 1cv7.md Бесплатно (free)

Рассмотрим систему на базе Elasticsearch, Logstash и Kibana (ELK Stack) для анализа логов 1С Предприятие 7.7 с целью визуализации и анализа событий 1С.

22.01.2019    7496    0    phsin    18    

Мониторинг активности пользователя

Журнал регистрации v8 1cv8.cf Бесплатно (free)

Работает ли пользователь с программой? Сколько времени пользователь работает в программе? Что пользователь делает в программе? - эти вопросы стандартно решаются или просмотром журнала регистрации, или с помощью внешних программ. В данной статье будет предложен способ, как следить за активностью пользователей, используя небольшую доработку конфигурации. Бонусом системы мониторинга является автоматическое завершение сеансов пользователей, не работающих с программой длительное время.

11.10.2018    13408    0    postovalov    25    

Обработка для формирования классов для прямого доступа к файлам 1С через курсоры BDE. И многого другого Промо

Разработка внешних компонент v7.7 1cv7.md Абонемент ($m)

Обработка формирует классы для прямого доступа к файлам 1С через курсоры BDE. Исходник ВК, которая загружает Объект Автоматизации, поддерживающий ITypeInfo и выполняет все его свойства и методы через IlanguageExtender. Обработка для формирования диспинтерфейсов к объектам 1С (таблицаЗначений, справочники, документы, перечисления). Обработки для группировки данных Таблицы Значений в виде ТЗ, где колонками являются ключи и ТзПоГруппе вида ТЗ с детальными записями. Вывод иерархии из ТЗ элементов, поиск дублей, сравнение 2 ТЗ

1 стартмани

14.04.2015    18460    2    Serginio    1    

Все, что вы хотели знать о журнале регистрации

Журнал регистрации v8 Бесплатно (free)

Исследование файла Журнала регистраций в формате lgd.

22.09.2018    19075    0    Fox-trot    25    

Кто запустил анализ журнала регистрации?

Журнал регистрации v8 Бесплатно (free)

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

16.09.2017    18510    0    metmetmet    42    

Подробный журнал регистрации изменений

Журнал регистрации v8 Бесплатно (free)

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

24.07.2017    11819    0    user700035_6550355    16    

Просмотр и анализ журнала регистрации (отчет на СКД) Промо

Журнал регистрации v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Отчет на базе системы компоновки данных (СКД) для просмотра записей журнала регистрации. В отчете можно использовать возможности СКД для вывода отчета в различных вариантах (список, таблица, диаграмма). Поддерживаются все возможности журнала регистрации (фильтры, получаемые колонки, максимальное количество записей).

5 стартмани

25.07.2013    60167    538    YPermitin    52    

Сжатие журнала регистрации в формате SQLite (.lgd) с помощью программы "DB Browser for SQLite".

Журнал регистрации v8 Россия Бесплатно (free)

Если журнал регистрации базы 1С заметно увеличился, Вы не сможете оперативно искать в нем нужную информацию. Более того, работа с таким журналом может вызывать блокировку работы всех пользователей. Для предотвращения разрастания журнала необходимо устранять настройками запись ненужных событий и перемещать в архивы события с неактуальными датами. Избавиться от уже записанной ненужной информации можно с помощью программы DB Browser for SQLite указанным в этой статье способом.

04.06.2017    25726    0    DrSender    6    

Запись в журнал регистрации изменений дополнительных сведений

Журнал регистрации v8 УТ11 УУ Бесплатно (free)

Небольшая доработка программы "Управление торговлей 11" для записи информации в журнал регистрации изменений дополнительных сведений (регистр сведений) по объектам. Должна работать на всех релизах.

04.05.2017    29144    0    Mortiferus    5    

.Net Core, обмен с 1C по TCP/IP между различными устройствами

Разработка внешних компонент v8 Бесплатно (free)

Часто нужно обмениваться данными с клиентом 1С из различных устройств, между клиентами 1С, а также при виртуализации между разными ОС на компьютере. Это кроссплатформенная ВК, позволяющая обмениваться сообщениями по TCP/IP между различными устройствами по определенному протоколу.

28.09.2016    20274    0    Serginio    8    

1C.Net:Предприятие – использование богатых графических возможностей .Net Framework Промо

Работа с интерфейсом v7.7 v8 1cv8.cf 1cv7.md Россия Абонемент ($m)

Windows Presentation Foundation (WPF) – презентационная система нового поколения для построения клиентских приложений Windows с ошеломляющими возможностями. Технология WPF основана на независимой от разрешения системе визуализации, построенной на векторной графике и использующей преимущества современного графического оборудования. В составWPF входят следующие средства: язык описания Extensible Application Markup Language (XAML), элементы управления, механизм привязки данных, средства разметки, 2d- и 3d-графика, анимация, стили, шаблоны, документы, медиа-элементы, текст и средства оформления текста. Презентационная система входит в состав .Net framework и доступна для использования внутри 1С:Предприятие средствами Elisy .Net Bridge, начиная с версии 3.2. Windows Presentation Framework полностью заменяет и многократно превосходит устаревающую технологию WinForms.

1 стартмани

19.05.2010    25534    7    Elisy    22    

Net Core. Динамическая компиляция класса обертки для получения событий .Net объекта в 1С

Разработка внешних компонент v8 Бесплатно (free)

Часто нужно использовать события объектов .Net. Например событие от COM порта, поступление сообщений по WhatsAp, сообщение об изменение в директории итд. Напрямую этого сделать нельзя, но можно сделать класс обертку и через него получать ВнешнееСобытие

14.09.2016    15456    0    Serginio    1    

.Net Core, 1C, динамическая компиляция, Scripting API

Разработка внешних компонент Практика программирования v8 Бесплатно (free)

Очень часто приходится использовать динамический код в 1С, используя Выполнить или Вычислить. Аналогичная задача и для использования скриптов на .Net. Я постарался показать, как можно скрестить ежа с ужом и получить удобный код. В этой статье много вражеского кода для чистого одноэсника, но все когда-то бывает впервые.

07.09.2016    18334    0    Serginio    7    

Загрузка логов журнала регистрации 1С из MS SQL в ElasticSearch

Журнал регистрации v8 Бесплатно (free)

Еще один инструмент хранения и визуализации логов журнала регистрации 1С

01.09.2016    33836    0    farukshin    9    

1С, Linux, Excel, Word, OpenXML, ADO, Net Core

Разработка внешних компонент v8 Бесплатно (free)

В данной статье показаны примеры кроссплатформенной работы с файлами Excel и Word (xlsx,docx) с помощью библиотеки OpenXML и Net Core

22.08.2016    20114    0    Serginio    14    

Асинхронное программирование в 1С через использование классов .Net из Native ВК

Разработка внешних компонент v8 Бесплатно (free)

Это продолжение статьи Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux II http://infostart.ru/public/541518/ В этой статье покажу, как можно асинхронно вызывать асинхронные методы и вызывать ВнешнееСобытие в 1С из сборки .Net

09.08.2016    17044    0    Serginio    3    

Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux II

Практика программирования v8 Бесплатно (free)

Это продолжение статьи http://infostart.ru/public/534901/ С того времени добавил поддержку методов с параметрами по умолчанию, вызов методов расширений, вывод типов для дженерик методов, поддержка объектов реализующих IDynamicMetaObjectProvider (ExpandoObject,DynamicObject), добавление синонимов к членам типа и асинхронное программирование на 1С!

09.08.2016    14095    0    Serginio    1    

Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux

Практика программирования v8 Бесплатно (free)

С выходом .Net Core CLR стало возможным использование классов .Net не только на Windows, но и других операционных системах. Это особенно важно в разрезе импортозамещения. И главное - это аналог COM под Linux. Сейчас под Linux для расширения возможностей 1С используются Web сервисы. Данная разработка позволит использовать не только сборки входящие в состав .Net Core, но и пользовательские портативные сборки.

04.07.2016    19298    0    Serginio    33    

Использование ТСД на WM 6 как беспроводной сканер с получением данных из 1С

Терминал сбора данных v8 1cv8.cf Абонемент ($m)

Как вариант печати этикеток на мобильный принтер, получение информации по ШК. Можно легко расширить до более сложных задач. В том числе на Xamarin под Android и IOS.

1 стартмани

18.05.2016    18957    6    Serginio    14    

.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.

Разработка внешних компонент Практика программирования WEB v7.7 v8 Бесплатно (free)

Очень часто нужно при работе с HTTP сервисами или сайтами использовать Асинхронные HTTP запросы, отправку на сервер нескольких файлов, использование сжатия трафика. Эта статья про то, как этого легко добиться.

09.03.2016    30175    0    Serginio    22    

Быстрое создание Внешних Компонент на C#. Примеры использования Глобального Контекста, IAsyncEvent, IExtWndsSupport, WinForms и WPF

Практика программирования Разработка внешних компонент v8 Бесплатно (free)

В большинстве случаев хватает и обычного COM объекта, учитывая, что в 8.х можно использовать события. Но иногда нужно использовать Глобальный Контекст для вызова глобальных функций, таких как Сообщить, NewObject и т.д. Кроме того, для использования форм нужен дескриптор окна 1С. Это продолжение статей Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент. http://infostart.ru/public/238584/ Там же лежат и исходники .NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия http://infostart.ru/public/417830/ 1C Messenger для отправки сообщений, файлов и обмена данными между пользователями 1С, вэб страницы, мобильными приложениями а ля Skype, WhatsApp http://infostart.ru/public/434771/ Использование классов .Net в 1С для новичков http://infostart.ru/public/448668/

15.02.2016    28174    0    Serginio    13    

.NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия

Разработка внешних компонент Математика и алгоритмы v7.7 v8 Бесплатно (free)

Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия, а так же генерация модулей на C# и 1С для подключения к событиям. Использование DynamicMethod и ILGenerator. Представлены примеры для использовании событий System.IO.FileSystemWatcher (Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.) и SerialPort (обработка сканера штрих кода подключенного к COM порту). Обертка позволяет использовать классы .Net только на языке 1С. Реализация 1C Messenger описанного здесь http://infostart.ru/public/434771/

12.11.2015    45282    0    Serginio    36    

Linq to ODATA

Внешние источники данных v8 1cv8.cf Бесплатно (free)

1С сейчас совершенствует REST интерфейс приложения, автоматически генерируемый платформой, и протокол обмена ODATA версии 3. С недавнего времени появилась возможность обмениваться, используя JSON. На просторах интернета мало информации по использованию Linq для ODATA для 1С. Поэтому решил поделиться опытом. Это продолжение статей https://infostart.ru/public/402433/

29.09.2015    31788    0    Serginio    11    

Ошибка формата файла журнала регистрации, database disk image is malformed

Журнал регистрации v8 1cv8.cf Бесплатно (free)

Ошибка формата файла журнала регистрации по причине: sqlite3_step failed: database disk image is malformed db: C:\Program Files\1cv8\srvinfo\reg_1541\34eda2fe-bcf4-485e-ab47-4f302319f59a\1Cv8Log\1Cv8.lgd sql: SELECT severity, date, connectID, session, transactionStatus, transactionDate, transactionID, userCode, computerCode, appCode, eventCode, comment, metadataCodes, sessionDataSplitCode, dataType, data, dataPresentation, workServerCode, primaryPortCode, secondaryPortCode FROM EventLog WHERE date<3155378867999999 AND eventCode IN (1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42) ORDER BY date DESC

27.09.2015    84107    0    mrWatson    29