Журнал регистрации 1С (sql lite) в web app

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

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

13
Данная публикация рассматривает построение компонентного решения работы журнала регистрации в стороннем приложении(web app). Встала задача миграции sql lite жр во внешнюю базу. Данное решение было создано: 1. для хранения жр за весь период 2. для ускорения работы с жр 3. для ускорения сервера предприятия, так как именно он (а точнее рагент) пытается записать данные в жр sql lite(фактически файл на диске), после увеличения размера файла более 10 гб, поступали жалобы по вопросу быстродействия 1с (и не только ради этого) Данная публикация может быть полезной администраторам, программистам, оптимизаторам.

Компоненты, технологии:

1. вин служба(vb net)  - читает данные из sql lite,  вставляет в базу ms sql, удаляет записи из sql lite

2. web app back end(python) - многопоточная обработка запросов front end, выполняет запросы, отдает json на front

3.  web app front end(js) - форма для пользовательской работы

4. nginx

5. 1c для чтения истории изменения объекта из 1с

6. ms sql server

За основу миграции данных  из sql lite был взят проект(сами не стали писать, погуглили, нашли, посмотрели - вроде подходит):

https://github.com/alekseybochkov/EventLogLoader/tree/master/EventLogLoaderManager. Алексей(автор проекта) проделал хорошую работу, спасибо ему огромное, для законченной функциональности мне не хватало:

1. очистка sql lite после чтения

2. ссылка на 1с в формате 1с предприятия

Данные пункты запилил. Компонент миграции данных из sql lite в сиквел готов. Все работает, все ок.

Доработка базы(ms sql)+win служба:

 

Добавим вьюху, чтобы с нее читать с но лок:

SELECT     dbo.Events.DateTime, dbo.Events.DataString, dbo.Events.DataStructure, dbo.Events.Comment, dbo.Computers.Name AS ComputerName, 
                      dbo.Users.Name AS UsersName, dbo.Events.MetadataID, dbo.Metadata.Name AS MetadataName, dbo.Infobases.Name AS InfobasesName, dbo.Events.UserName, 
                      dbo.Events.ref_ones, dbo.Events.InfobaseCode, 
                      CASE WHEN dbo.EventsType.Name = '_$Session$_.Start' THEN 'Сеанс. Начало' WHEN dbo.EventsType.Name = '_$Session$_.Finish' THEN 'Сеанс. Завершение' WHEN
                       dbo.EventsType.Name = '_$InfoBase$_.ConfigUpdate' THEN 'Информационная база. Изменение конфигурации' WHEN dbo.EventsType.Name = '_$InfoBase$_.DBConfigUpdate'
                       THEN 'Информационная база. Изменение конфигурации  базы данных' WHEN dbo.EventsType.Name = '_$InfoBase$_.EventLogSettingsUpdate' THEN 'Информационная база. Изменение  параметров журнала регистрации'
                       WHEN dbo.EventsType.Name = '_$InfoBase$_.InfoBaseAdmParamsUpdate' THEN 'Информационная база. Изменение  параметров информационной базы' WHEN
                       dbo.EventsType.Name = '_$InfoBase$_.MasterNodeUpdate' THEN 'Информационная база. Изменение главного  узла' WHEN dbo.EventsType.Name = '_$InfoBase$_.RegionalSettingsUpdate'
                       THEN 'Информационная база. Изменение  региональных установок' WHEN dbo.EventsType.Name = '_$InfoBase$_.TARInfo' THEN 'Тестирование и исправление. Сообщение'
                       WHEN dbo.EventsType.Name = '_$InfoBase$_.TARMess' THEN 'Тестирование и исправление. Предупреждение' WHEN dbo.EventsType.Name = '_$InfoBase$_.TARImportant'
                       THEN 'Тестирование и исправление. Ошибка' WHEN dbo.EventsType.Name = '_$Data$_.New' THEN 'Данные. Добавление' WHEN dbo.EventsType.Name = '_$Data$_.Update'
                       THEN 'Данные. Изменение' WHEN dbo.EventsType.Name = '_$Data$_.Delete' THEN 'Данные. Удаление' WHEN dbo.EventsType.Name = '_$Data$_.TotalsPeriodUpdate'
                       THEN 'Данные. Изменение периода рассчитанных итогов' WHEN dbo.EventsType.Name = '_$Data$_.Post' THEN 'Данные. Проведение' WHEN dbo.EventsType.Name
                       = '_$Data$_.Unpost' THEN 'Данные. Отмена проведения' WHEN dbo.EventsType.Name = '_$User$_.New' THEN 'Пользователи. Добавление' WHEN dbo.EventsType.Name
                       = '_$User$_.Update' THEN 'Пользователи. Изменение' WHEN dbo.EventsType.Name = '_$User$_.Delete' THEN 'Пользователи. Удаление' WHEN dbo.EventsType.Name
                       = '_$Job$_.Start' THEN 'Фоновое задание. Запуск' WHEN dbo.EventsType.Name = '_$Job$_.Succeed' THEN 'Фоновое задание. Успешное завершение' WHEN dbo.EventsType.Name
                       = '_$Job$_.Fail' THEN 'Фоновое задание. Ошибка выполнения' WHEN dbo.EventsType.Name = '_$Job$_.Cancel' THEN 'Фоновое задание. Отмена' WHEN dbo.EventsType.Name
                       = '_$PerformError$_' THEN 'Ошибка выполнения' WHEN dbo.EventsType.Name = '_$Transaction$_.Begin' THEN 'Транзакция. Начало' WHEN dbo.EventsType.Name
                       = '_$Transaction$_.Commit' THEN 'Транзакция. Фиксация' WHEN dbo.EventsType.Name = '_$Transaction$_.Rollback' THEN 'Транзакция. Отмена' ELSE dbo.EventsType.Name
                       END AS EventTypeName, dbo.Applications.Name AS ApplicationName, dbo.Events.EventType, dbo.Events.EventID, dbo.Events.TransactionStatus
FROM         dbo.Events WITH (NOLOCK) LEFT OUTER JOIN
                      dbo.EventsType ON dbo.Events.EventID = dbo.EventsType.Code AND dbo.Events.InfobaseCode = dbo.EventsType.InfobaseCode LEFT OUTER JOIN
                      dbo.Applications ON dbo.Events.InfobaseCode = dbo.Applications.InfobaseCode AND dbo.Events.AppName = dbo.Applications.Code LEFT OUTER JOIN
                      dbo.Metadata ON dbo.Events.InfobaseCode = dbo.Metadata.InfobaseCode AND dbo.Events.MetadataID = dbo.Metadata.Code LEFT OUTER JOIN
                      dbo.Users ON dbo.Events.InfobaseCode = dbo.Users.InfobaseCode AND dbo.Events.UserName = dbo.Users.Code LEFT OUTER JOIN
                      dbo.Computers ON dbo.Events.ComputerName = dbo.Computers.Code AND dbo.Events.ComputerName = dbo.Computers.Code AND 
                      dbo.Events.InfobaseCode = dbo.Computers.InfobaseCode LEFT OUTER JOIN
                      dbo.Infobases ON dbo.Events.InfobaseCode = dbo.Infobases.Code

Доработка EventLogProcessor.vb:

 Sub LoadEvents83(FileName As String)
...

 Command.CommandText = "SELECT 
                                            [rowID],
                                            [severity],
                                            [date],
                                            [connectID],
                                            [session],
                                            [transactionStatus],
                                            [transactionDate],
                                            [transactionID],
                                            [userCode],
                                            [computerCode],
                                            [appCode],
                                            [eventCode],
                                            [comment],
                                            [metadataCodes],
                                            [sessionDataSplitCode],
                                            [dataType],
                                            [data],
                                            [dataPresentation],
                                            [workServerCode],
                                            [primaryPortCode],
                                            [secondaryPortCode],

											CASE
											    WHEN  instr(data, ':')>0 
                                                    THEN 
                                                        substr(data, 25 + instr(data, ':'), 8) || '-' ||
                                                        substr(data, 21 + instr(data, ':'), 4) || '-' ||
                                                        substr(data, 17 + instr(data, ':'), 4) || '-' || 
                                                        substr(data, 1 + instr(data, ':'), 4)  || '-' ||
                                                        substr(data, 5 + instr(data, ':'), 12)
													ELSE  
                                                         ''
											END  as ref_ones

                                        FROM [EventLog] 
                                        WHERE [rowID] > @LastEventNumber83 AND [date] >= @MinimumDate
                                        ORDER BY 1
                                        LIMIT 100000"

                Command.Parameters.AddWithValue("LastEventNumber83", LastEventNumber83)

                Dim noOfSeconds As Int64 = (LoadEventsStartingAt - New Date).TotalSeconds
                Command.Parameters.AddWithValue("MinimumDate", noOfSeconds * 10000)
....
 

Command_DELETE.CommandText = "PRAGMA journal_mode = TRUNCATE; DELETE From EventLog WHERE rowID < @LastEventNumber83;"
                Command_DELETE.Parameters.AddWithValue("LastEventNumber83", LastEventNumber83)

                Try

                    Command_DELETE_Count = Command_DELETE.ExecuteNonQuery()

                    Log.Info("Try delete(EventLog) success: " + Command_DELETE_Count.ToString + " LastEventNumber83:" + LastEventNumber83.ToString)

                Catch ex As Exception

                    Log.Error(ex, "Try delete failed")

                End Try

                Command_DELETE.CommandText = "PRAGMA journal_mode = TRUNCATE; DELETE From EventLogMetadata WHERE eventLogID < @LastEventNumber83;"
                Command_DELETE.Parameters.AddWithValue("LastEventNumber83", LastEventNumber83)

...

 

web app.

Итак, backend python:

1.api_log.py(основной файл)

from http.server import HTTPServer, BaseHTTPRequestHandler
from socketserver import ThreadingMixIn
import threading
import json
from urllib.parse import urlparse, parse_qs
import socket
import api_log_func

class Handler(BaseHTTPRequestHandler):

    def do_GET(self):

        path = urlparse(self.path).path
        qs = urlparse(self.path).query
        qs = parse_qs(qs)

        res =  api_log_func.callback(path, qs, self)

        resp = json.dumps(res, default=api_log_func.json_serial).encode()

        self.send_response(200)
        self.send_header("Content-type", "application/json")
        self.send_header("Access-Control-Allow-Origin", "*")
        self.send_header("Access-Control-Expose-Headers", "Access-Control-Allow-Origin")
        self.send_header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
        self.end_headers()
        self.wfile.write(resp)
        
        return

class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
    """Handle requests in a separate thread."""

if __name__ == '__main__':
    server = ThreadedHTTPServer(('0.0.0.0', 8010), Handler)
    print('Starting server, use <Ctrl-C> to stop')
    server.serve_forever()

слушает порт, выполняет методы, возвращает json

2. api_log_func

#import peewee

#import json
from datetime import datetime
from datetime import timedelta

#import os
#import orm.fields
#import gevent
#import threading
## from call import Call # TODO loopback!

#import inspect

## import asyncio

import pymssql, base64, sys, json, time

def get_mssql_conn():
    
    conn = pymssql.connect(server='', user='sa', password='', database='ExLogBook2')  
    cursor = conn.cursor()  

    return cursor

def api_log_get_meta_data(qs):
   
    #res = (OrgCRM
    #    .select(OrgCRM.ref, OrgCRM.name)
    #    .where(OrgCRM.mark == False)
    #    .where(OrgCRM.show == True))

    #res = res.dicts()
    #return list(res) 
   
    d = []

    cursor = get_mssql_conn()

    cursor.execute('SELECT [Code],[Name] FROM [ExLogBook2].[dbo].[Metadata] WHERE [InfobaseCode]=1;')  

    row = cursor.fetchone()  
    while row:  
        
        d.append({'code':row[0],'name':row[1]})

        row = cursor.fetchone()  

    #return sorted(d, key=lambda e: e['name'])
    return d

def api_log_get_event_objs(qs):
    
    #in:
    #metadata_id
    #data_string
     
    d = []

    query_text = 'SELECT DISTINCT [DataString], [DataStructure], [ref_ones] FROM [ExLogBook2].[dbo].[v_Events] WHERE [InfobaseCode]=1 %data_string% %metadata_id% %date_start% %date_end%'

    if qs.get('data_string'):
        query_text = query_text.replace('%data_string%', ' AND [DataString] LIKE \'%'+qs.get('data_string')[0]+'%\'')
    else:
        query_text = query_text.replace('%data_string%', '')
        
    if qs.get('metadata_id'):
        query_text = query_text.replace('%metadata_id%', ' AND [MetadataId] = '+qs.get('metadata_id')[0])
    else:
        query_text = query_text.replace('%metadata_id%', '')
        
    if qs.get('date_start'):
        query_text = query_text.replace('%date_start%', ' AND [DateTime] >= CONVERT(DATETIME, \''+qs.get('date_start')[0]+' 00:00\', 103)')
    else:
        query_text = query_text.replace('%date_start%', '')
            
    if qs.get('date_end'):
        query_text = query_text.replace('%date_end%', ' AND [DateTime] <= CONVERT(DATETIME, \''+qs.get('date_end')[0]+' 23:59\', 103)')
    else:
        query_text = query_text.replace('%date_end%', '')
    
    cursor = get_mssql_conn()

    cursor.execute(query_text)  
    row = cursor.fetchone()  
    while row:  
        
        d.append(
            {
                #'date_time':'',
                #'comment':row[1],
                'data_string':row[0],
                'data_structure':row[1],
                #'user_name':row[4],
                #'computer_name':row[5]
                'ref_ones':row[2]
             }
            )

        row = cursor.fetchone()  

    return sorted(d, key=lambda e: e['data_string'])

