Журнал регистрации на sqlite #755537


#0 by cw014
День добрый, коллеги! Есть вопрос по сабжу. Данный журнал вытащить получилось, впринципе все устраивает, но есть одно !НО!. В нем есть поле "data", в нем хранится информация, но эта информация в "кракозябрах" (псевдуникод от 1С). Так вот вопрос. Можно ли в запросе к sqlite указать какую-нибудь конструкцию, что бы преобразовать это поле в читаемое? (Именно в запросе, кодом 1С не предлогать) И если такого нельзя сделать - есть ли возможность внедрить пользовательскую функцию в sqlite? (через php это сделать можно, но PHP обработчика на сервере нет и не будет) Заранее спасибо!
#1 by cw014
АП
#2 by SiAl-chel
1. "не предлАгать" 2. Что за журнал регистрации? От базы 1С? Как он попал в sqlite? Может стоит в механизм импорта журнала регистрации что-то подправить?
#3 by Живой Ископаемый
2 Последние релизы 1С ведут ЖР в СКЛлайт, уважаемый Рип ван Винкль
#4 by cw014
1) Простите за мой французский, исправлюсь 2) +
#5 by cw014
Всё обсудили? Вопросов посторонних если больше нету, хотелось бы услышать ваши предложения
#6 by Aleksey
залить в скуль и оттуда читать
#7 by Гёдза
Обязательно преобразовывать прям в скл? в постобработке никак нельзя?
#8 by Aleksey
или
#9 by Гёдза
Но 1с не рекомендует на высоконагруженных системах такой формат
#10 by Aleksey
можно Обращаю внимание на параметр в строке подключения "BigInt=1", только так, поле хранящее дату будет возвращать корректный результат. Кстати, дата хранится как целое число. Например, если дата равна 635453673444260, то чтобы перевести в привычный тип Дата, нужно сделать так: ОбычнаяДата = '00010101000000' + 635453673444260/10000; //03.09.2014 18:55:44 (с)
#11 by cw014
Читал, ответа на вопрос не получил Как вариант, но неохота временную таблицу создавать и туда пост-обработкой пихать Суть такова - 1 раз в день журнал регистрации выкидывается в MSSQL уже преобразованный (корректные строки, даты вместо чисел). После этого журнал регистрации очищается. Задача такая: совместить данные MSSQL и SQLITE (через внешние источники данных), то есть поля должны быть идентичными. P.S. Не по теме немного. Можно прямо в запросе сделать: SELECT       datetime(date/10000-62135578800,'unixepoch')     END as date FROM   EventLog
#12 by cw014
+ Таким образом получается дата UTC, ее еще нужно в МестноеВремя(???) конвертировать
#13 by cw014
UP
#14 by Aleksey
что UP? Строка соединения какая? ПараметрыСоединения.СтрокаСоединения = "DRIVER=SQLite3 ODBC Driver;Database=" + ФайлЖурналаРегистрации + ";BigInt=1;"; BigInt = 1 прописывал? Что он возвращает в этом случае?
#15 by cw014
Друг сердешный... При чем тут BigInt и СТРОКИ???
#16 by cw014
BigInt влияет на даты. С датами я решил вопрос. Надо решить вопрос со СТРОКАМИ UNICODE в UNICODE (как 1С любит делать)
#17 by cw014
То есть сконверировать в удобочитаемый вид "Авто"
#19 by cw014
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): parser stack overflow
#20 by Живой Ископаемый
Ты применил шаблон проектирования "декоратор"!  :)
#21 by cw014
Ыыыыыы
#22 by cw014
Вверх!
#23 by Гёдза
ну явно твой драйвер не умеет утф
#24 by cw014
Спасибо, кэп. Не в драйвере дело а в кривом хранении 1Ской своих данных
#25 by oleg_km
Странно, у меня sqlitebrowser все открылось
#26 by Гёдза
Ты уверен?
#27 by cw014
Отлично, что в поле data у тебя Не совсем, однако механизмов у ODBC я не нашел. Если подскажешь - респект тебе
#28 by Живой Ископаемый
А как ты вообще читаешь ЖР? У меня через ОДБС при помощи Внешних Источников Данных так и не вышло.... было сказано что файл или не база данных вовсе или заэкнрипчен
#29 by oleg_km
Ну вот: 1179:b872ca30957d86c64807bf83bf442104 - это похоже ссылка Или вот: "ServerSysLog" - то я сам писал А, вот что-то записалось непонятное: "СерверныеСервисы._ЗапуститьМонитор" При этом в комментарии все нормально: {Обработка.окПроцессУдаленный.МодульОбъекта}: Вызов службы SrvAGP. System.ArgumentException: Process with an Id of 7660 is not running.    at System.Diagnostics.Process.GetProcessById(Int32 processId)    at SrvAGP.RequestCmdGetExec.ExecCmd(ResponseCmd oResp) Ну т.е. в comment все пишется нормально, а в data что-то с уникодом. Может два раза нужно преобразовать?
#30 by cw014
Я про это и говорил. Во все поля пишется нормально, кроме поля data
#31 by cw014
Копируй из папки куда нибудь файлы lgd, lgd-shm и lgd-wal. 1С открывает их на RW - ODBC уже не может открыть их, так как они заняты 1Синой
#32 by Живой Ископаемый
хм... Ну я так и сделал, что ж я по-твоему совсем того... драйвер брал отсюда:
#33 by oleg_km
sqlitebrowser открыл файл прямо на ходу, без копирования. Может там нужно флажок монопольный доступ где-нибудь снять
#34 by cw014
Какой драйвер брал?
#35 by cw014
Может быть, я не могу открыть через "ReadOnly". Возможно сам драйвер не поддерживает
#36 by Живой Ископаемый
2 Все-таки в итоге получилось, коггда завел через Источники ОДБЦ файловый ДСН, указал Драфвер для 3 СКЛЛайт, потом из полученного файла ДСН скопировал текст, и вставил его как строку подключения для Внешнего Источника Данных, разделив строки ";". В конфигураторе увидел все таблицы, кинул таблицу EventLog  в качестве источника ДинамическогоСписка на УФ, и в режиме предприятия не увидел ни строчки. :( Потерял пока интерес, и закрыл все... Может позже.
#37 by cw014
Радует, что у тебя что-то получилось. А теперь может кто-нибудь подсказать по моему вопросу?
#38 by Живой Ископаемый
#39 by Живой Ископаемый
Могу сказать строку подключения, если интересно
#40 by Провинциальный 1сник
А почему бы не хранить журнал регистрации в самой базе, используя СУБД базы? Что мешает, непонятно.. Возможно некоторые события должны логироваться и без связи с базой - пусть, но их на несколько порядков меньше, чем событий, связанных базой.
#41 by Aleksey
из-за блокировки ИМХО
#42 by Провинциальный 1сник
Ну так база не целиком блокируется. А при добавлении строки события блокировка таблицы журнала регистрации не обязательна. Думаю, это (хранение ЖР вне базы) - тяжкое наследство файлового формата базы, которое по какой-то непонятной причины тянут и в клиент-сервер.
#43 by cw014
Молодец. Наверное невнимательно читаешь форум. В основном поля нормальные, кроме поля "data"
#44 by cw014
Сабж все еще актуален
#45 by cw014
:(
#46 by cw014
Апачки
#47 by Strogg
где почитать, чтоб начальству переслать? А то неделю долбился - восстанавливал ЖР после краша...
#48 by Живой Ископаемый
да, действительно... Ну тогда вот корявый способ: Вот способ, про который чувак думает что он не корявый: :) Успехов
#49 by Живой Ископаемый
Как сделать не терзая винт - не знаю.
#50 by Живой Ископаемый
А как прямо в запросе. чтобы например к этому полю мы могли например применить оператор "ПОДОБНО" -  так и ваще
#51 by cw014
Ладно, спасибо всем за помощь и понимание. Иными способами попробую
#52 by cw014
Мой коллега сказал, что это похоже на "вырывание гланд через ж**у бор-машиной с приминением автогена"
#53 by Провинциальный 1сник
С такой же проблемой можно столкнуться, когда надо текстовый файл, хранящийся в двоичных данных, интерпретировать как текст в 1с. Ну не умеет объект типа Текст загружаться из двоичных данных, только из файла. Вот и приходится выгружать ДД в файл, а потом загружать в Текст. Другого варианта нет(
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям