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



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #270 - 18. Июля 2008 :: 08:50
Печать  
Chieftain писал(а) 18. Июля 2008 :: 08:02:
Я попробовал воспроизвести падение в тесте - не получилось, хотя вероятность одновременного выполнения была ооочень высокой, по моему мнению.

а от версии платформы поведение не может зависеть?
  

1&&2&&3
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #271 - 18. Июля 2008 :: 08:52
Печать  
Chieftain :

Попробуй такой тест :
kiruha писал(а) 30. Октября 2007 :: 14:49:
Подсунул Join почти реальный запрос - вывести движения по товарам с документами
и в соседней колонке показать текущий остаток
Код
Выбрать все
SELECT
РезервыТоваров.Товар,
РезервыТоваров.iddoc,
РезервыТоваров.РезервНаСкладе,
ОстаткиТоваров.ОстатокНаСкладе

FROM
(SELECT
РегРезервы.Товар as Товар,
РегРезервы.iddoc as iddoc,
РегРезервы.РезервТовара as РезервНаСкладе

FROM
     Регистр_РезервыТоваров as РегРезервы
WHERE
   РегРезервы.Date between '20060101' and '20070101'
) as РезервыТоваров

LEFT JOIN
(SELECT
РегОстатки.Товар as Товар,
Sum(РегОстатки.ОстатокТовара) as ОстатокНаСкладе

FROM
     РегистрИтоги_ОстаткиТоваров as РегОстатки
WHERE
    РегОстатки.PERIOD = '20070801'

GROUP BY  РегОстатки.Товар) as ОстаткиТоваров

on ОстаткиТоваров.Товар=РезервыТоваров.Товар 



Время выполнения 55812 мс.
Локально.
Вообщем реализация join все таки не супер.

Хотя выполнение запросов в temp таблицы скорее всего выход (только много лишней ручной писанины,
особенно для динамических запросов)


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

Будут ошибки?
P.S. Время ожидания захвата выставить в 10 сек
  
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: 1sqlite
Ответ #272 - 18. Июля 2008 :: 10:09
Печать  
kiruha писал(а) 18. Июля 2008 :: 08:52:
Будут ошибки?
P.S. Время ожидания захвата выставить в 10 сек

