Переключение на Главную Страницу Страницы: 1 ... 17 18 [19] 20  ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 60044 )
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #270 - 05. Декабря 2008 :: 05:28
Печать  
sashas09 писал(а) 04. Декабря 2008 :: 09:56:
а в запросе есть ; после имени таблицы или мне кажется

Человек ответил на мисте, здесь почему-то не отписал.
У него просто между выгрузкой тз в базу и вытаскиванием тз из базы затесалось
База.Открыть(":memory:")
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: 1sqlite
Ответ #271 - 08. Декабря 2008 :: 11:20
Печать  
Доброе время суток!
Может искал плохо, но вот нормальных примеров по работе с регистрами не нашел.
В общем пытаюсь выдернуть остатки из регистра:
SELECT
Товар as [Номенклатура $Справочник.Номенклатура],
Количество
FROM
РегистрСклад

Затем выдергиваю итоги средствами запроса 1С
Товар = Регистр.Склад.Товар;
Количество = Регистр.Склад.Количество;

Функция Кон = КонОст(Количество);

Группировка Товар;

В результате получаю различные данные. В результате, полученном с SQLite присутствуют итоги по номенклатуре, которой в наличии нет и которая отсутствует в результате 1-совского запроса.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #272 - 08. Декабря 2008 :: 11:24
Печать  
DrunkProgrammer писал(а) 08. Декабря 2008 :: 11:20:
Доброе время суток!
Может искал плохо, но вот нормальных примеров по работе с регистрами не нашел.
В общем пытаюсь выдернуть остатки из регистра:
SELECT
Товар as [Номенклатура $Справочник.Номенклатура],
Количество
FROM
РегистрСклад

Затем выдергиваю итоги средствами запроса 1С
Товар = Регистр.Склад.Товар;
Количество = Регистр.Склад.Количество;

Функция Кон = КонОст(Количество);

Группировка Товар;

В результате получаю различные данные. В результате, полученном с SQLite присутствуют итоги по номенклатуре, которой в наличии нет и которая отсутствует в результате 1-совского запроса.

