Переключение на Главную Страницу Страницы: 1 ... 76 77 [78] 79  ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 466971 )
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: 1sqlite
Ответ #1155 - 02. Августа 2023 :: 12:24
Печать  
Djelf писал(а) 01. Августа 2023 :: 11:27:
Это легко, будет исключение, забирай/проверяй: https://cloud.mail.ru/public/YMuG/2Vi29qxxV

Работает, спасибо!

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


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: 1sqlite
Ответ #1156 - 02. Августа 2023 :: 12:25
Печать  
А вот такой запрос можно использовать?

Код (SQL)
Выбрать все
	лТекстЗапроса = "
	|SELECT *
	|FROM [Справочник.Номенклатура] as СпрНоменклатура
	|"; 



Нужно в тексте запроса обязательно все поля перечислять?
Например:

Код (SQL)
Выбрать все
	лТекстЗапроса = "
	|SELECT Наименование, Код, Цена
	|FROM [Справочник.Номенклатура] as СпрНоменклатура
	|"; 



Запрос типа "SELECT * FROM ..." не работает?
« Последняя редакция: 02. Августа 2023 :: 13:56 - zelenprog »  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1157 - 03. Августа 2023 :: 11:22
Печать  
zelenprog писал(а) 02. Августа 2023 :: 12:25:
Запрос типа "SELECT * FROM ..." не работает?

А самому проверить сложно?  Смех
Только зачем? Типизации то не будет...
  
Наверх
www  
IP записан
 
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: 1sqlite
Ответ #1158 - 03. Августа 2023 :: 14:21
Печать  
Djelf писал(а) 03. Августа 2023 :: 11:22:
А самому проверить сложно?  Смех

Я не точно выразился. Я сделал такой запрос и обнаружил, что он не работает.
И хотел уточнить: если он не работает, то по каким причинам?
Это же вроде бы стандартный SQL-синтаксис.

Djelf писал(а) 03. Августа 2023 :: 11:22:
А Только зачем? Типизации то не будет...

Ну в некоторых случаях типизация и не нужна. Например, если работать с внешней sqlite-базой.
А написать запрос со "звездочкой" было бы удобно и быстро.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1159 - 04. Августа 2023 :: 04:05
Печать  
zelenprog писал(а) 03. Августа 2023 :: 14:21:
Я не точно выразился. Я сделал такой запрос и обнаружил, что он не работает.
И хотел уточнить: если он не работает, то по каким причинам?

Ты прямо как к доктору пришол и на вопрос "Что у вас болит" говоришь - "Вы доктор, вы мне и скажите."

Не работать то может по разному, телепатов тут нет, чтобы понять как именно не работает...
  
Наверх
www  
IP записан
 
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: 1sqlite
Ответ #1160 - 04. Августа 2023 :: 06:25
Печать  
zelenprog писал(а) 02. Августа 2023 :: 12:25:
Запрос типа "SELECT * FROM ..." не работает?

Djelf писал(а) 04. Августа 2023 :: 04:05:
Ты прямо как к доктору пришол и на вопрос "Что у вас болит" говоришь - "Вы доктор, вы мне и скажите."
Не работать то может по разному, телепатов тут нет, чтобы понять как именно не работает...

Проверил еще раз.
Запрос "SELECT * FROM [Справочник.Контрагенты] as СпрКонтрагенты WHERE (СпрКонтрагенты.IsFolder != '1')"
прекрасно работает!
Видимо в первый раз я что-то неправильно написал и нарушил синтаксис.
Извиняюсь за беспокойство.
  
Наверх
 
IP записан
 
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: 1sqlite
Ответ #1161 - 11. Августа 2023 :: 09:11
Печать  
Странная ошибка: не работает типизация.
Запрос "составной" из двух запросов, объединенных по UNION ALL.
Если выполнять по отдельности первый запрос и второй запрос, то типизация работает.

Если выполнять запрос как "составной" через UNION ALL, то во втором SELECT-е не срабатывает типизация.
Второй SELECT содержит две строки с одинаковой типизацией (только имена полей разные):
- "СпрЕдиницы.ID as [ЕдиницаИзмерения :Справочник.ЕдиницыИзмерений]"
- "СпрЕдиницы.ID as [ОКЕИ :Справочник.ЕдиницыИзмерений]"
Во второй строке второго SELECT-а типизация срабатывает. А в первой строке - нет.

Это на конфигурации "Производство+Услуги+Бухгалтерия 7.7".