Попробовал, несколько раз и правда удалось заставить 1С свалиться ((
Но есть один момент: если использовать "vk_sleep_1C", то вылетов не наблюдается

ЗЫ.. интересно, а много дбфников ею пользуются?
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #273 - 18. Июля 2008 :: 10:16
Печать  
Я тут кое-что поймал. Подскажите как побороть зверя Печаль

Вот код запроса
Код
Выбрать все
SELECT
	COALESCE(
		ДокСобытиеВстреча.iddoc
		,ДокСобытиеЗвонок.iddoc
		,ДокСобытиеПисьмо.iddoc
		,ДокСобытиеЭлектронноеПисьмо.iddoc
		,ДокСобытие.iddoc) AS ПоставщикДанных_Документ
	,CASE WHEN ЖурналДок.Closed = 1 THEN 2 ELSE
	CASE WHEN ЖурналДок.IsMark = "*" THEN 3 ELSE 1 END END AS ПоставщикДанных_Пикт
	,ЖурналДок.IdDocDef [ПоставщикДанных_ВнутрВидДок :ИмяВида]
	,ЖурналДок.DocNo AS НомерДок
	,ЖурналДок.Date [ДатаДок :Дата]
	,ЖурналДок.Time [ВремяДок :Время]
	,ЖурналДок.IdDocDef [ВидДок :ВидДокументаПредставление]
	,COALESCE(
		ДокСобытиеВстреча.КонтактнаяИнформация
		,ДокСобытиеЗвонок.КонтактнаяИнформация
		,ДокСобытиеПисьмо.КонтактнаяИнформация
		,ДокСобытиеЭлектронноеПисьмо.КонтактнаяИнформация
		,ДокСобытие.КонтактнаяИнформация
	) [КонтактнаяИнформация :Строка.0]
	,COALESCE(
		ДокСобытиеВстреча.Направление
		,ДокСобытиеЗвонок.Направление
		,ДокСобытиеПисьмо.Направление
		,ДокСобытиеЭлектронноеПисьмо.Направление
		,ДокСобытие.Направление
	) [Направление :Перечисление.НаправленияСобытий]
	,COALESCE(
		ДокСобытиеВстреча.Результат
		,ДокСобытиеЗвонок.Результат
		,ДокСобытиеПисьмо.Результат
		,ДокСобытиеЭлектронноеПисьмо.Результат
		,ДокСобытие.Результат
	) [Результат :Строка.999]
	,COALESCE(
		ДокСобытиеВстреча.Содержание
		,ДокСобытиеЗвонок.Содержание
		,ДокСобытиеПисьмо.Содержание
		,ДокСобытиеЭлектронноеПисьмо.Содержание
		,ДокСобытие.Содержание
	) [Содержание :Строка.0]
	,COALESCE(
		ДокСобытиеВстреча.Тема
		,ДокСобытиеЗвонок.Тема
		,ДокСобытиеПисьмо.Тема
		,ДокСобытиеЭлектронноеПисьмо.Тема
		,ДокСобытие.Тема
	) [Тема :Строка.100]
	,COALESCE(
		ДокСобытиеВстреча.Контрагент
		,ДокСобытиеЗвонок.Контрагент
		,ДокСобытиеПисьмо.Контрагент
		,ДокСобытиеЭлектронноеПисьмо.Контрагент
		,ДокСобытие.Контрагент
	) [Контрагент :Справочник.Контрагенты]
	,COALESCE(
		ДокСобытиеВстреча.КонтактноеЛицо
		,ДокСобытиеЗвонок.КонтактноеЛицо
		,ДокСобытиеПисьмо.КонтактноеЛицо
		,ДокСобытиеЭлектронноеПисьмо.КонтактноеЛицо
		,ДокСобытие.КонтактноеЛицо
	) [КонтактноеЛицо :Справочник.КонтактныеЛица]
	,COALESCE(
		ДокСобытиеВстреча.Пользователь
		,ДокСобытиеЗвонок.Пользователь
		,ДокСобытиеПисьмо.Пользователь
		,ДокСобытиеЭлектронноеПисьмо.Пользователь
		,ДокСобытие.Пользователь
	) [Пользователь :Справочник.Пользователи]
	,COALESCE(
		ДокСобытиеВстреча.ПоследнееИзменение
		,ДокСобытиеЗвонок.ПоследнееИзменение
		,ДокСобытиеПисьмо.ПоследнееИзменение
		,ДокСобытиеЭлектронноеПисьмо.ПоследнееИзменение
		,ДокСобытие.ПоследнееИзменение
	) [ПоследнееИзменение :Строка.150]
FROM
	Журнал ЖурналДок

LEFT JOIN
	Документ_СобытиеВстреча ДокСобытиеВстреча
ON
	ДокСобытиеВстреча.iddoc = ЖурналДок.iddoc
LEFT JOIN
	Документ_СобытиеЗвонок ДокСобытиеЗвонок
ON
	ДокСобытиеЗвонок.iddoc = ЖурналДок.iddoc
LEFT JOIN
	Документ_СобытиеПисьмо ДокСобытиеПисьмо
ON
	ДокСобытиеПисьмо.iddoc = ЖурналДок.iddoc
LEFT JOIN
	Документ_СобытиеЭлектронноеПисьмо ДокСобытиеЭлектронноеПисьмо
ON
	ДокСобытиеЭлектронноеПисьмо.iddoc = ЖурналДок.iddoc
LEFT JOIN
	Документ_Событие ДокСобытие
ON
	ДокСобытие.iddoc = ЖурналДок.iddoc
WHERE
(
	(ЖурналДок.iddocdef = :ВидДокумента.СобытиеВстреча)
OR
	(ЖурналДок.iddocdef = :ВидДокумента.СобытиеЗвонок)
OR
	(ЖурналДок.iddocdef = :ВидДокумента.СобытиеПисьмо)
OR
	(ЖурналДок.iddocdef = :ВидДокумента.СобытиеЭлектронноеПисьмо)
OR
	(ЖурналДок.iddocdef = :ВидДокумента.Событие)
)
AND
	ЖурналДок.Date BETWEEN @ДатаНач AND @ДатаКон

AND
	Контрагент = @Контрагент 



а вот ошибка получаемая
Код
Выбрать все
Данные.Документы::СгенерироватьПрямойЗапрос() : ambiguous column name: Контрагент 



Ему что наименование поля "Контрагент" слишком большим кажется или то что я запихнул в него так много реквизитов с разных таблиц?  Смущённый
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #274 - 18. Июля 2008 :: 10:24
Печать  
А чего не через Union?
И проще и быстрее.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: 1sqlite
Ответ #275 - 18. Июля 2008 :: 10:26
Печать  
Цитата:
Ему что наименование поля "Контрагент" слишком большим кажется или то что я запихнул в него так много реквизитов с разных таблиц?

Это он тебе говорит что не знает из какой таблицы контрагентов брать, видимо у тебя в нескольких таблицах есть поле контрагент
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: 1sqlite
Ответ #276 - 18. Июля 2008 :: 10:26
Печать  
Ему видимо не нравится
Код
Выбрать все
Контрагент = @Контрагент  

  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #277 - 18. Июля 2008 :: 10:33
Печать  
kiruha писал(а) 18. Июля 2008 :: 10:24:
А чего не через Union?
И проще и быстрее.

Переделаю Подмигивание сегодня

Nick писал(а) 18. Июля 2008 :: 10:26:
Цитата:
Ему что наименование поля "Контрагент" слишком большим кажется или то что я запихнул в него так много реквизитов с разных таблиц?

Это он тебе говорит что не знает из какой таблицы контрагентов брать, видимо у тебя в нескольких таблицах есть поле контрагент

Так и есть, это общий реквизит без признака отбора, он ведь в каждой таблице тогда существует вот я его и Coalesce сцепляю...

Chieftain писал(а) 18. Июля 2008 :: 10:26:
Ему видимо не нравится
Код
Выбрать все
Контрагент = @Контрагент  



Видимо прийдется при объединении, таблицы уже сразу через WHERE прогонять...

Думай Санька, думай  Подмигивание
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: 1sqlite
Ответ #278 - 18. Июля 2008 :: 10:41
Печать  
vandalsvq писал(а) 18. Июля 2008 :: 10:33:
Так и есть, это общий реквизит без признака отбора, он ведь в каждой таблице тогда существует вот я его и Coalesce сцепляю... 

А отбор поставить и брать из журнала?
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #279 - 18. Июля 2008 :: 10:59
Печать  
Chieftain писал(а) 18. Июля 2008 :: 10:41:
vandalsvq писал(а) 18. Июля 2008 :: 10:33:
Так и есть, это общий реквизит без признака отбора, он ведь в каждой таблице тогда существует вот я его и Coalesce сцепляю...  

А отбор поставить и брать из журнала?

+1 Так будет быстрее всего.
С Union не надо.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #280 - 18. Июля 2008 :: 11:03
Печать  
kiruha писал(а) 18. Июля 2008 :: 10:59:
Chieftain писал(а) 18. Июля 2008 :: 10:41:
vandalsvq писал(а) 18. Июля 2008 :: 10:33:
Так и есть, это общий реквизит без признака отбора, он ведь в каждой таблице тогда существует вот я его и Coalesce сцепляю...  

А отбор поставить и брать из журнала?

+1 Так будет быстрее всего.


Так и запишем "Отбор можно делать только по реквизитам с признаком "Сортировка = 1"" Улыбка
В общем то так и было, а потом я убрал признак "Сортировка" и построитель (КОП мой) построил мне его таким образом в итоге я получил то что получил.
Вариант решения или никаких отборов без сортировки, либо WHERE и тра-та-та...
Спасибо всем  Подмигивание
  

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


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite
Ответ #281 - 25. Июля 2008 :: 13:45
Печать  
Колеги, поделитесь опытом, кто-нибудь внедрял плотно эту компоненту для работы с DBF-базой?
Пробовал делать кое-какие не критичные отчетики, результат положительный.

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

Спрашиваю потому, что читал про проблемы при одновременном доступе в многопользовательской среде, но насколько я понял, проблемы не смертельные, тем более я собираюсь использовать SQLite исключительно для извлечяения данных (во вкяком случае пока).
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #282 - 25. Июля 2008 :: 14:28
Печать  
CaBaT писал(а) 25. Июля 2008 :: 13:45:
Колеги, поделитесь опытом, кто-нибудь внедрял плотно эту компоненту для работы с DBF-базой?
Пробовал делать кое-какие не критичные отчетики, результат положительный.

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

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


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

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


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite
Ответ #283 - 25. Июля 2008 :: 15:29
Печать  
гут, с понедельника и начем! Улыбка
такие перспективы открываются...
  
Наверх
 
IP записан
 
Elm
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 1
Зарегистрирован: 25. Июля 2008
Re: 1sqlite
Ответ #284 - 25. Июля 2008 :: 19:35
Печать  
Решил попоробовать эту компоненту. И вылезла такая странная штука.

Например, есть регистр остатков "ОстаткиТоваров" с измерениями:
ШтрихКод Число(13,0), Док (Документ), Склад, Товар (Справочники);
ресурсом Остаток Число(15).

Соответственно:      
базаДанных.Открыть(":memory:"); запрос_ = базаДанных.НовыйЗапрос();
запрос_.ВыполнитьЗапрос("create virtual table Ост using dbeng(РегистрИтоги.ОстаткиТоваров)");

Делаю запрос через компоненту, например, "SELECT * FROM Ост".
Выгружаю его в таблицу значений "тз".

Получаю тз.ШтрихКод = 2112860527,
при этом в индексе тз.idx_PERIOD_ШтрихКод_Док_Склад_Товар =
"20080201 3000000033135  7F    5S        1      1PK            1".

Т.е. 2112860527 вместо 3000000033135. При непосредственном указании в запросе "Ост.ШтрихКод [ШтрихКод :Число.13.0]" ничего не меняется.

Обычным запросом 1С в поле ШтрихКод получаю 3000000033135. Версия 1sqlite.dll - 1018f.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 17 18 [19] 20 21 ... 79
ОтправитьПечать