Как узнать кто ФИЗИЧЕСКИ заносил заказ на закупку?

Автор Сообщение
Гость

Добавлено: 18.11.2004 13:16 Заголовок сообщения: Как узнать кто ФИЗИЧЕСКИ заносил заказ на закупку?
Добрый день,
собственно вопрос в теме, просто поясню, в базе появилось некое кол-во заказов, по которым невозможно установить, кто их создал,
просмотр в таблице PC03 ничего не дал.
Есть решение такой проблемы?
Заранее спасибо.
aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 18.11.2004 16:19 Заголовок сообщения: Со 100% достоверностью?
Думаю, что со 100% достоверностью вряд ли Sad
Можно посмотреть логи, кто вообще запускал программу PC0020, если этот журнал включен и, если известно, когда примерно эти заказы появились. Кстати, речь, скорее всего идет про Scala 5.1?
Гость

Добавлено: 19.11.2004 08:37 Заголовок сообщения:
Добрый день!
Именно, Scala 5.1
Алексей, можешь чуть подробнее по поводу логов?
aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 23.11.2004 15:40 Заголовок сообщения: По поводу логов

Vgt писал(а):
Добрый день!
Именно, Scala 5.1
Алексей, можешь чуть подробнее по поводу логов?


Я извиняюсь за задержку с ответом. Логи должны быть включены в параметрах компании. Там есть 3 вопроса, на которые можно ответить «Да» или «Нет».
Системный журнал — это и есть лог всех обращений пользователей к определенной dll’ке
Журнал учета контроля данных — это создание/изменение/удаление карточек покупателей/поставщиков/запасов и т.п.
Журнал документов — кто, когда, какие документы напечатал (в том числе на экран). Имеются в виду именно документы (счета-фактуры, подтверждения заказов, накладные и т.п., т.е. то, что описывается при помощи DDF файлов — файлов описания документа)

Удалён
Гость

Добавлено: 06.12.2004 08:39 Заголовок сообщения:
У нас Scala 2.1 и в точности та же проблема возникла, и тоже с заказами на закупку, вдруг откуда не возьмись появились, логина закупщика в PC03 нет, логи смотрели — пусто (в таблицах BusinessEventHistory и BusinessEventArchive)… прямо теряемся в догадках
aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 06.12.2004 09:28 Заголовок сообщения: Операции с логами в 2.2
Про 2.1 не знаю, негде посмотреть, а вот для анализа таблицы истории логов 2.2 некоторое время назад написал такой запрос:

Код:
SELECT
— только первые 5000 записей выборки (лог огромный более 3 млн. записей)
TOP 5000
IDLogArchive, CompanyCode, [Year], UserName, Date_Time, Source, ComputerName, EventID,
—CAST(SUBSTRING(Data, 1, 4000) AS NVARCHAR(4000)) AS BinaryInfo,
(select dbo.ParseBinaryInfo(CAST(SUBSTRING(Data, 1, 4000) AS NVARCHAR(4000)),0)) as SortAudEventType,
(select dbo.ParseBinaryInfo(CAST(SUBSTRING(Data, 1, 4000) AS NVARCHAR(4000)),1)) as SortAudFileName,
(select dbo.ParseBinaryInfo(CAST(SUBSTRING(Data, 1, 4000) AS NVARCHAR(4000)),2)) as SortAudRecordKey,
(select cast(dbo.ParseBinaryInfo(CAST(SUBSTRING(Data, 1, 4000) AS NVARCHAR(4000)),3) as int)) as SortAudFieldName,
(select dbo.ParseBinaryInfo(CAST(SUBSTRING(Data, 1, 4000) AS NVARCHAR(4000)),4)) as SortAudOldInfo,
(select dbo.ParseBinaryInfo(CAST(SUBSTRING(Data, 1, 4000) AS NVARCHAR(4000)),5)) as SortAudNewInfo
FROM  ScaLogArchive
— Это именно лог изменений картотек покупателей, поставщиков, запасов, сотрудников и т.п.
WHERE Type = 4 AND Category = 3
— указываем код компании, год, и модуль, для которого хотим отследить изменения
AND CompanyCode = ’01’ AND [Year] = ‘2004’ and [Source] like ‘SC%’
— смотрим только то, что сделали простые "смертные"
and UserName <>’scala’
— смотрим только по тем запасам, коды которых начинаются на 41
and (select dbo.ParseBinaryInfo(CAST(SUBSTRING(Data, 1, 4000) AS NVARCHAR(4000)),2)) like N’41%’