Код (SQL)
Выбрать все
	|SELECT
	|	СпрЕдиницы.ParentExt 		as [Номенклатура :Справочник.Номенклатура],
	|	NULL 						as ЕдиницаИзмерения,
	|	СпрЕдиницы.ID 				as [ЕдиницаНоменклатуры :Справочник.ЕдиницыНоменклатуры],
	|	СпрЕдиницы.Вес 				as Вес,
	|	СпрЕдиницы.Коэффициент 		as Коэффициент,
	|	''							as ШтрихКод,
	//----
	|	СпрЕдиницы.ЕдиницаИзмерения 				as [ОКЕИ :Справочник.ЕдиницыИзмерений],
	|	СпрЕдиницыИзмерений.Code					as ОКЕИ_Код,
	|	RTRIM(СпрЕдиницыИзмерений.Descr)			as ОКЕИ_НаименованиеКраткое,
	|	RTRIM(СпрЕдиницыИзмерений.ПолнНаименование)	as ОКЕИ_НаименованиеПолное,
	//----
	|	''							as ЭтоБазоваяЕдиница,
	|	CASE
	|		WHEN (СпрНоменклатура.ID IS NOT NULL) AND (СпрЕдиницы.ID = СпрНоменклатура.ОсновнаяЕдиницаИзмерения) THEN 'Да'
	|		ELSE ''
	|	END AS ЭтоОсновнаяЕдиница
	//----
	|   
	|FROM [Справочник.ЕдиницыНоменклатуры] as СпрЕдиницы
	|LEFT OUTER JOIN
	|	[Справочник.Номенклатура] СпрНоменклатура ON СпрЕдиницы.ParentExt = СпрНоменклатура.ID
	|LEFT OUTER JOIN
	|	[Справочник.ЕдиницыИзмерений] СпрЕдиницыИзмерений ON СпрЕдиницы.ЕдиницаИзмерения = СпрЕдиницыИзмерений.ID
	|
	|WHERE (СпрЕдиницы.IsMark <> '*') AND (::УсловиеПоВладельцам)
	|
	|
	|UNION ALL
	|
	|
	|SELECT
	|	СпрНоменклатура.ID			as [Номенклатура :Справочник.Номенклатура],
	|	СпрЕдиницы.ID 				as [ЕдиницаИзмерения :Справочник.ЕдиницыИзмерений],
	|	NULL		 				as ЕдиницаНоменклатуры,
	|	0			 				as Вес,
	|	1 							as Коэффициент,
	|	СпрНоменклатура.ШтрихКод	as ШтрихКод,
	//----
	|	СпрЕдиницы.ID						as [ОКЕИ :Справочник.ЕдиницыИзмерений],
	|	СпрЕдиницы.Code						as ОКЕИ_Код,
	|	RTRIM(СпрЕдиницы.Descr)				as ОКЕИ_НаименованиеКраткое,
	|	RTRIM(СпрЕдиницы.ПолнНаименование)	as ОКЕИ_НаименованиеПолное,
	//----
	|	'Да'						as ЭтоБазоваяЕдиница,
	|	''							as ЭтоОсновнаяЕдиница
	//----
	|   
	|FROM [Справочник.Номенклатура] СпрНоменклатура
	|LEFT OUTER JOIN
	|	[Справочник.ЕдиницыИзмерений] СпрЕдиницы ON СпрНоменклатура.ЕдиницаИзмерения = СпрЕдиницы.ID
	|
	|WHERE (СпрНоменклатура.IsFolder <> '1') AND (::УсловиеПоНоменклатуре)
 



В чем причина?
Это я что-то неправильно написал? Или ошибка в компоненте?
  
Наверх
 
IP записан
 
Ветер в поле
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 06. Октября 2010
Пол: Мужской
Re: 1sqlite
Ответ #1162 - 11. Августа 2023 :: 10:43
Печать  
Типизация колонок двух запросов разная. Я вообще не уверен, что даже с одинаковой типизацией всё заработает.
Лучше объединить запросы, а потом из результата сделать SELECT и только сейчас сделать типизацию. Тогда точно всё сработает
  
Наверх
 
IP записан
 
zelenprog
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 03. Июня 2022
Пол: Мужской
Re: 1sqlite
Ответ #1163 - 11. Августа 2023 :: 10:56
Печать  
Ветер в поле писал(а) 11. Августа 2023 :: 10:43:
Типизация колонок двух запросов разная. Я вообще не уверен, что даже с одинаковой типизацией всё заработает.
Лучше объединить запросы, а потом из результата сделать SELECT и только сейчас сделать типизацию. Тогда точно всё сработает

Понял. Спасибо.
  
Наверх
 
IP записан
 
Arbuz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 06. Февраля 2019
Re: 1sqlite
Ответ #1164 - 11. Августа 2023 :: 13:51
Печать  
Интересно, а можно ли как-то совместить sqlite3_mod_csv и sqlite3_mod_zipfile?
Т.е. читать csv прямо из архива, не распаковывая. Просто есть много архивированных журналов.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1165 - 12. Августа 2023 :: 03:39
Печать  
Arbuz писал(а) 11. Августа 2023 :: 13:51:
Интересно, а можно ли как-то совместить sqlite3_mod_csv и sqlite3_mod_zipfile?
Т.е. читать csv прямо из архива, не распаковывая. Просто есть много архивированных журналов.

А почему нельзя? Препятствий быть не должно. За исключением возможных глюков...
Это конвеерная операция, sqlite3_mod_zipfile распаковывать все равно будет, только в строку/блоб в памяти, потом передавать в sqlite3_mod_csv.
Но sqlite3_mod_zipfile довольно убог, поддерживается только deflate: https://sqlite.org/zipfile.html
  
Наверх
www  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1166 - 12. Августа 2023 :: 04:06
Печать  
Ветер в поле писал(а) 11. Августа 2023 :: 10:43:
Типизация колонок двух запросов разная. Я вообще не уверен, что даже с одинаковой типизацией всё заработает.
Лучше объединить запросы, а потом из результата сделать SELECT и только сейчас сделать типизацию. Тогда точно всё сработает


Не совсе так, при UNION псевдонимы колонок и их типизация для второго и далее запросов вообще не учитываются.
Работает только первая типизация и чтобы она работала, поля в запросе должны быть одного вида.
Ниже пример типизации разных справочников в одной колонке.
Код (SQL)
Выбрать все
SELECT
	:ВидСправочника.Автомобили||Автомобили.ID [ID $Справочник]
FROM Справочник_Автомобили AS Автомобили
UNION ALL SELECT
	:ВидСправочника.Банки||Банки.ID
FROM Справочник_Банки AS  Банки 


Можно еще и справочники с документами смешивать.
Код (SQL)
Выбрать все
SELECT
	'B1'||:ВидСправочника.Автомобили||Автомобили.ID [ID $Неопределенный]
FROM Справочник_Автомобили AS Автомобили
UNION ALL SELECT
	'O1'||:ВидДокумента.УстановкаЦенНоменклатуры||Цены.IDDOC
FROM Документ_УстановкаЦенНоменклатуры AS Цены 

« Последняя редакция: 12. Августа 2023 :: 05:37 - Djelf »  
Наверх
www  
IP записан
 
Arbuz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 06. Февраля 2019
Re: 1sqlite
Ответ #1167 - 15. Августа 2023 :: 11:21
Печать  
Djelf писал(а) 12. Августа 2023 :: 03:39:
Это конвеерная операция, sqlite3_mod_zipfile распаковывать все равно будет, только в строку/блоб в памяти, потом передавать в sqlite3_mod_csv.

Вот не пойму я как эту строку/блоб законвеерить в mod_csv, оно же из файла читает?
Djelf писал(а) 12. Августа 2023 :: 03:39:
Но sqlite3_mod_zipfile довольно убог, поддерживается только deflate: https://sqlite.org/zipfile.html

Так 1С и сама не умеет ничего кроме deflate, там родными средствами архивированный журнал, унутре куча файлов без расширения разбитые по датам.
Архивов несколько, некоторые пересекаются.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1168 - 15. Августа 2023 :: 11:43
Печать  
Arbuz писал(а) 15. Августа 2023 :: 11:21:
Вот не пойму я как эту строку/блоб законвеерить в mod_csv, оно же из файла читает?

Ах мерд... все именно так, mod_csv из памяти не кушает.
Дописывать надо  Смущённый
Попутал меня видать недавний случай с json и xml и преобразованием налету...
Ввел в заблуждение, виноват, всего не упомнить уже.
  
Наверх
www  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #1169 - 22. Августа 2023 :: 11:29
Печать  
Djelf писал(а) 15. Августа 2023 :: 11:43:
[quote author=6E5D4D5A552F0 link=1214205575/1167#1167 date=1692098482]
Вот не пойму я как эту строку/блоб законвеерить в mod_csv, оно же из файла читает?

Все обстоит хуже чем я думал, но ssd тебя по скорости спасут!
Извлечение текста надо бы просовывать в функцию в mod_zipfile(ПолноеИмяФайлаВАрхиве) (это должно выгрузить текст и передать данные дальше), но он несовместен с mod_csv:  http://www.ch-werner.de/sqliteodbc/ и с mod_vsv: https://github.com/nalgeon/sqlean
Они это не умеют никак.
И мы тут тоже устарели, почти везде уже юникод, а мы застряли на 1251.
Не уверен что время работы окупится хоть на 1 копейку.
Да и вообще csv наверное устарел, проще скриптик нарисовать...
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 76 77 [78] 79 
ОтправитьПечать