def api_log_get_results(qs):
   
    #in:
    #data_structure
    #data_string    
    ##data_string

    d = []

    query_text = 'SELECT [DateTime], [Comment], [DataString], [DataStructure], [UsersName], [ComputerName], [MetadataName], [EventTypeName], [ApplicationName], [EventType], [EventID], [TransactionStatus] FROM [ExLogBook2].[dbo].[v_Events] WHERE [InfobaseCode]=1 %data_structure% %data_string% %metadata_id% %ref_ones% %date_start% %date_end%'

    if qs.get('data_string'):
        query_text = query_text.replace('%data_string%', ' AND [DataString] LIKE \'%'+qs.get('data_string')[0]+'%\'')
    else:
        query_text = query_text.replace('%data_string%', '')
    
    if qs.get('data_structure'):
        query_text = query_text.replace('%data_structure%', ' AND [DataStructure] = '+qs.get('data_structure')[0])
    else:
        query_text = query_text.replace('%data_structure%', '')         
        
    if qs.get('metadata_id'):
        query_text = query_text.replace('%metadata_id%', ' AND [MetadataId] = '+qs.get('metadata_id')[0])
    else:
        query_text = query_text.replace('%metadata_id%', '')
    
    if qs.get('ref_ones'):
        query_text = query_text.replace('%ref_ones%', ' AND [ref_ones] = \''+qs.get('ref_ones')[0]+'\'')
    else:
        query_text = query_text.replace('%ref_ones%', '') 
    
    if qs.get('date_start'):
        query_text = query_text.replace('%date_start%', ' AND [DateTime] >= CONVERT(DATETIME, \''+qs.get('date_start')[0]+' 00:00\', 103)')
    else:
        query_text = query_text.replace('%date_start%', '')
            
    if qs.get('date_end'):
        query_text = query_text.replace('%date_end%', ' AND [DateTime] <= CONVERT(DATETIME, \''+qs.get('date_end')[0]+' 23:59\', 103)')
    else:
        query_text = query_text.replace('%date_end%', '')
    
    cursor = get_mssql_conn()

    cursor.execute(query_text)  
    row = cursor.fetchone()  
    while row:  
        
        d.append(
            {
                'date_time':row[0],
                'comment':row[1],
                'data_string':row[2],
                'data_structure':row[3],
                'user_name':row[4],
                'computer_name':row[5],
                'metadata_name':row[6],
                'event_type_name':row[7],
                'application_name':row[8],
                'event_type':row[9],
                'event_id':row[10],
                'transaction_status':row[11]
             }
            )

        row = cursor.fetchone()  

    return sorted(d, key=lambda e: e['date_time'])

def callback(path, qs, self):

    res = eval('%s(qs)' % path[1:])

    return res

def api_log_get_result_mod_zn(qs):
   
    #in:
    #data_structure
    #data_string    
    ##data_string

    d = []

    query_text = 'SELECT DISTINCT DataString, UsersName, mod_post_doc, ref_ones, var_1, var_2, var_3, var_4 FROM (SELECT [DateTime], [Comment], [DataString], [DataStructure], [UsersName], [ComputerName], [MetadataName], [EventTypeName], [ApplicationName], [EventType], [EventID], [TransactionStatus], CASE WHEN [Comment] like \'%'+'Статус проведения документа до изменения:Да'+'%\' THEN 1 ELSE 0 END AS mod_post_doc, [ref_ones], CASE WHEN [Comment] like \'%<Контрагент>:%\' AND [Comment] like \'%<Автомобиль>:%\'THEN 1 ELSE 0 END AS var_1, CASE WHEN [Comment] like \'%<Автомобиль>:%\'THEN 1 ELSE 0 END AS var_2, CASE WHEN [Comment] like \'%<Контрагент>:%\'THEN 1 ELSE 0 END AS var_3, CASE WHEN [Comment] like \'%Таблица товаров до записи:%\' THEN 1 ELSE 0 END AS var_4 FROM [ExLogBook2].[dbo].[v_Events] WHERE [InfobaseCode]=1 and ([Comment] like \'%'+'Измененнные реквизиты шапки до записи:'+'%\' or [Comment] like \'%+'+'Таблица товаров до записи:'+ '%\' or [Comment] like \'%'+'Статус проведения документа до изменения:%\') %metadata_id% %date_start% %date_end% ) AS T1 WHERE (T1.mod_post_doc=0 and (T1.var_1=1 or T1.var_2=1 or T1.var_3=1)) or (T1.mod_post_doc=1 and T1.var_4=1)  order by var_1 desc, var_2 desc, var_3 desc, var_4 desc '

    query_text = query_text.replace('%metadata_id%', ' AND [MetadataId] = 12')

    if qs.get('date_start'):
        query_text = query_text.replace('%date_start%', ' AND [DateTime] >= CONVERT(DATETIME, \''+qs.get('date_start')[0]+' 00:00\', 103)')
    else:
        query_text = query_text.replace('%date_start%', '')
            
    if qs.get('date_end'):
        query_text = query_text.replace('%date_end%', ' AND [DateTime] <= CONVERT(DATETIME, \''+qs.get('date_end')[0]+' 23:59\', 103)')
    else:
        query_text = query_text.replace('%date_end%', '')
    
    cursor = get_mssql_conn()

    cursor.execute(query_text)  
    row = cursor.fetchone()  
    while row:  
        
        d.append(
            {
                #'date_time':row[0],
                #'comment':row[1],
                'data_string':row[0],
                #'data_structure':row[3],
                'user_name':row[1],
                #'computer_name':row[5],
                #'metadata_name':row[6],
                #'event_type_name':row[7],
                #'application_name':row[8],
                #'event_type':row[9],
                #'event_id':row[10],
                #'transaction_status':row[11],
                'mod_post_doc':row[2],
                'ref_ones':row[3],
                'var_1':row[4],
                'var_2':row[5],
                'var_3':row[6],
                'var_4':row[7]
             }
            )

        row = cursor.fetchone()  

    return d

def json_serial(obj):
  if isinstance(obj, (datetime, datetime.date)):
    return obj.isoformat()
  raise TypeError("Type is not serializable %s" % type(obj))

выполняет запросы к бд. (про сиквел инъекции я в курсе, про то, что параметры в запрос нужно устанавливать по-другому, я тоже в курсе, и про качество кода тоже в курсе)

Общая логика работы:

1. слушать порт

2. выполнить запрос

3.  преобразовать в json

4. отдать по запросу

Фронт енд

Фронт енд запиливал коллега. Ничего сказать не могу. Выглядит так:

web app готово.

Общий вид работы:

Пример получения данных из 1С:

Процедура ЗаполнитьДаннымиИзВнешнегоЖурналаРегистрации(ЖурналРегистрации, ОбъектСсылка)
	
	ИдОбъекта = Строка(ОбъектСсылка.УникальныйИдентификатор());
	Если Не ЗначениеЗаполнено(ИдОбъекта) Тогда 
		
		Возврат;
		
	КонецЕсли;
	
	HTTPСоединение = HTTPСоединение();

	Результат = Неопределено;
	
	ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();
	
	Адрес = "/api_log_get_results?ref_ones="+ИдОбъекта;
	
	HTTPЗапрос = Новый HTTPЗапрос(Адрес);
	
	HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос, ИмяФайлаОтвета);
	
	Если HTTPОтвет.КодСостояния=200 Тогда 
		
		Результат = ПрочитатьФайлОтвета(ИмяФайлаОтвета);
		
	КонецЕсли;
	
	УдалитьФайлы(ИмяФайлаОтвета);
	
	HTTPОтвет = Неопределено;
	HTTPСоединение = Неопределено;
	
	Если Не Результат=Неопределено Тогда 
		
		Для Каждого ТекСтрокаРез Из Результат.Данные Цикл
			
			СтрТЗ = ЖурналРегистрации.Добавить();
			
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры

Результат:

 

Тех требования:

1С Предприятие 8.Х (жр в sql lite)

nginx

python 3.5>

ms sql server

ОС не имеет значения, мы деплоили на debian, на windows тоже вполне себе работать будет

Результат работы над поделкой превзошел все мои ожидания (в плане скорости отклика жр)

В архивах сорцы. гуд лак

13

Скачать файлы

Наименование Файл Версия Размер
src web app
.7z 1,16Mb
09.07.18
2
.7z 1,16Mb 2 Скачать
src win ser допиленный (EventLogLoader-master)
.7z 48,11Mb
08.07.18
3
.7z 48,11Mb 3 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. swenzik 09.07.18 20:52 Сейчас в теме
сейчас придёт Люстин и будет ругаться что не в грэйлог
делов-то

Запрос = Новый HTTPЗапрос();
	Запрос.АдресРесурса="/gelf";
	Запрос.Заголовки=Новый Соответствие();
	Запрос.Заголовки.Вставить("Content-Type","application/json");
	Запрос.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть());

	Соединение = Новый HTTPСоединение("10.10.10.10",12203);
2. dmarenin 10.07.18 04:45 Сейчас в теме
3. AlexZhukov 17.09.18 12:02 Сейчас в теме
Автор, а можете пояснить что у вас в архиве "src win ser допиленный (EventLogLoader-master)"
там очень много всего и непонятно что в итоге рабочее?
Настройки подключения я так понял в config.json?
4. dmarenin 239 17.09.18 19:08 Сейчас в теме
Оставьте свое сообщение

См. также

Быстрый поиск в журналe регистрации 1С *.lgd 7

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

Обработка для быстрого поиска данных в журнале регистрации 1С SQLite (.lgd). 8.3.15.

1 стартмани

10.10.2019    1884    2    andboss    0       

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

Инструменты и обработки Системный администратор Архив с данными v8 Россия Windows Абонемент ($m) Журнал регистрации

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

1 стартмани

27.09.2019    2907    3    DonAlPatino    32       

Удаление журнала регистрации с отбором 4

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Журнал регистрации

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

2 стартмани

05.09.2019    696    4    doctorov_s    4       

Журнали2Ст: сверхбыстрый журнал регистрации 1С 86

Инструменты и обработки Системный администратор Программист Приложение (exe) v8 Windows Абонемент ($m) Журнал регистрации

Строит внешний индекс по журналам регистрации любого формата и делает поиск в них фантастически быстрым. Дополнительно ничего не нужно настраивать! Журналы Регистрации остаются на своём месте и не занимают дополнительного, а сервис Журнали2Ста обеспечивает их постоянную индексацию.

1 стартмани

22.08.2019    4661    44    MrWonder    44       

Отчет по изменению документа 7

Отчеты и формы Пользователь Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

Данная обработка покажет, кто изменил определенный документ.

1 стартмани

30.07.2019    1004    6    ranis888    6       

Отправление событий журнала регистрации в приватный / публичный канал Telegram в виде сообщений и файлов 5