Как говорится, учи мат. часть. Или хотя бы статью почитай: http://www.1cpp.ru/forum/YaBB.pl?num=1148874473 (обрати внимание на то, как получают остатки в ДБФ базах)
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: 1sqlite
Ответ #273 - 27. Декабря 2008 :: 19:07
Печать  
Пытаюсь сделать запрос с использованием 1sqlite:
http://www.1cpp.ru/forum/YaBB.pl?num=1230067163/14#14
Там какая-то проблема с индексами. не могли бы вы посмотреть тестовую конфу (внутрь положить компоненту, запустить отчет тест->запрос.
Либо я запрос неправильно сделал, либо что-то с 1sqlite.
  

test_001.7z ( 13 KB | Загрузки )
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #274 - 15. Января 2009 :: 19:14
Печать  
Заметил что если со справочниками в 1sqlite в плане попадания в индекс можно поиграть с отборами реквизитов (конечно что попало лучше не ставить, но 1-2 реквизита на некоторых справочниках не критично имхо) и тогда попасть в индекс довольно легко, но что касается перебора таблиц документов, это невозможно долго. как вариант сначала к journ потом коннектить к ней док чтобы попасть в индекс... ну не знаю, много раз испытывал и заметил что джойнить sqlite умеет довольно плохо и ввиду этого выигрыша нет... или мне так кажется..ю
А какой вы знаете способ добавить в таблицу документов индекс скажем по нужной мне переменной?
Создавать ВТ, в ней индекс, туда пихать всю таблицу и потом разбираться в плане условий?

Кстати еще один тут случай был у меня:
Справочник... подчиненный другому, ставлю WHERE PARENTEXT = :ТекЭлемент, попадаю с помощью оптимизатора в Parent-овских индекс, стоило добавить еще одно условие вроде AND Дата = :ТекДата OR () ... и сразу же вылетел из индекса, потом подумал, в проверки подставил вместо даты сразу через MEtaDataWork значение, вместо других значений еще строковые и обратно попал в Parent-овский индекс.  Улыбка Во как было.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
DO
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 1
Местоположение: Смоленск
Зарегистрирован: 23. Июня 2009
Пол: Мужской
Re: 1sqlite
Ответ #275 - 23. Июня 2009 :: 18:05
Печать  
подскажите, плиз, что не так делаю:
Код
Выбрать все
"create table Движ as select distinct
	|Журнал.docno docno, Журнал.date, Реализ.iddoc [Докум :Документ.Реализация],
	|Реализ.Контрагент [Контрагент :Справочник.Контрагенты], РеализТЧ.Номенклатура [Номенклатура :Справочник.Номенклатура],
	|SUM(РеализТЧ.Количество) [Количество :Число.14.3], SUM(РеализТЧ.Сумма) [Сумма :Число.17.2],
	|СвваКонтр.ТипКонтрагента as [ТипКонтрагента :Справочник.ТипыКонтрагентов], СвваНоменкл.Категория as [Категория :Справочник.КатегорииНоменклатуры]
	|from Реализ, РеализТЧ, Журнал
	|left join СвваКонтр on Реализ.Контрагент = СвваКонтр.Контрагент
	|left join СвваНоменкл on РеализТЧ.Номенклатура = СвваНоменкл.Номенклатура
	|where (date between '"+ДатаН+"' and '"+ДатаК+"') and (Журнал.iddoc = Реализ.iddoc)
	|and (Реализ.iddoc = РеализТЧ.iddoc) and (Журнал.ismark NOT LIKE '*') and (Журнал.closed = 5)
	|" 


вот таким запросом создаю виртуальную таблицу с именем Движ, соответственно. При запросе всего ее содержимого в обычную ТЗ все проходит гладко. Поля у ТЗ соответствуют именам колонок, заданным при создании. Если нужно выполнить доп. фильтрацию или агрегирование по таблице Движ - ругается на отсутствие колонок. Например, запрос:
Код
Выбрать все
"select sum(Количество) as КоличествоИ, sum(Сумма) as СуммаИ from Движ where Движ.ТипКонтрагента = @ТекТипКонтрагента group by 1" 

сообщает, что no such column Количество.
Где сидит ошибка?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #276 - 23. Июня 2009 :: 18:39
Печать  
Создается таблица с именами колонок в точности как ты написал в запросе по её созданию. Т.е. если ты пишешь:
Код
Выбрать все
Реализ.iddoc [Докум :Документ.Реализация] 


то создаётся колонка с именем "[Докум :Документ.Реализация]" , а не "Докум" как ты скорее всего ожидал.
В общем, зачем делать типизацию при создании таблицы? Делай её во время получения данных.
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: 1sqlite
Ответ #277 - 24. Июня 2009 :: 03:57
Печать  
Код
Выбрать все
"create table Движ
|as
|select distinct
|  Журнал.docno docno
|, Журнал.date
|, Реализ.iddoc Докум
|, Реализ.Контрагент Контрагент
|, РеализТЧ.Номенклатура Номенклатура
|, SUM(РеализТЧ.Количество) Количество
|, SUM(РеализТЧ.Сумма) Сумма
|, СвваКонтр.ТипКонтрагента as ТипКонтрагента
|, СвваНоменкл.Категория as Категория
|from
|  Журнал
|  Inner join Реализ on Журнал.iddoc = Реализ.iddoc
|  left join РеализТЧ on РеализТЧ.iddoc = Реализ.iddoc
|  left join СвваКонтр on СвваКонтр.Контрагент = Реализ.Контрагент
|  left join СвваНоменкл on СвваНоменкл.Номенклатура = РеализТЧ.Номенклатура
|where
|  (Журнал.date between '"+ДатаН+"' and '"+ДатаК+"')
|   and (Журнал.ismark = '')
|   and (Журнал.closed = 5)
|"
 

  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite
Ответ #278 - 24. Июля 2009 :: 07:38
Печать  
Народ, уверен, что кто то наверняка использует компоненту для работы с файлами БД sqlite, есть вопрос - никто не испытывал проблем с быстродействием при вставке данных в базу?
У меня в конфе сделана система логирования на основе нескольких баз sqlite, для разных подсистем свой лог.
При запуске конфигурации туда пишется различная системная инфа, дык вот заметил, что долго запускается, посмотрел под отладчиком и вроде как выходит, что много времени уходит на запись данных в логи...
структура фалов баз логов простая: event_date DATE ,event_time CHAR, event_text CHAR

1sqlite версия 1.0.1.9
  
Наверх
 
IP записан
 
nvg
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 72
Местоположение: Киев
Зарегистрирован: 14. Сентября 2006
Пол: Мужской
Re: 1sqlite
Ответ #279 - 24. Июля 2009 :: 08:44
Печать  
Замечал тоже подобное.
У меня запись большими порциями, потом только чтение.
Так вот само открытие БД притормаживает. Но файл БД у меня немаленький...
  
Наверх
ICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite
Ответ #280 - 24. Июля 2009 :: 09:12
Печать  
Наверное попробую реализовать что то типа кеширования - писать в таблицу в памяти и периодически скидывать в файл - может быстрее получится.
Хотя конечно странно - у меня файлики плевые, килов по 500, а при старте системы порядка 2 х секунд уходит на то что бы в лог несколько сообщений записать...
Наверно все-таки не там ищу или руки кривые.. Улыбка
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: 1sqlite
Ответ #281 - 24. Июля 2009 :: 09:12
Печать  
Индексы используете?
Можно ощутимо уменьшить время загрузки и производительность выполнения некоторых операций, 
через проведение чистки и дефрагментации БД в SQLite.
Выполняя Команду
Код
Выбрать все
 VACUUM  

  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite
Ответ #282 - 24. Июля 2009 :: 09:25
Печать  
не, индексов нет
да и размер файлов уж больно маленький, по мне так летать должно, я понимаю если бы было хотя бы 100Мb
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #283 - 24. Июля 2009 :: 09:49
Печать  
Перед вставкой открывай транзакцию. После вставки - фиксируй. http://sqlite.org/lang_transaction.html
У меня так в разы скорость увеличивается.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite
Ответ #284 - 24. Июля 2009 :: 09:54
Печать  
А если при этом за раз вставляется только одна строка?
У меня такая схема: идет запуск конфигурации, по ходу инициализации подсистем вставляются сообщения вида "ВК такая то загружена", "подсистема такая-то инициализирована", т.е. у меня нет массированной вставки данных а есть некоторое кол-во вставок одиночных строк в таблицу.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 17 18 [19] 20 
ОтправитьПечать