новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к материалу: Ведение журнала регистрации 1С 8.1 в отдельной базе MSSQL.

    • #1
    • 31.10.2010 10:56
    0
    Ведение журнала регистрации 1С 8.1 в отдельной базе MSSQL.  Подробнее>>
    • #2
    • 26.06.2011 04:44
    0
    Здорово! Очень полезная обработка.
    • #3
    • 25.07.2011 16:06
    0
    Добрый день, попробовал не платформе 8.2 1С и SQL 2008 запустить Ваш скрипт выскочила следующая ошибка. Что посоветуете? Ошибка выполнения скрипта: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[_InsertLogData]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[_InsertLogData] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[_UpdateMetadata]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[_UpdateMetadata] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[_APP]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[_APP] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[_EVENTS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[_EVENTS] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[_MAIN]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[_MAIN] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[_METADATAS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[_METADATAS] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[_TRANSACTIONS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[_TRANSACTIONS] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[_USERS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[_USERS] GO CREATE TABLE [dbo].[_APP] ( [_ID] [smallint] IDENTITY (1, 1) NOT NULL , [_App] [nvarchar] (20) COLLATE Cyrillic_General_CI_AS NOT NULL , [_AppPresentation] [nvarchar] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[_EVENTS] ( [_ID] [smallint] IDENTITY (1, 1) NOT NULL , [_Event] [nvarchar] (50) COLLATE Cyrillic_General_CI_AS NOT NULL , [_EventPresentation] [nvarchar] (50) COLLATE Cyrillic_General_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[_MAIN] ( [_Level] [nvarchar] (20) COLLATE Cyrillic_General_CI_AS NOT NULL , [_Date] [datetime] NOT NULL , [_UserUID] [smallint] NOT NULL , [_Host] [nvarchar] (20) COLLATE Cyrillic_General_CI_AS NOT NULL , [_App] [smallint] NOT NULL , [_Connection] [int] NOT NULL , [_Event] [smallint] NOT NULL , [_Comment] [nvarchar] (500) COLLATE Cyrillic_General_CI_AS NOT NULL , [_TransactionID] [nvarchar] (100) COLLATE Cyrillic_General_CI_AS NOT NULL , [_TransactionStatus] [nvarchar] (100) COLLATE Cyrillic_General_CI_AS NOT NULL , [_ServerName] [nvarchar] (20) COLLATE Cyrillic_General_CI_AS NOT NULL , [_Port] [smallint] NOT NULL , [_SyncPort] [smallint] NOT NULL , [_Metadata] [smallint] NOT NULL , [_MDData] [smallint] NOT NULL , [_Data] [int] NOT NULL , [_DataPresentation] [nvarchar] (150) COLLATE Cyrillic_General_CI_AS NOT NULL , [_ClusterName] [nvarchar] (50) COLLATE Cyrillic_General_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[_METADATAS] ( [_ID] [smallint] IDENTITY (1, 1) NOT NULL , [_MetaData] [nvarchar] (150) COLLATE Cyrillic_General_CI_AS NOT NULL , [_MetaDataPresentation] [nvarchar] (150) COLLATE Cyrillic_General_CI_AS NOT NULL , [_TabNum] [smallint] NULL , [_ValueToStringInternal] [nvarchar] (42) COLLATE Cyrillic_General_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[_TRANSACTIONS] ( [_ID] [int] IDENTITY (1, 1) NOT NULL , [_Descr] [char] (20) COLLATE Cyrillic_General_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[_USERS] ( [_ID] [smallint] IDENTITY (1, 1) NOT NULL , [_UserUID] [nvarchar] (50) COLLATE Cyrillic_General_CI_AS NOT NULL ) ON [PRIMARY] GO ALTER TABLE [dbo].[_MAIN] WITH NOCHECK ADD CONSTRAINT [DF__MAIN__Level] DEFAULT ('') FOR [_Level], CONSTRAINT [DF__MAIN__Date] DEFAULT ('01.01.2000') FOR [_Date], CONSTRAINT [DF__MAIN__UserUID] DEFAULT (0) FOR [_UserUID], CONSTRAINT [DF__MAIN__Host] DEFAULT ('') FOR [_Host], CONSTRAINT [DF__MAIN__App] DEFAULT (0) FOR [_App], CONSTRAINT [DF__MAIN__Connection] DEFAULT (0) FOR [_Connection], CONSTRAINT [DF__MAIN__Event] DEFAULT (0) FOR [_Event], CONSTRAINT [DF__MAIN__Comment] DEFAULT ('') FOR [_Comment], CONSTRAINT [DF__MAIN__TransactionID] DEFAULT ('') FOR [_TransactionID], CONSTRAINT [DF__MAIN__TransactionStatus] DEFAULT ('') FOR [_TransactionStatus], CONSTRAINT [DF__MAIN__ServerName] DEFAULT ('') FOR [_ServerName], CONSTRAINT [DF__MAIN__Port] DEFAULT (0) FOR [_Port], CONSTRAINT [DF__MAIN__SyncPort] DEFAULT (0) FOR [_SyncPort], CONSTRAINT [DF__MAIN__Metadata] DEFAULT (0) FOR [_Metadata], CONSTRAINT [DF__MAIN__MDData] DEFAULT (0) FOR [_MDData], CONSTRAINT [DF__MAIN__Data] DEFAULT (0) FOR [_Data], CONSTRAINT [DF__MAIN__DataPresentation] DEFAULT ('') FOR [_DataPresentation], CONSTRAINT [DF__MAIN__ClusterName] DEFAULT ('') FOR [_ClusterName] GO CREATE INDEX [_MAIN_Index_1] ON [dbo].[_MAIN]([_Date] DESC ) WITH FILLFACTOR = 100 ON [PRIMARY] GO CREATE INDEX [_MAIN_Index_2] ON [dbo].[_MAIN]([_UserUID]) WITH FILLFACTOR = 100 ON [PRIMARY] GO CREATE INDEX [_MAIN_Index_3] ON [dbo].[_MAIN]([_Data], [_MDData]) WITH FILLFACTOR = 100 ON [PRIMARY] GO CREATE INDEX [_METADATAS_Index_1] ON [dbo].[_METADATAS]([_MetaData]) WITH FILLFACTOR = 100 ON [PRIMARY] GO CREATE INDEX [_METADATAS_Index_2] ON [dbo].[_METADATAS]([_TabNum]) WITH FILLFACTOR = 100 ON [PRIMARY] GO CREATE UNIQUE INDEX [_DescrTRN] ON [dbo].[_TRANSACTIONS]([_Descr]) WITH FILLFACTOR = 100 ON [PRIMARY] GO CREATE UNIQUE INDEX [_USERS_Index_1] ON [dbo].[_USERS]([_UserUID]) WITH FILLFACTOR = 100 ON [PRIMARY] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE PROCEDURE _InsertLogData @_Date varchar(20) , @_TransactionStatus Char(1), @_Transaction varchar(50), @_UserUID varchar(36), @_Host varchar(100), @_App varchar(100), @_AppPresentation varchar(200), @_Connection int, @_Event varchar(200), @_EventPresentation varchar(200), @_Level char(1), --Тип события @_Comment nvarchar(500), @_Metadata varchar(200), @_Data nvarchar(42), @_DataPresentation nvarchar(500), @_ServerName varchar(100), @_Port int, @_Syncport int, @_ClusterName varchar(100) AS declare @TransactID int IF (@_TransactionStatus <> 'N') AND (RTRIM(@_Transaction) <> '') BEGIN select @TransactID = _ID from _TRANSACTIONS where _Descr = @_Transaction IF @TransactID = NULL BEGIN insert into _TRANSACTIONS (_Descr) Values (@_Transaction) SET @TransactID = SCOPE_IDENTITY() END END ELSE set @TransactID = 0 declare @UserID int select @UserID=_ID from _USERS where _UserUID = @_UserUID IF @UserID IS NULL BEGIN insert into _USERS (_UserUID) values (@_UserUID) SET @UserID = SCOPE_IDENTITY() END declare @AppID int select @AppID=_ID from _APP where _App = @_App IF @AppID IS NULL BEGIN insert into _APP (_App,_AppPresentation) values (@_App,@_AppPresentation) SET @AppID = SCOPE_IDENTITY() END declare @EventID int select @EventID =_ID from _EVENTS where _Event = @_Event IF @EventID IS NULL BEGIN insert into _EVENTS (_Event,_EventPresentation) values (@_Event,@_EventPresentation) SET @EventID = SCOPE_IDENTITY() END declare @MetadataID int IF RTRIM(@_MetaData) <> '' BEGIN select @MetadataID = _ID from _Metadatas where _MetaData = @_MetaData IF @MetaDataID IS NULL BEGIN insert into _Metadatas (_MetaData,_MetaDataPresentation) values (@_MetaData,'not found: '+@_MetaData) SET @MetadataID = SCOPE_IDENTITY() END END ELSE set @MetadataID = 0 declare @MDID int declare @DataID int declare @TabNum int declare @TabName varchar(100) declare @SQLStr nvarchar(300) IF LEN(@_Data) > 35 BEGIN set @TabNum = CAST(left(@_Data,CHARINDEX(':',@_Data)-1) AS INT) select @MDID = _ID,@TabName = '_'+LEFT(_MetaData,CHARINDEX('.',_MetaData)-1)+CAST(_ID AS varchar(100)) from _Metadatas where _TabNum = @TabNum IF @MDID IS NULL BEGIN insert into _Metadatas (_MetaData,_MetaDataPresentation,_TabNum) values ('tmp.НеизвестныеМетаданные','tmp_' + replace(convert(char,getdate(),106),' ','_'),@TabNum) SET @MDID = SCOPE_IDENTITY() set @TabName = '_tmp'+cast(@MDID as varchar(10)) set @SQLStr = ' CREATE TABLE '+@TabName+' ( _ID int IDENTITY (1, 1) NOT NULL , _IDMD smallint NOT NULL, _Data nvarchar(300) )' exec sp_executesql @SQLStr --select @SQLStr set @SQLStr = ' CREATE UNIQUE INDEX ' +@TabName +'_Index ON ' +@TabName +'(_Data) WITH FILLFACTOR = 100 ON [PRIMARY]' exec sp_executesql @SQLStr --select @SQLStr END set @SQLStr = 'select @DataID = _ID from '+ @TabName +' where _Data = @_Data' exec sp_executesql @SQLStr,N' @DataID int OUTPUT, @_Data varchar(42)',@DataID OUTPUT,@_Data IF @DataID IS NULL BEGIN set @SQLStr = 'insert into '+ @TabName +' (_IDMD,_Data) values (@IDMD,@_Data)' exec sp_executesql @SQLStr,N' @IDMD int , @_Data varchar(42)',@TabNum ,@_Data SET @DataID =IDENT_CURRENT(@TabName) END END ELSE BEGIN set @MDID = 0 set @DataID = 0 END INSERT INTO [dbo].[_MAIN] ( [_Level] , [_Date] , [_UserUID] , [_Host] , [_App] , [_Connection] , [_Event] , [_Comment] , [_TransactionID] , [_TransactionStatus] , [_ServerName] , [_Port] , [_SyncPort] , [_Metadata] , [_MDData] , [_Data] , [_DataPresentation] , [_ClusterName]) VALUES ( @_Level , convert(datetime,@_Date,104) , @UserID , @_Host , @AppID , @_Connection , @EventID , @_Comment , @TransactID , @_TransactionStatus , @_ServerName , @_Port , @_SyncPort , @MetadataID , @MDID , @DataID , @_DataPresentation, @_ClusterName ) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO CREATE PROCEDURE _UpdateMetadata @MetaData varchar(200), @MetaDataPresentation varchar(300) = '', @TabNum int = NULL, @ValueToStringInternal varchar(42) = NULL AS BEGIN IF (select count(1) from _Metadatas where _MetaData = @MetaData) = 0 BEGIN declare @MetaDataID int declare @SQLStr nvarchar(300) declare @TabName varchar(300) insert into _Metadatas (_MetaData,_MetaDataPresentation,_TabNum,_ValueToStringInternal) values (@MetaData,@MetaDataPresentation,@TabNum,@ValueToStringInternal) SET @MetaDataID = SCOPE_IDENTITY() IF @TabNum IS NOT NULL BEGIN set @TabName = '_' +LEFT(@MetaData,CHARINDEX('.',@MetaData)-1)+CAST(@MetaDataID AS varchar(100)) set @SQLStr = ' CREATE TABLE ' +@TabName +' ( _ID int IDENTITY (1, 1) NOT NULL , _IDMD smallint NOT NULL, _Data nvarchar(300) COLLATE Cyrillic_General_CI_AS NOT NULL ) ON [PRIMARY]' exec sp_executesql @SQLStr set @SQLStr = ' CREATE UNIQUE INDEX ' +@TabName +'_Index ON ' +@TabName +'(_Data) WITH FILLFACTOR = 100 ON [PRIMARY]' exec sp_executesql @SQLStr END END END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO {Форма.Форма.Форма(40)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Incorrect syntax near 'GO'.
    • #4
    • 16.08.2012 11:32
    0
    та же ошибка со скриптом log1cinit.sql:Неправильный синтаксис около конструкции "GO"
    Вопрос:
    Почему у автора проходит все нормально?
    Может подключаться надо не через OLE DB?
    • #5
    • 16.08.2012 17:22
    0
    Довольно старая тема - все работает на 2000 mssql. На других версиях не проверялось. Если кто исправит ошибку - закидывайте новый скрипт. Прицеплю
    • #6
    • 07.09.2015 13:53
    0
    xelub
    та же ошибка со скриптом log1cinit.sql:Неправильный синтаксис около конструкции "GO"

    Указал вначале скрипта
    USE [Имя_базы]
    GO

    и выполнил на сервере для создания структуры базы данных. А потом просто запустил выгрузку ЖР без указания скрипта. Теперь тестить надо.
    • #7
    • 07.09.2015 14:14
    0
    Базу "Имя_базы" - руками создал. Все заняло 5 сек. Пришлось переименовать в отчете первоначальной выгрузки несколько функций - получение даты, списка пользователей и тд, согласно конфигурации бд из которой выгружался ЖР.
    • #8
    • 07.09.2015 14:43
    0
    Ошибка, однако. УПП 1.3.66.3
    {Форма.Форма.Форма(180)}: Ошибка при вызове метода контекста (ПредставлениеПриложения)
    ТекстЗапроса = " exec _InsertLogData
    по причине:
    Несоответствие типов (параметр номер '1')
    • #9
    • 07.09.2015 15:33
    0
    В процедуре ВыгрузкаЖурналаРегистрации() при парсинге полей xml-файла возвращается таблица значений с пустыми полями, но с определенным количеством строк.
    Автор, помогите разобраться.
    • #10
    • 08.09.2015 00:53
    0
    rassylka99
    Автор, помогите разобраться

    Автора (точнее соавтора) данной разработки http://1clancer.ru/catalog/1 уже нет в живых, к сожалению.
    А сама разработка достаточно древняя и хорошо работала только на mssql 2000.
    • #11
    • 08.09.2015 09:53
    0
    Очень жаль. Значит решим задачу заново.
    • #12
    • 12.03.2016 14:53
    0
    >решим задачу заново

    зачем же заново? есть отладчик и в нем видны все изъяны, которые легко исправляются.
    я уже разобрался, установив это на MSSQL 2008 Express + 1C-8.3
    • #13
    • 15.07.2016 15:11
    0
    Увы. Не работает... Код обработки ОбъектМД = НайтиОбъектМД(ТекОбъектМД); нет процедуры/функции НайтиОбъектМД автор статьи забыл дописать такую процедуру/функцию
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться