Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) 1sqlite и не родные таблицы 1С (число прочтений - 3812 )
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
1sqlite и не родные таблицы 1С
23. Декабря 2010 :: 08:43
Печать  
Народ подскажите как через 1sqlite
связать не родную таблицу и 1sjourn.
В SQL версии это я знаю как навоять, а вот тута чет торможу.
Просю ногами не пинать, бо только начал изучать 1sqlite ситуация заставила.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite и не родные таблицы 1С
Ответ #1 - 23. Декабря 2010 :: 08:55
Печать  
Я делал через Attach
http://www.sqlite.org/lang_attach.html
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: 1sqlite и не родные таблицы 1С
Ответ #2 - 23. Декабря 2010 :: 09:14
Печать  
А маленький пример можно пошагово?
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite и не родные таблицы 1С
Ответ #3 - 23. Декабря 2010 :: 09:25
Печать  
1. подключаешь файл sqlite
2. пишешь запрос с обращением r полям таблиц из файла

вот кусок кода подключения файла sqlite
Код
Выбрать все
Функция ПодключитьБД(_ФайлБД,_ИмяБД) Экспорт
	Если _БД.Открыта() = 1 Тогда
		Если ФС.СуществуетФайл(_ФайлБД) = 1 Тогда
			_Запрос = _БД.НовыйЗапрос();
			_Текст = "attach database '" + СокрЛП(_ФайлБД) + "' as " + СокрЛП(_ИмяБД);
			_Результат = _Запрос.ВыполнитьЗапрос(_Текст);
             КонецЕсли;
	КонецЕсли;
	Возврат 0;
КонецФункции 



Запрос получается типа такого:

Код
Выбрать все
select
  Поле_из_1С,
  Поле_из_Таблицы_ФайлаSQLite
from
  Таблица_1С
left join
  [<ИмяПодКоторымПодключилФайлSQLite>].ТаблицаИзФайлаSQLite 



В select-ах квадратные скобки необязательны, а вот в update и insert надо.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: 1sqlite и не родные таблицы 1С
Ответ #4 - 23. Декабря 2010 :: 09:35
Печать  
От блин.
Не выходит.
вот последовательность:
ИмяФайла=КаталогИБ()+"docsidd.dbf";
ИмяИндекса=СтрЗаменить(ИмяФайла,"dbf","cdx");
Если ФС.СуществуетФайл(ИмяФайла)=0 Тогда
     БД=СоздатьОбъект("XBase");
     БД.ДобавитьПоле("iddoc","S",9,0);
     БД.ДобавитьПоле("stat","N",1,0);
     БД.ДобавитьИндекс("idx","iddoc",1,0,);
     БД.СоздатьФайл(ИмяФайла,ИмяИндекса);
     БД.ЗакрытьФайл();
КонецЕсли;
база = СоздатьОбъект("SQLiteBase");
база.Открыть(":memory:");
запрос = база.НовыйЗапрос();
стат=запрос.ВыполнитьЗапрос("PRAGMA journal_mode = OFF");
стат=запрос.ВыполнитьЗапрос("ATTACH DATABASE '"+ИмяФайла+"' as Доки");
вот здесь сыпит ошибку:
стат=запрос.ВыполнитьЗапрос("ATTACH DATABASE '"+ИмяФайла+"' as Доки");
{D:\DATA\EXTFORMS\ДВФ.ERT(38)}: file is encrypted or is not a database
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite и не родные таблицы 1С
Ответ #5 - 23. Декабря 2010 :: 09:39
Печать  
Э, так ты хочешь dbf-ную таблицу присоединить?
Нет, так не получится.
Как вариант, если не очень большая - всосать в память во временную и потом соединить с 1С-кой таблицей.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: 1sqlite и не родные таблицы 1С
Ответ #6 - 23. Декабря 2010 :: 09:44
Печать  
CaBaT писал(а) 23. Декабря 2010 :: 09:39:
Э, так ты хочешь dbf-ную таблицу присоединить?
Нет, так не получится.
Как вариант, если не очень большая - всосать в память во временную и потом соединить с 1С-кой таблицей.


Ну да конечно.
у меня вот как в SQL это сделано:
           |select
           |      d.iddoc [Заявка $Документ],
           |      j.iddocdef Заявка_вид
           |from docsidd d (nolock)
           |inner join _1sjourn j (nolock) on j.iddoc=d.iddoc
           |WHERE
           |d.stat=1
           |and
           |j.closed &1=1
           |and
           |d.iddoc IN (SELECT right(val,9) FROM #Докум)
типа такого мне надо чтоб на dbf-ной базе работало.
Это вообще реально?
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite и не родные таблицы 1С
Ответ #7 - 23. Декабря 2010 :: 09:56
Печать  
Так может dbf-ную таблицу перегнать в формат SQLite?
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: 1sqlite и не родные таблицы 1С
Ответ #8 - 23. Декабря 2010 :: 09:59
Печать  
CaBaT писал(а) 23. Декабря 2010 :: 09:56:
Так может dbf-ную таблицу перегнать в формат SQLite?

Так может подскажешь как?
Смысл вообще следующий.
База распределенная.
У документов есть принак ЕстьДокументы.
Все бы хорошо, но вот только иногда это признак меняют в закрытых периодах.
Т.е. у проведенных документов.
А так как УРБД по барабану что делали с документом, то на постой у меня слетает последовательнось в закрытый период.
Я конечно сделал что эти данные не регистрировались, но при перепроведении в ЦБ даные расползаються на перефирии и естественно накрывають то что там есть.
По сему я решил организовать это во внешней таблице, что 1С не затирала данные.
С SQL базой это без проблем, а вот с DBF проблема.
Можно было бы использовать OLEDB та оно в монопольном небудет работать.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite и не родные таблицы 1С
Ответ #9 - 23. Декабря 2010 :: 10:12
Печать  
OLEDB в монопольном режиме работает и очень давно..
А ежели скульлайт пользуешь, то создай саму базу в нём и нужную табличку в ней.
Потом пиши в неё, читай что хочешь..
ЗЫ: вот только одновременно писать в неё народ не сможет, только по-очереди..
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite и не родные таблицы 1С
Ответ #10 - 23. Декабря 2010 :: 10:12
Печать  
Ну так может не мучить мозг, и сделать по аналогии с SQL, только данные хранить во внешнем файле SQLite?

Только имей ввиду - SQLite не очень подходит для множественного доступа..
Хотя у меня сейчас крутиться одна задача с одновременным доступом наверное до 20 человек, но табличка ну очень маленькая - 600кил на сегодня, плюс так как по сети не очень работало, я ее кеширую в память (пока маленькая)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite и не родные таблицы 1С
Ответ #11 - 23. Декабря 2010 :: 10:15
Печать  
Вот, в качестве примера - база в скульлайт для записи-чтения заблокированных объектов базы:
Поделка
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: 1sqlite и не родные таблицы 1С
Ответ #12 - 23. Декабря 2010 :: 10:33
Печать  
CaBaT писал(а) 23. Декабря 2010 :: 10:12:
Ну так может не мучить мозг, и сделать по аналогии с SQL, только данные хранить во внешнем файле SQLite?

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

Так она у меня вообще будет мизер.
2 поля строка 9 и число 1
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite и не родные таблицы 1С
Ответ #13 - 23. Декабря 2010 :: 10:35
Печать  
Eprst писал(а) 23. Декабря 2010 :: 10:15:
Вот, в качестве примера - база в скульлайт для записи-чтения заблокированных объектов базы:
Поделка

Кстати, надо бы прикрутить, есть такая проблема Улыбка
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite и не родные таблицы 1С
Ответ #14 - 23. Декабря 2010 :: 10:36
Печать  
varelchik писал(а) 23. Декабря 2010 :: 10:33:
Так она у меня вообще будет мизер.
2 поля строка 9 и число 1

Ну дык тогда вперед на мины! Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать