Переключение на Главную Страницу Страницы: 1 ... 45 46 [47] 48 49 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 478462 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite
Ответ #690 - 29. Декабря 2011 :: 09:02
Печать  
Я уже получил историю константы. Неудобно, но работает:
Код
Выбрать все
ТекстЗапроса = "
	|SELECT " + Значение + Представление + ", date
	|FROM __1S_Const
	|WHERE objid = :ПустойИД AND id = :id AND date <= :ДатаСвертки
	|ORDER BY date DESC LIMIT 1"; 

Неудобство заключается в том, что идентификатор константы приходится получать через MetaDataWork, а не напрямую...

А вот с бухитогами пока ничего не нашел...

vandalsvq писал(а) 29. Декабря 2011 :: 06:45:
Dmitry The Wing, а чем класс "ПрямойЗапрос" в соседней ветке не устроил? (ах да, изменение константы у меня нет, есть только история реквизитов справочников Улыбка)
Думаю тем, что привык работать напрямую. Ведь можно и так все получить штатными средствами, 1sqlite же сей процесс несколько ускоряет ... когда знаешь, из каких таблиц и как чего добыть ...
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #691 - 29. Декабря 2011 :: 09:44
Печать  
С бухитогами не так все "просто". Посмотри как реализованы ВТ у меня или у berezdetsky (собственно я нагло у него слизал почти все Улыбка).

Погоди, а как ты снимаешь остатки по регистрам? Там ведь тоже надо использовать то остатки, то остатки + обороты.
  

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


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1sqlite
Ответ #692 - 30. Декабря 2011 :: 01:15
Печать  
vandalsvq писал(а) 29. Декабря 2011 :: 09:44:
С бухитогами не так все "просто". Посмотри как реализованы ВТ у меня или у berezdetsky (собственно я нагло у него слизал почти все Улыбка).

Погоди, а как ты снимаешь остатки по регистрам? Там ведь тоже надо использовать то остатки, то остатки + обороты.
С остатками то все просто. Есть простенькая функция, которая анализирует метаданные и автоматом формирует запрос. Если дата не совпадает с началом периода, то имеем запрос вида
Код
Выбрать все
SELECT
	Зап.Продукция [Продукция :Справочник.Номенклатура]
	, Зап.Подразделение [Подразделение :Справочник.Подразделения]
	, Зап.Заказ [Заказ :Документ]
	, Зап.Владелец [Владелец :Справочник.Контрагенты]
	, Зап.Количество [Количество :Число.14.3]
FROM
	(SELECT
		Рег.Продукция
		, Рег.Подразделение
		, Рег.Заказ
		, Рег.Владелец
		, SUM(Рег.Количество) [Количество]
	FROM
		(SELECT
			Итоги.Продукция
			, Итоги.Подразделение
			, Итоги.Заказ
			, Итоги.Владелец
			, Итоги.Количество
		FROM
			[РегистрИтоги.ВыпускПродукции] AS Итоги
		WHERE
			Итоги.period = '20101201'
	   UNION ALL
		SELECT
			Движения.Продукция
			, Движения.Подразделение
			, Движения.Заказ
			, Движения.Владелец
			, Движения.Количество * (1 - Движения.debkred * 2) [Количество]
		FROM
			[Регистр.ВыпускПродукции] AS Движения
	   INNER JOIN [Журнал] Жур ON Жур.iddoc = Движения.iddoc AND Жур.date BETWEEN '20110101' AND '20110105'
	) Рег
	GROUP BY Рег.Продукция, Рег.Подразделение, Рег.Заказ, Рег.Владелец
) Зап
WHERE
	(Зап.Количество <> 0) 

При совпадении же даты (как раз случай свертки) запрос сильно упрощяется, и (что очень радует) заметно ускоряется
Код
Выбрать все
SELECT
	Зап.Продукция [Продукция :Справочник.Номенклатура]
	, Зап.Подразделение [Подразделение :Справочник.Подразделения]
	, Зап.Заказ [Заказ :Документ]
	, Зап.Владелец [Владелец :Справочник.Контрагенты]
	, Зап.Количество [Количество :Число.14.3]
FROM
	(SELECT
		Рег.Продукция
		, Рег.Подразделение
		, Рег.Заказ
		, Рег.Владелец
		, SUM(Рег.Количество) [Количество]
	FROM
		(SELECT
			Итоги.Продукция
			, Итоги.Подразделение
			, Итоги.Заказ
			, Итоги.Владелец
			, Итоги.Количество
		FROM
			[РегистрИтоги.ВыпускПродукции] AS Итоги
		WHERE
			Итоги.period = '20110101'
	) Рег
	GROUP BY Рег.Продукция, Рег.Подразделение, Рег.Заказ, Рег.Владелец
) Зап
WHERE
	(Зап.Количество <> 0) 

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

Осталось только разобраться с бухитогами.
Скачал класс, попытался вникнуть в эти жутко-запутанные функции и  Плачущий ... выложи, пожалуйста, готовый запрос к бухитогам, а то я там вообще нифига не понял Печаль
Мне нужны итоги по всем счетам в таком виде, который позволил бы их ввести ручными операциями.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #693 - 01. Февраля 2012 :: 06:29
Печать  
Несколько новостей.
Проект переехал сюда.
Выпущена версия 1.0.2.5 - sqlite обновлен до 3.7.10
Документация по добавленным в 1.0.2.4 фичам - готовится.
  
Наверх
 
IP записан
 
ziflex
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Местоположение: Владивосток
Зарегистрирован: 05. Мая 2011
Пол: Мужской
Re: 1sqlite
Ответ #694 - 01. Февраля 2012 :: 07:09
Печать  
На радостях поставил а 1С начала падать при запуске Печаль
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #695 - 01. Февраля 2012 :: 07:36
Печать  
ziflex писал(а) 01. Февраля 2012 :: 07:09:
На радостях поставил а 1С начала падать при запуске Печаль

Подробнее можно?
В момент загрузки длл или на каком-то запросе?
  
Наверх
 
IP записан
 
ziflex
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Местоположение: Владивосток
Зарегистрирован: 05. Мая 2011
Пол: Мужской
Re: 1sqlite
Ответ #696 - 01. Февраля 2012 :: 09:18
Печать  
orefkov писал(а) 01. Февраля 2012 :: 07:36:
ziflex писал(а) 01. Февраля 2012 :: 07:09:
На радостях поставил а 1С начала падать при запуске Печаль

Подробнее можно?
В момент загрузки длл или на каком-то запросе?


в момент загрузки.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite
Ответ #697 - 01. Февраля 2012 :: 11:40
Печать  
Последовательность загрузок ВК какая у тебя ?
Какие еще есть вк и каких они версий ?
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #698 - 01. Февраля 2012 :: 12:01
Печать  
ziflex писал(а) 01. Февраля 2012 :: 09:18:
orefkov писал(а) 01. Февраля 2012 :: 07:36:
ziflex писал(а) 01. Февраля 2012 :: 07:09:
На радостях поставил а 1С начала падать при запуске Печаль

Подробнее можно?
В момент загрузки длл или на каком-то запросе?


в момент загрузки.

Хм, у меня не падает. Кто-то еще проверял, у когонить падает?
  
Наверх
 
IP записан
 
ziflex
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Местоположение: Владивосток
Зарегистрирован: 05. Мая 2011
Пол: Мужской
Re: 1sqlite
Ответ #699 - 01. Февраля 2012 :: 22:14
Печать  
Eprst писал(а) 01. Февраля 2012 :: 11:40:
Последовательность загрузок ВК какая у тебя ?
Какие еще есть вк и каких они версий ?


1) 1CPP (3.2.3.19)
2) 1sqlite
3) FormEx (2.0.5.101)
4) TurboMD (1.0.1.1)

Код
Выбрать все
Если гл1sqlite = 1 Тогда
		глКаталогВнешнихИБ 	= КаталогИБ()+"ExtDb\";
		глКаталогSQLiteИБ 	= глКаталогВнешнихИБ+"DB_SQLite\";
		SQLLite = СоздатьОбъект("SQLiteBase");

		Если ФС.СуществуетФайл(глКаталогВнешнихИБ)=0 Тогда
			ФС.СоздатьКаталог(глКаталогВнешнихИБ);
		КонецЕсли;

		Если ФС.СуществуетФайл(глКаталогSQLiteИБ)=0 Тогда
			ФС.СоздатьКаталог(глКаталогSQLiteИБ);
		КонецЕсли;

		ИмяБД = глКаталогSQLiteИБ + "BaseBlock.db3";
		глМД = СоздатьОбъект("MetaDataWork");
		SQLLite.Открыть(ИмяБД);
		запросSQLLite = SQLLite.НовыйЗапрос();
		запросSQLLite.ВыполнитьЗапрос("PRAGMA journal_mode=WAL"); //это прописать, ежели база в терминале
		//запросSQLLite.ВыполнитьЗапрос("PRAGMA journal_mode=OFF");
		ТекстЗапроса ="
		|Create  table if not EXISTS
		|БазаБлокировок (
		|   ИДОбъекта varchar(13) primary key not null,
		|   Пользователь TEXT
		|)";
		фл = 0;
		Пока фл=0 Цикл
			Попытка
				запросSQLLite.ВыполнитьЗапрос(ТекстЗапроса);
				фл=1;
			Исключение
			КонецПопытки;
		КонецЦикла;
		Если МонопольныйРежим()=1 Тогда
			запросSQLLite.ВыполнитьЗапрос("delete from БазаБлокировок");
		КонецЕсли;
	КонецЕсли;

 




Извиняюсь, дезинформировал.  Смущённый
Забыл, что у меня после загрузки выполняется выше указанный запрос. 1С таки падает при попытки открыть базу (SQLLite.Открыть(ИмяБД);).
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #700 - 02. Февраля 2012 :: 04:18
Печать  
Можешь на orefkov gmail.com выслать свой файлик базы данных ?
Дальше меня не уйдет.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite
Ответ #701 - 02. Февраля 2012 :: 06:19
Печать  
Цитата:
TurboMD (1.0.1.1)


вот Из-за этого может быть, ибо турбо мд должна быть
1.0.0.1

именно этот релиз нормально работает с остальными ВК
валяется тут в первом посте
http://www.1cpp.ru/forum/YaBB.pl?num=1160630298
  
Наверх
 
IP записан
 
ziflex
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Местоположение: Владивосток
Зарегистрирован: 05. Мая 2011
Пол: Мужской
Re: 1sqlite
Ответ #702 - 02. Февраля 2012 :: 06:59
Печать  
Убрал вообще загрузку TurboMD.
Результат тот же - падает.
При чем падает во время выполнения запросов к таблицам .db3.
К таблицам 1С все ок.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite
Ответ #703 - 02. Февраля 2012 :: 07:09
Печать  
чорт, это же мой код у тебя в примере..
Новую вк еще не тестил, ща проверю, падает ли с ней, если запрос к базе sqllite или нет
Улыбка
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #704 - 02. Февраля 2012 :: 07:16
Печать  
Да, падает...
Ща разберусь.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 45 46 [47] 48 49 ... 79
ОтправитьПечать