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

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

База данных - Журнал регистрации

журнал регистрации платформа библиотеки нестандартные возможности .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. VKislitsin 891 12.05.20 14:02 Сейчас в теме
Юрий, очередной плюс доставлен, конечно.

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если разделение журнала не устанавливать, то все норм.
26. dimonb123 24.11.20 14:59 Сейчас в теме
(25)

и еще таблица Events заполняется только в первый раз. Если появляются какие-то виды событий после создания БД, то они в эту таблицу не добавляются.
27. пользователь 24.11.20 15:02
(26) Все что нужно - это написать в открытые репозитории, которые в виде OpenSource доступны всем жалающим.

Библиотека чтения: https://github.com/YPermitin/YY.EventLogReaderAssistant
Библиотека экспорта: https://github.com/YPermitin/YY.EventLogExportAssistant

Приветствуется не только информация техническая, но и примеры файлов, Pull-request'ы с вашей стороны (то есть доработки).
28. METAL 273 17.02.21 11:31 Сейчас в теме
Коллеги, подскажите пожалуйста, стоит задача: найти какие документы (и записи регистров) датой/периодом до 01.01.2021 менялись в промежутке с 07.02.2021 до 14.02.2021 ?
Формат файлов ЖР текстовый, разделяется "по дням", журнал за день 500МБ, иногда до 1ГБ
Как лучше подойти к решению данной задачи?
29. user1140274 19.04.21 21:47 Сейчас в теме
Юрий, здравствуйте! Сообщение не в тему публикации. У вас раньше был блог с описанием архитектуры 1С и многое другое, была замечательная статья как через веб-сервисы интегрировать 1С и .NET, в прикрепленных картинках сама статья. Сами файлы и видео больше не доступны, возможно ли как-то их скачать откуда-нибудь, очень надо)
Прикрепленные файлы:
30. FreeArcher 149 26.03.22 05:21 Сейчас в теме
Юрий здравствуйте. У меня к вам вопрос: почему именно c#? Сам интересуюсь смежными языками. Недавно сделал парсер тех.журнала с выгрузкой в разве СУБД на python. Но вижу, что в среде 1С популярен именно c#. Хотелось бы понять почему?
31. Froloid 66 16.03.23 19:07 Сейчас в теме
Почему Юрий теперь инфобот?
32. ImHunter 273 17.03.23 06:08 Сейчас в теме
(31) Потому что много и вдумчиво копался под капотом 1С. Забанили, с полгода назад. Ну хоть его статьи все-таки оставили.
Оставьте свое сообщение

См. также

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

Механизмы платформы 1С Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

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

27.01.2016    91542    Serginio    116    

183

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

Разработка внешних компонент Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Абонемент ($m)

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

1 стартмани

28.11.2013    105581    323    Serginio    80    

141

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

Внешние источники данных Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

18.05.2009    44262    222    Elisy    79    

42

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

Сайты и интернет-магазины Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

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

10.03.2016    72735    Serginio    33    

123

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

Мессенджеры и боты Платформа 1С v8.3 Бесплатно (free)

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

15.12.2015    65830    Serginio    5    

87

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

Языки и среды Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

28.08.2015    29563    3    Serginio    2    

10

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

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

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

1 стартмани

25.06.2015    38004    4    Serginio    4    

4

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

Разработка внешних компонент Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

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

1 стартмани

14.04.2015    25291    2    Serginio    1    

1

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

