Переключение на Главную Страницу Страницы: 1 ... 60 61 [62] 63 64 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 459137 )
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #915 - 03. Декабря 2017 :: 13:51
Печать  
Grey77 писал(а) 03. Декабря 2017 :: 11:53:
WHERE Цены.ТипЦен = :Цена1 OR Цены.ТипЦен = :Цена2
AND Цены.PARENTEXT IN (SELECT val FROM tmpНоменклатура)


Может все таки так должно быть?

WHERE (Цены.ТипЦен = :Цена1 OR Цены.ТипЦен = :Цена2)
AND Цены.PARENTEXT IN (SELECT val FROM tmpНоменклатура)

В остальном вроде все в порядке.

  
Наверх
www  
IP записан
 
Grey77
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 23
Зарегистрирован: 22. Мая 2012
Re: 1sqlite
Ответ #916 - 03. Декабря 2017 :: 14:51
Печать  
Djelf писал(а) 03. Декабря 2017 :: 13:51:
Grey77 писал(а) 03. Декабря 2017 :: 11:53:
WHERE Цены.ТипЦен = :Цена1 OR Цены.ТипЦен = :Цена2
AND Цены.PARENTEXT IN (SELECT val FROM tmpНоменклатура)


Может все таки так должно быть?

WHERE (Цены.ТипЦен = :Цена1 OR Цены.ТипЦен = :Цена2)
AND Цены.PARENTEXT IN (SELECT val FROM tmpНоменклатура)

В остальном вроде все в порядке.


Очень прошу. Если не сложно в виде внешней обработки. Плачущий
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #917 - 03. Декабря 2017 :: 16:18
Печать  
Grey77 писал(а) 03. Декабря 2017 :: 14:51:
Очень прошу. Если не сложно в виде внешней обработки. Плачущий


Что не работает то?

P.S. Ну совсем все обленились Смех
тут обработка https://cloud.mail.ru/public/M94W/xuUqxQ7ke
  
Наверх
www  
IP записан
 
Grey77
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 23
Зарегистрирован: 22. Мая 2012
Re: 1sqlite
Ответ #918 - 04. Декабря 2017 :: 04:03
Печать  
Что не работает то?

P.S. Ну совсем все обленились Смех
тут обработка https://cloud.mail.ru/public/M94W/xuUqxQ7ke [/quote]

Спасибо за обработку. Все работает. Хотелось, чтобы позиция товара была одна, а цены были каждая в своей колонке.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #919 - 05. Марта 2018 :: 16:17
Печать  
Надоело вылетать при закрытии обработки с ТабличнымиПолями на SQLiteDataProvider. Стал копаться. Оказалось что база закрывается до того как будут уничтожены все Поставщики и подготовленные запросы.

На уровне 1sqlite не решил, возможно найду как обойти...

Но, пока копался, обновил движок sqlite до 3.22.0 и слегка изменил 1sqlite.

Изменение в 1sqlite такое:

1. База.Закрыть() теперь не процедура, а функция и возвращает 1 в случае успешного закрытия или 0 в том случае если не закрыты ПоставщикиДанных или подготовленные запросы.

2. Зачем это? А затем что База.Открыта() вернет 0 т.к. База.Закрыть() не проверяет закрылась ли она. Поведение База.Открыта() не менял.
Возможно стоит изменить поведение База.Открыта() , но из-за совместности с оригинальной версией оно не менялось.
И когда база закрылась, sqlite очищает wal и shm файлы, а без этого они распухают, и это не есть хорошо.

3. База.Закрыть(ВариантЗакрытия) принимает параметр ВариантЗакрытия 1 (по умолчанию, как и раньше) или 2 и закрывает базу в соответствии с https://www.sqlite.org/c3ref/close.html
Параметр 2 скорее для отладки - с ним падает на ТабличномПоле стабильнее, но возможно пригодится в каких-то случаях.

ВК, как всегда, тут: https://cloud.mail.ru/public/9znr/ZJ6ULE9aR

А для удаления Поставщиков в ПриЗакрытии(), чтобы не падало, работает такой код:
Код
Выбрать все
Процедура УдалитьПостащиков()

	Таблица		= СоздатьОбъект("ИндексированнаяТаблица");
	Поставщик	= СоздатьОбъект("ПоставщикДанныхИТ");
	Поставщик.ИндексированнаяТаблица = Таблица;

	Информатор=СоздатьОбъект("Информатор");
	Свойства=Информатор.ПолучитьТаблицуСвойств(Контекст);
	Свойства.ВыбратьСтроки();
	Пока Свойства.ПолучитьСтроку() = 1 Цикл
		Переменная="";
		Сервис.ПолучитьПеременнуюКонтекста(Контекст,Свойства.NameEng,Переменная);
		Если ТипЗначенияСтр(Переменная)="ТабличноеПоле" Тогда
			Переменная.ПоставщикДанных = Поставщик;
			Переменная.ОбновитьСтроки();
			Переменная = "";
		КонецЕсли;
	КонецЦикла;

КонецПроцедуры
 

« Последняя редакция: 06. Марта 2018 :: 14:37 - Djelf »  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #920 - 06. Марта 2018 :: 11:19
Печать  
Спасибо! Попробуем...
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #921 - 06. Марта 2018 :: 11:23
Печать  
Явные преимущества в новом движке выявил? По сравнению с движком в предыдущем релизе 1sqlite.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #922 - 06. Марта 2018 :: 12:05
Печать  
alyuev писал(а) 06. Марта 2018 :: 11:23:
Явные преимущества в новом движке выявил? По сравнению с движком в предыдущем релизе 1sqlite.


Скорость не сильно изменилась http://sqlite.org/cpu.html#microopt
Вот 3.18 что-то не то с планом запросов к 1С делал, а этот нормальный.
В любом случае какие то баги в запросах все чинят и чинят...
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #923 - 06. Марта 2018 :: 12:10
Печать  
Я увидел еще одну возможность, о которой не знал:

https://www.sqlite.org/csv.html

Но там нужна библиотека, она есть в исходниках: https://www.sqlite.org/src/artifact?ci=trunk&filename=ext/misc/csv.c

Ты бы не мог её скомпилить и выложить?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #924 - 06. Марта 2018 :: 13:14
Печать  
alyuev писал(а) 06. Марта 2018 :: 12:10:
Я увидел еще одну возможность, о которой не знал:

https://www.sqlite.org/csv.html

Но там нужна библиотека, она есть в исходниках: https://www.sqlite.org/src/artifact?ci=trunk&filename=ext/misc/csv.c

Ты бы не мог её скомпилить и выложить?


Отсюда возьми дополнения http://www.ch-werner.de/sqliteodbc/
После установки dll`ки расширений можно забрать из "c:\Program Files (x86)\SQLite ODBC Driver"
Там не только csv, там даже sqlite+tcc - можно свои функции рисовать.
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #925 - 06. Марта 2018 :: 15:42
Печать  
Спасибо. А родную не получится собрать?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #926 - 06. Марта 2018 :: 16:15
Печать  
alyuev писал(а) 06. Марта 2018 :: 15:42:
Спасибо. А родную не получится собрать?

А это без разницы. Плагины могут быть собраны как угодно, другим компилятором и т.п. Оно все "родное" если подключается.
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #927 - 07. Марта 2018 :: 11:36
Печать  
Оно-то да. Просто тот модуль типа официальный и новый, а то, что ты дал - CSVTable - это один из самых первых модулей загрузки из CSV.

И документации - 0! Пришлось изучать исходники....

Код (PHP)
Выбрать все
Функция CSV2SQLite(ПутьКфайлу, ИмяКолонкиИзПервойСтроки=0, ДопОпции=4, Разделитель=";", СимволКавычек="'", В_ИТЗ=0)

	//Примечания: - Имена колонок не должны содержать символы: $

	//см. исходники: https://github.com/softace/sqliteodbc/blob/master/csvtable.c
	// *
	// * * CSVTable(argv[1],<argv[2]>,<argv[3]>,<argv[4]>,<argv[5]>,<argv[6]>,...,<argv[X]>) * * *
	// *
	// * Argument vector contains:
	// *
	// * argv[0] - name of table to create (required)
	//
	// * argv[1] - filename (required)
	// * argv[2] - number, when non-zero use first line as column names,
	// *           when negative use given type names (optional)
	// * argv[3] - number, when non-zero, translate data (optional):
	// *
	// * 		Translation flags:
	// *
	// * 		1  - convert ISO-8859-1 to UTF-8
	// * 		2  - perform backslash substitution
	// * 		4  - convert and collapse white-space in column names to underscore
	// * 		10 - convert \q to single quote, in addition to backslash substitution
	// *
	// * argv[4] - column separator characters (optional)
	// * argv[5] - string quoting characters (optional)
	// * argv[6] - column/type name for first column (optional)
	// *   ..
	// * argv[X] - column/type name for last column (optional)
	// *

	Перем База,Запр,тЗапр,ТЗ;
	База = СоздатьОбъект("SQLiteBase");
	База.Открыть(":memory:");
	База.РазрешитьЗагрузкуРасширений(1);
	запр = База.НовыйЗапрос();

	тЗапр = "SELECT load_extension('sqlite3_mod_csvtable.dll')";
	запр.ВыполнитьЗапрос(тЗапр);
	тЗапр = "CREATE VIRTUAL TABLE tableName USING CSVTable('"+ПутьКфайлу+"', "+ИмяКолонкиИзПервойСтроки+", "+ДопОпции+", '"+Разделитель+"','"+СимволКавычек+СимволКавычек+"')";
	запр.ВыполнитьЗапрос(тЗапр);
	тЗапр = "SELECT * FROM tableName";
	Если В_ИТЗ=1 Тогда
		ТЗ=СоздатьОбъект("ИндексированнаяТаблица");
		запр.ВыполнитьЗапрос(тЗапр,ТЗ);
	Иначе
		ТЗ=запр.ВыполнитьЗапрос(тЗапр);
	КонецЕсли;
	База = 0;
	Возврат ТЗ;
КонецФункции 



sqlite3_mod_csvtable.dll надо положить в BIN
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #928 - 07. Марта 2018 :: 13:07
Печать  
alyuev писал(а) 07. Марта 2018 :: 11:36:
Оно-то да. Просто тот модуль типа официальный и новый, а то, что ты дал - CSVTable - это один из самых первых модулей загрузки из CSV.

И документации - 0! Пришлось изучать исходники....

А да... Там 12г, а сейчас версия от 16го. Собрал, лежит там же.
Увы вся документация на расширения в исходниках к ним.
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #929 - 07. Марта 2018 :: 15:04
Печать  
Спасибо! Пошел разбираться...
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 60 61 [62] 63 64 ... 79
ОтправитьПечать