Используемая при этом функция ParseBinaryInfo выглядит так:

Код:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE FUNCTION dbo.ParseBinaryInfo (@BinaryInfoString nvarchar(4000), @POINTER INT)
————————————————
— Разбор строки по полям
— За основу взята функция Виктора Кельманова
————————————————
RETURNS nvarchar(50)
AS
BEGIN
DECLARE @POSITION INT,
   @LENGTH INT,
   @COUNTER INT,
   @ParsedString NVARCHAR(4000)
SET @LENGTH=LEN(@BinaryInfoString)
SET @POSITION=0
SET @COUNTER=0
set @ParsedString=@BinaryInfoString
WHILE @COUNTER<@POINTER
BEGIN
SET @POSITION = CHARINDEX(’|’,@BinaryInfoString,@POSITION+1)
IF @POSITION=0
BREAK
SET @ParsedString=RIGHT(@BinaryInfoString,@LENGTH-@POSITION)
SET @COUNTER=@COUNTER+1
END
   SET @POSITION= CHARINDEX(’|’,@ParsedString,0)
   IF @POSITION<>0
      SET @ParsedString=LEFT(@ParsedString,@POSITION-1)

   RETURN @ParsedString
END

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


И то и другое должно быть применено для системной базы данных (обычно ScaSystemDB). Понятное дело, писалось на скорую руку, не претендую на красивость кода, но может быть кому-нибудь и сгодится в качестве отправной точки для собственного красивого запроса. Wink

Удалён
Гость

Добавлено: 06.12.2004 10:02 Заголовок сообщения:
О, спасибо!
обязательно воспользуюсь, я и сама собиралась подобную функцию писать, да так и не собралась Smile
DenZ
Почетный форумщик

Зарегистрирован: 02.08.2007
Сообщения: 30
Откуда: BSH

Добавлено: 14.03.2008 12:05 Заголовок сообщения: Re: Операции с логами в 2.2
Добрый день.
Может кто подскажет…
У меня таблица ScaLogArchive пуста, события есть только в таблице ScaLogMessage, но они там долго не хранятся, перезаписываются. А хотелось бы иметь все же полный лог событий. Как включить?
Журналы в настройках компаний включены. iScala 2.2 3147
Спасибо.
aav
Администратор
Администратор

Зарегистрирован: 14.09.2004
Сообщения: 1081
Откуда: Санкт-Петербург

Добавлено: 14.03.2008 13:15 Заголовок сообщения: Re: Операции с логами в 2.2

DenZ писал(а):
У меня таблица ScaLogArchive пуста, события есть только в таблице ScaLogMessage, но они там долго не хранятся, перезаписываются. А хотелось бы иметь все же полный лог событий. Как включить?

В административной консоли щёлкните правой кнопкой мыши на "События" и выберите "Properties". В открывшемся окошке найдите секцию "Архивировать настройки" (думаю, что на самом деле это стоило перевести наоборот: "Настройки архивации" Very Happy). В поле "Старые события" выберите "Архивировать". Следует иметь в виду, что лог будет сильно разрастаться, так что неплохо было бы оценить возможности Вашего SQL сервера.

DenZ
Почетный форумщик

Зарегистрирован: 02.08.2007
Сообщения: 30
Откуда: BSH

Добавлено: 14.03.2008 13:29 Заголовок сообщения:
Спасибо!!!