Инструменты и обработки Программист Конфигурация (md, cf) v8 v8::УФ Абонемент ($m) WEB Журнал регистрации

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

1 стартмани

29.07.2019    1061    3    serg-lom89    0       

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

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Абонемент ($m) Журнал регистрации

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

1 стартмани

20.06.2019    1895    2    milut    7       

Как отправить ошибки из журнала регистрации на почту? Продолжение. Отдельная база 4

Инструменты и обработки no Конфигурация (md, cf) v8 Windows Абонемент ($m) Журнал регистрации

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

1 стартмани

27.05.2019    1522    2    wowik    0       

Запуск встроенного в платформу механизма История данных для ленивых 17

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

В последних версиях платформы 1С появился замечательный механизм Истории данных. Если кратко, механизм позволяет сохранять историю, просматривать, сверять и самое приятное, это восстанавливать любую версию объекта. А самое главное, чтобы это заработало, не нужно продумывать, писать и поддерживать тонны кода, все уже сделано за нас... Возникает вопрос: Как запустить встроенный в платформу механизм Истории данных ничего не кодируя?

1 стартмани

24.05.2019    2886    3    _root    12       

Отчет для просмотра отчетов, которые запускали пользователи 12

Отчеты и формы Системный администратор Пользователь Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

Отчет отвечает на вопрос: кто, и как часто формирует отчеты. Было протестировано на Управлении торговлей, конфигурация 11.4.1.273.

1 стартмани

18.05.2019    1726    8    Mari_Kuznetzova    3       

Подсистема для выгрузки, быстрого поиска и анализа журнала регистрации 1С в Elasticsearch 26

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Журнал регистрации Поиск данных

Elasticsearch - это opensource решение для очень быстрого поиска данных в больших массивах информации. Использование этого решения позволит решить проблемы с поиском и анализом больших объемов информации журнала регистрации. Протестировано на платформах начиная с 8.3.10.2580.

5 стартмани

15.05.2019    3221    13    Nikolo17    12       

Журнал Регистрации ➜ Телеграмм 109

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8::УФ 1cv8.cf Россия Абонемент ($m) Журнал регистрации

Подключаемая обработка для рассылки ошибок журнала регистрации в телеграмм.

1 стартмани

14.05.2019    5652    15    🅵🅾️🆇    9       

История данных [Расширение] УТ11 7

Инструменты и обработки Программист Расширение (cfe) v8 УТ11 Абонемент ($m) Журнал регистрации

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

3 стартмани

06.05.2019    1643    2    noprogrammer    6       

История выполнения фоновых заданий в виде диаграмм (версия 6.4.17) 20

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

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

1 стартмани

26.04.2019    2380    19    sertak    21       

Журнал регистрации по навигационной ссылке 7

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Журнал регистрации

Обработка получает записи журнала регистрации только по указанной навигационной ссылке (либо просто по ссылке).

1 стартмани

13.03.2019    2055    2    Смешной 1С    0       

Сообщение об ошибках журнала регистрации по электронной почте 2

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf ЗКГУ3.0 БП3.0 ЗУП3.x Россия Абонемент ($m) Журнал регистрации Email

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

2 стартмани

04.03.2019    1417    3    ig-efrem    2       

Запрос к Журналу регистрации 2

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8 ЗКГУ3.0 Россия Windows Абонемент ($m) Журнал регистрации

Краткая форма получения сведений из Журнала регистрации - с детализацией событий до минут

1 стартмани

03.03.2019    1744    9    mnb-next    2       

История версий объектов 2

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Журнал регистрации

Подсистема для записи и хранения изменений любых объектов ссылочного типа. Формирует хронологию работы пользователей с базой данных. Позволяет произвести быстрый поиск версии объекта БД по указанным параметрам и восстановить данные выбранной версии. Протестирована в конфигурации ЗУП, редакция 2.5 на платформе 1С:Предприятие 8.2 (8.2.19.130). Обычные формы. В поставке выгрузка тестовой демонстрационной базы и файл CF c объектами подсистемы.

1 стартмани

22.02.2019    2361    7    dmitrydemenew    3       

Рассылка событий журнала регистрации 4

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Журнал регистрации

Отправка событий журнала регистрации на почту с возможностью группировки и фильтрации.

1 стартмани

07.02.2019    2073    2    Just4Fun    0       

Как отправить ошибки из журнала регистрации на почту? 34

Статья Программист Нет файла v8 УПП1 Абонемент ($m) Журнал регистрации

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

1 стартмани

06.02.2019    4081    wowik    0       

Монитор активных пользователей по журналу регистрации 1

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Журнал регистрации

Монитор активности пользовательских сеансов с возможностью завершить сеансы и соединения. Платформа 1С: 8.3.12.1685. БСП не используется

1 стартмани

01.02.2019    1980    3    mefalcon    2       

Ошибки, предупреждения и прочее из журнала регистрации на почту и в Telegram автоматически (БП 3, ЗУП 3.1, УТ 11.4, ERP 2.4, Розница 2.2) 22

Инструменты и обработки Системный администратор Программист Пользователь Внешняя обработка (ert,epf) v8 Розница УНФ ERP2 ЗКГУ3.0 БП3.0 УТ11 ЗУП3.x Абонемент ($m) Журнал регистрации Поиск данных Тестирование и исправление Email

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

2 стартмани

28.01.2019    3867    23    Redinternational    3       

Удаление одинаковых версий в журнале регистрации, очистка записей по неверсионированным объектам 1

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Украина Абонемент ($m) Чистка базы Журнал регистрации

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

2 стартмани

09.01.2019    1902    t_yuri    0       

Архивирование и удаление файлов журнала регистрации на Linux-сервере 3

Инструменты и обработки Системный администратор Архив с данными v8 Linux Абонемент ($m) Журнал регистрации

Bash-скрипт для архивации и удаления файлов Журнала регистрации в старом формате на Linux-сервере 1С Предприятия.

1 стартмани

29.11.2018    2291    Sloth    4       

Загрузка журнала регистрации 1С v8 в базу SQLServer 6

Инструменты и обработки Системный администратор Программист Архив с данными v8 Россия Windows Абонемент ($m) Журнал регистрации

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

10 стартмани

26.10.2018    3432    7    user1054014    12       

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

Инструменты и обработки Системный администратор Расширение (cfe) v8 БП3.0 Россия Абонемент ($m) Журнал регистрации

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

1 стартмани

26.10.2018    3822    47    xan333    2       

Python-скрипт для массового переключения формата журнала регистрации 3

Инструменты и обработки Системный администратор Архив с данными v8 1cv8.cf Абонемент ($m) Журнал регистрации

Python-скрипт для массового переключения формата журнала регистрации. В первую очередь из SQL в файл. python.exe 1c_format_log_chenger.py Analyze, clearing and change journal format for 1C journal system Use -a or --analyze for analyzing Use -c or --clear for delete all log files Use --sql2file for change logfiles format 2 File Use --file2sql for change logfiles format 2 SQL

1 стартмани

12.10.2018    3096    DonAlPatino    8       

История изменений с ОТКАТОМ (на основе типового решения) 4

Отчеты и формы Системный администратор Бухгалтер Внешняя обработка (ert,epf) v8 УТ11 Россия Абонемент ($m) Журнал регистрации

История изменений документов и справочников с откатом на версию и с отбором по измененным реквизитам для УТ.

1 стартмани

11.10.2018    2979    6    strelec13    2       

Отчет "История изменения объектов" на СКД для БП 3.0, УТ 11, КА 2, ERP 2 (версии объектов) с использованием версионирования объектов 9

Отчеты и формы Системный администратор Бухгалтер Внешний отчет (ert,erf) v8 v8::УФ v8::СКД ERP2 БП3.0 УТ11 КА2 Россия Windows Абонемент ($m) Журнал регистрации

Отчет "История изменения объектов" предназначен для отслеживания изменений справочников и документов в базах 1С. Позволяет выводить сводную таблицу изменений одновременно по всем отобранным объектам. Работает в конфигурациях БП 3.0, УТ 11, КА 2.0, ERP 2.

5 стартмани

03.10.2018    5139    49    mrm1212    35       

Обработка журнала регистрации в формате SQLLite 6

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Журнал регистрации

Обработка предназначена для работы с файлом "1Cv8.lgd" журнала регистрации 1С в формате "SQLLite". Выборка и удаление записей.

1 стартмани

14.09.2018    4162    33    VslavKup    6       

Активные сеансы пользователей на СКД по журналу регистрации для анализа пиков активности и количества одновременно запущенных сеансов 1

Отчеты и формы Системный администратор Внешний отчет (ert,erf) v8 v8::СКД 1cv8.cf Абонемент ($m) Журнал регистрации

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

1 стартмани

24.08.2018    3439    17    cmax    0       

Мой велосипед для журнала регистрации. Внешний отчёт 4

Отчеты и формы Системный администратор Внешний отчет (ert,erf) v8 УПП1 Абонемент ($m) Журнал регистрации

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

1 стартмани

31.07.2018    4382    16    alexlx    6       

Мониторинг журнала регистрации при помощи Powershell 28

Статья Системный администратор Программист Архив с данными v8 Windows Абонемент ($m) Сервисные утилиты Журнал регистрации

Работа с журналом регистрации в формате SQLite внешними средствами на примере мониторинга изменений в конфигурации базы данных.

1 стартмани

12.07.2018    7426    3    user768334    7       

R2-D2: журнал регистрации, монитор обменов, аварийные уведомления 14

Инструменты и обработки Системный администратор Программист Архив с данными v8 Россия Абонемент ($m) Сервисные утилиты Журнал регистрации Распределенная БД (УРИБ, УРБД) Администрирование данных 1С

Обслуживание Журналов регистрации нескольких баз 1С. Сбор и обработка сведений о статусах обменов баз 1С, рассылка аварийных уведомлений.

2 стартмани

14.06.2018    7955    16    pbabincev    7       

Отчет "История изменения объектов" на СКД для УПП и КА (версии объектов) с использованием версионирования объектов 14

Отчеты и формы Системный администратор Внешний отчет (ert,erf) v8 v8::СКД КА1 УПП1 Абонемент ($m) Журнал регистрации

Отчет "История изменения объектов" предназначен для отображения изменений объектов (справочники и документы) за указанный период и с учетом отбора по заданным параметрам объектов. Работает в конфигурациях УПП 1.3 и КА 1.1

5 стартмани

22.05.2018    6364    39    mrm1212    11       

Анализ активности пользователей 5

Отчеты и формы Системный администратор Внешний отчет (ert,erf) v8 1cv8.cf Россия Windows Абонемент ($m) Журнал регистрации

Анализ журнала регистрации произвольной конфигурации формата LGD. Платформа 1С:Предприятие 8.3 (8.3.11.2954).

1 стартмани

11.05.2018    5453    18    forusing    0       

Журнал регистрации из формы документа или справочника 7

Инструменты и обработки no Внешняя обработка (ert,epf) v8 Розница УНФ БП3.0 УТ11 КА2 Абонемент ($m) Журнал регистрации

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

2 стартмани

23.04.2018    7687    34    Kutuzov    7       

Протокол действий с документом. Внешняя печатная форма 6

Отчеты и формы Системный администратор Программист Бухгалтер Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Журнал регистрации Печатные формы документов

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

1 стартмани

21.03.2018    5142    14    DEG156    1       

Версии объекта (просмотр версий текущего объекта) 10

Инструменты и обработки Системный администратор Архив с данными v8 КА1 УПП1 Абонемент ($m) Журнал регистрации

Печатная форма, вызывающая отчет подобный встроенному История изменений объектов.

2 стартмани

12.03.2018    7167    3    SITR-utyos    2       

Повышение качества разработок и онлайн контроль ошибок 163

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

Анализ ошибок и сбор ошибок журнала регистраций из десятков и сотен баз в одном месте.

09.03.2018    19128    136    DitriX    47       

История изменений объектов 2

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Украина Абонемент ($m) Журнал регистрации

Обработка "История изменений объектов" представляет собой типовой отчет истории изменений объектов, с функцией подключения в виде внешней печатной формы, и возможностью формирования макета "Параметры авторегистрации".

1 стартмани

07.03.2018    6862    4    sakila    0       

История изменений объектов 3

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8 УПП1 Россия Абонемент ($m) Журнал регистрации

Отчет позволяет получить все изменения по выбранному типу объектов. Может оказаться полезным для администраторов в случае, когда необходимо посмотреть историю изменения различных объектов конкретным пользователем. Протестировано на платформе 8.2.19.130, конфигурации 1С:УПП 1.3.88.2

3 стартмани

02.02.2018    8344    18    s000632    7       

Как нам защитить журнал 4

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Информационная безопасность Журнал регистрации

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

1 стартмани

23.01.2018    8570    5    mkalimulin    51       

Интерфейс для истории данных (платформенное версионирование) в режиме обычных форм 16

Отчеты и формы Системный администратор Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Абонемент ($m) Журнал регистрации

Как известно, в версии платформы 8.3.11 появился встроенный в платформу механизм версионирования "История данных", однако штатных средств работы с ним в платформе при работе в режиме обычных форм не предусмотрено. Данная обработка предоставляет интерфейс для взаимодействия с механизмом истории данных, функционально сходный с интерфейсом, встроенным в платформу при работе в режиме управляемого приложения.

1 стартмани

12.01.2018    12393    46    Prometeus2011    8       

Анализ времени работы пользователей по журналу регистрации 1

Отчеты и формы Пользователь Руководитель проекта Внешний отчет (ert,erf) v8 v8::СКД 1cv8.cf УУ Учет рабочего времени Абонемент ($m) Журнал регистрации

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

1 стартмани

08.12.2017    7294    19    belmaxim    0       

Поиск пользователя, блокирующего объект (документооборот 2.1) 1

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 ДО Россия Windows Абонемент ($m) Журнал регистрации

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

1 стартмани

04.12.2017    6448    9    YuraMatasov    3       

История формирования отчётов. (Используем новые возможности расширений в 8.3.11) 22

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8::УФ v8::СКД УНФ ДО БП3.0 УТ11 ЗУП3.x Абонемент ($m) Журнал регистрации

Подсистема ведёт историю формирования отчётов и позволяет быстро подгрузить используется настройки в отчёт.

1 стартмани

28.11.2017    10416    16    SeiOkami    1       

Сокращение журнала регистрации (Пакетный запуск и в режиме предприятия) 7

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Журнал регистрации

Обработка сокращения журнала регистрации. Работает в режимах пакетного запуска (конфигуратор) и в режиме предприятия. Есть возможность подключения как регламентного задания.

1 стартмани

24.11.2017    6006    14    Zedd4D    6