Работа с интерфейсом Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Россия Абонемент ($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    33264    281    Elisy    22    

21

Анализ логов журнала регистрации 1С с использованием BI Superset

Журнал регистрации Платформа 1С v8.3 Россия Бесплатно (free)

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

22.04.2022    2376    digital-samolet    6    

17

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

Журнал регистрации Платформа 1С v8.3 Россия Бесплатно (free)

Под конкретную задачу потребовалось сделать скрипт, который подключается на сервере приложений 1С к предварительно созданным службам RAS, обходит все кластера 1С на этом же сервере и применяет требования назначения функциональности (далее ТНФ).

15.02.2022    914    artem_kray    0    

2

Журнал регистрации - основные методы работы через БСП

Журнал регистрации БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

11.11.2021    18093    quazare    16    

93

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

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

07.09.2016    19779    Serginio    7    

12

Взаимодействие 1С со сторонними продуктами посредством REST и Golang (middleware). Часть 3 - ElasticSearch

Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Как в статье №1 этого цикла выгрузим через прослойку журнал регистрации (xml формат) в ElasticSearch. Статья будет иметь практическую направленность в минималистичном стиле

14.09.2020    3815    dmitry-irk38    4    

17

Выгрузка журнала регистрации в ElasticSearch с помощью Python

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

Данный скрипт реализован на языке python с подключаемой библиотекой ElasticSearch, что позволяет парсить и загружать файлы ЖР напрямую в ES. ВНИМАНИЕ! Данный парсер работает только со старым форматом ЖР и только, если у него периодичность день или час.

26.04.2021    2240    buganov    2    

9

Инструменты экспорта журнала регистрации 1С в ClickHouse/ElasticSearch

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

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

12.11.2020    6797    akpaevj    39    

41

Code First и Linq to EF на примере 1С версии 8.3. Часть II

Языки и среды Платформа 1С v8.3 Бесплатно (free)

Эта статья - продолжение http://infostart.ru/public/393228/ Там же лежит и обработка для генерации C# файлов. Суть та же, что и для 7.7, но есть особенности.

24.09.2015    19560    Serginio    8    

4

Сбой, отказ 1C:Предприятия 7.7, код исключения e06d7363. APPCRASH 1cv7s.exe

Администрирование СУБД Журнал регистрации Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Прекращена работа программы "1CV7 starter program". Никто не может зайти в 1C 7.7. Апкреш. Что делать? Проверьте, возможно журнал регистрации информационной базы 1С: Предприятия 7.7 поврежден.

17.08.2020    3525    ksnik    3    

4

Быстрый способ удаления записей из журнала регистрации 1С

Журнал регистрации Чистка данных Платформа 1С v8.3 Бесплатно (free)

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

06.08.2020    8609    DataReducer    7    

22

Как сломать работу 1С, будучи пользователем

Инструкции пользователю Платформа 1С v8.3 Бесплатно (free)

Шуточные и не только истории, как сломать работу 1С на пустом месте. И, возможно, остановить работу компании.

14.06.2020    13816    Infostart    58    

79

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

Журнал регистрации Платформа 1С v8.3 Россия Абонемент ($m)

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

1 стартмани

27.09.2019    21081    6    DonAlPatino    34    

51

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

Журнал регистрации Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

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

3 стартмани

25.11.2019    11353    24    MikeLetto    0    

7

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

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

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

31.10.2019    10904    slozhenikin_com    28    

33

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

Журнал регистрации Инструменты администратора БД Платформа 1С v8.3 Бесплатно (free)

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

05.04.2019    37186    ids79    25    

66

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

Журнал регистрации Инструменты администратора БД Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

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

22.01.2019    10395    phsin    20    

27

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

Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

11.10.2018    26505    postovalov    32    

76

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

Журнал регистрации Платформа 1С v8.3 Бесплатно (free)

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

22.09.2018    39366    Fox-trot    27    

36

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

Журнал регистрации Платформа 1С v8.3 Бесплатно (free)

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

16.09.2017    20476    metmetmet    42    

30

Linq to EF. Практика использования. Часть III

Языки и среды Платформа 1С v8.3 Бесплатно (free)

Эта статья является продолжением Code First и Linq to EF на примере 1С версии 7.7 и 8.3. Здесь приведены примеры построения запросов и ссылки на интересные материалы

25.09.2015    17807    Serginio    4    

11

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

Журнал регистрации Платформа 1С v8.3 Бесплатно (free)

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

24.07.2017    13422    user700035_6550355    17    

11

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

Журнал регистрации Платформа 1С v8.3 Россия Бесплатно (free)

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

04.06.2017    32589    DrSender    6    

37

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

Журнал регистрации Платформа 1С v8.3 1С:Управление торговлей 11 Управленческий учет Бесплатно (free)

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

04.05.2017    49469    Mortiferus    5    

28

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

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

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

12.11.2015    49916    Serginio    36    

56

Linq to ODATA

Внешние источники данных Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

29.09.2015    36257    Serginio    11    

36

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

Разработка внешних компонент Платформа 1С v8.3 Бесплатно (free)

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

28.09.2016    23894    Serginio    12    

20

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

Разработка внешних компонент Платформа 1С v8.3 Бесплатно (free)

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

14.09.2016    16992    Serginio    1    

9

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

Журнал регистрации Платформа 1С v8.3 Бесплатно (free)

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

01.09.2016    40949    farukshin    11    

91

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

Разработка внешних компонент Платформа 1С v8.3 Бесплатно (free)

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

22.08.2016    25174    Serginio    15    

45

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

Разработка внешних компонент Платформа 1С v8.3 Бесплатно (free)

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

09.08.2016    18495    Serginio    3    

17