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


1C++ rocks!

Сообщений: 23
Зарегистрирован: 22. Мая 2012
Re: 1sqlite
Ответ #900 - 29. Ноября 2017 :: 10:40
Печать  
Добрый день.
Делаю запрос с УложитьТЗ()
В результирующей таблице везде в начале в строках стоит символ "S"
Как избавиться от него?
  
Наверх
 
IP записан
 
Grey77
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 23
Зарегистрирован: 22. Мая 2012
Re: 1sqlite
Ответ #901 - 29. Ноября 2017 :: 12:32
Печать  
Появился новый вопрос. Есть таблица значений и есть Список значений. Можно ли сделать запрос через уложитьТЗ(), чтобы в результате его работы в таблице значений остались только те строки, по которым сделан отбор из Списка значений . надеюсь понятно объяснил.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #902 - 29. Ноября 2017 :: 15:13
Печать  
Grey77 писал(а) 29. Ноября 2017 :: 10:40:
Добрый день.
Делаю запрос с УложитьТЗ()
В результирующей таблице везде в начале в строках стоит символ "S"
Как избавиться от него?


Префикс в строках в базе sqlite при УложитьТЗ из-да отсутствия типизации.
Это тип 1С - :Неопределенный

Избавится можно двумя способами
1. Типизировать колонки ТЗ, тогда в таблицу sqlite будут загружены без префикса.
2. Типизировать в запросе select val [val :Неопределенный]

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


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #903 - 29. Ноября 2017 :: 15:16
Печать  
Grey77 писал(а) 29. Ноября 2017 :: 12:32:
Появился новый вопрос. Есть таблица значений и есть Список значений. Можно ли сделать запрос через уложитьТЗ(), чтобы в результате его работы в таблице значений остались только те строки, по которым сделан отбор из Списка значений . надеюсь понятно объяснил.


можно:

ТЗ в базу командой УложитьТЗ в тмпТЗ
СЗ в базу командой УложитьОбъекты в тмпСЗ

имеем две таблицы в базе sqlite и делаем с ними все что позволяет sql и на что хватит фантазии
  
Наверх
www  
IP записан
 
zar
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 82
Местоположение: Киров
Зарегистрирован: 17. Августа 2009
Пол: Мужской
Re: 1sqlite
Ответ #904 - 29. Ноября 2017 :: 15:37
Печать  
Grey77 писал(а) 29. Ноября 2017 :: 12:32:
Появился новый вопрос. Есть таблица значений и есть Список значений. Можно ли сделать запрос через уложитьТЗ(), чтобы в результате его работы в таблице значений остались только те строки, по которым сделан отбор из Списка значений . надеюсь понятно объяснил.


Еще как вариант фильтрацию таблицы значений сделать через объект ИндексированнаяТаблица. Но это уже от задачи надо смотреть - возможно для нее вариант, предложенный Djelf более оптимален.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #905 - 29. Ноября 2017 :: 17:27
Печать  
zar писал(а) 29. Ноября 2017 :: 15:37:
Еще как вариант фильтрацию таблицы значений сделать через объект ИндексированнаяТаблица. Но это уже от задачи надо смотреть - возможно для нее вариант, предложенный Djelf более оптимален.

На небольшом объеме и простых операциях между таблицами ИТ будет быстрее, 1sqlite силен тем, что без особых усилий пережевывает базу в несколько Gb и даже больше...
  
Наверх
www  
IP записан
 
Grey77
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 23
Зарегистрирован: 22. Мая 2012
Re: 1sqlite
Ответ #906 - 30. Ноября 2017 :: 06:08
Печать  
можно:
ТЗ в базу командой УложитьТЗ в тмпТЗ
СЗ в базу командой УложитьОбъекты в тмпСЗ
имеем две таблицы в базе sqlite и делаем с ними все что позволяет sql и на что хватит фантазии [/quote]


Если не сложно можно сделать любой пример, чтобы понимать как использовать "фантазию"  Круглые глаза
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #907 - 30. Ноября 2017 :: 08:39
Печать  
Grey77 писал(а) 30. Ноября 2017 :: 06:08:
можно:
ТЗ в базу командой УложитьТЗ в тмпТЗ
СЗ в базу командой УложитьОбъекты в тмпСЗ
имеем две таблицы в базе sqlite и делаем с ними все что позволяет sql и на что хватит фантазии


Если не сложно можно сделать любой пример, чтобы понимать как использовать "фантазию"  Круглые глаза

Хм... Какая же она фантазия после примеров?

Ладно. Есть tmpT из ТЗ и tmpС из СЗ, val в обоих случаях элемент Справочник.Номенклатура.
Выбрать из tmpT строки содержащиеся в tmpС

select  tmpT.val [Номенклатура :Справочник.Номенклатура]
from tmpT WHERE tmpT.val IN (select val from tmpС);
     
либо
delete  from tmpT  WHERE tmpT.val NOT IN (select val from tmpС);
select  tmpT.val [Номенклатура :Справочник.Номенклатура] from tmpT;

либо джойнами... вариантов решения одного и того же в sql много

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


1C++ rocks!

Сообщений: 23
Зарегистрирован: 22. Мая 2012
Re: 1sqlite
Ответ #908 - 30. Ноября 2017 :: 14:28
Печать  
Спасибо огромное.
Еще есть одна просьба. Нужен запрос, который бы смог найти в справочнике номенклатура одинаковые товары по полному наименованию и вывести их в таблицу значений. Если не трудно напишите как?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #909 - 30. Ноября 2017 :: 15:42
Печать  
Grey77 писал(а) 30. Ноября 2017 :: 14:28:
Спасибо огромное.
Еще есть одна просьба. Нужен запрос, который бы смог найти в справочнике номенклатура одинаковые товары по полному наименованию и вывести их в таблицу значений. Если не трудно напишите как?


Это слишком просто

SELECT
     Спр.ID [Номенклатура $Справочник.Номенклатура]
FROM Справочник_Номенклатура AS Спр
WHERE Спр.DESCR IN
(
SELECT
     DESCR
FROM Справочник_Номенклатура
GROUP BY DESCR
HAVING COUNT(DESCR)>1
)
  
Наверх
www  
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 53
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: 1sqlite
Ответ #910 - 01. Декабря 2017 :: 07:59
Печать  
Можно без подзапроса, лайт такое ест )

SELECT
  MAX(спрНом.id) [Номенклатура $Справочник.Номенклатура]
FROM
  Справочник_Номенклатура as спрНом
GROUP BY      спрНом.Descr
HAVING Count(спрНом.Descr) > 1
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 633
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #911 - 01. Декабря 2017 :: 08:16
Печать  
nicesc писал(а) 01. Декабря 2017 :: 07:59:
Можно без подзапроса, лайт такое ест )

В этом случае у тебя не список всех дубликатов, а список каких то из них.

Ну уж если подзапросы не нравятся то вот так

SELECT DISTINCT
  Спр1.id [Номенклатура $Справочник.Номенклатура]
FROM  Справочник_Номенклатура as Спр1
LEFT JOIN Справочник_Номенклатура as Спр2 ON Спр1.DESCR=Спр2.DESCR
WHERE Спр1.id <> Спр2.id

Хотя какая разница... оптимизатор все равно план выполнения по своему переделает Подмигивание
  
Наверх
www  
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 53
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: 1sqlite
Ответ #912 - 01. Декабря 2017 :: 08:50
Печать  
Djelf писал(а) 01. Декабря 2017 :: 08:16:
nicesc писал(а) 01. Декабря 2017 :: 07:59:
Можно без подзапроса, лайт такое ест )

В этом случае у тебя не список всех дубликатов, а список каких то из них.


Точно, вернет не все  Улыбка
  
Наверх
 
IP записан
 
Grey77
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 23
Зарегистрирован: 22. Мая 2012
Re: 1sqlite
Ответ #913 - 03. Декабря 2017 :: 11:53
Печать  
Djelf писал(а) 19. Ноября 2016 :: 16:28:
Наоборот надо. Сначала выбираем цены по типу, потом к ним клеим константы. Благодаря тому что sqlite умеет GROUP BY sort цена будет выбрана из нужной строки. Ну а потом если нужна номенклатура без цен клеим ее union`ом. Если нужны 2 колонки с ценами то либо case, либо 2 запроса с union. tmpНоменклатура - список значений выгруженный во временную таблицу.

Пример:
Код
Выбрать все
SELECT
max(Константы.DATE||Константы.TIME)
,Цены.PARENTEXT [Номенклатура $Справочник.Номенклатура]
,Цены.ТипЦен [ТипЦен $Справочник.ТипыЦен]
,Константы.VALUE [Цена $Число]

FROM  Справочник_Цены AS Цены
LEFT JOIN [_1S.Const] AS Константы
	ON Цены.ID=Константы.OBJID
	AND Константы.ID=:ИсторияРеквизита.Цены.Цена
	AND Константы.DATE<=:НачДата
WHERE Цены.ТипЦен = :Цена1 OR Цены.ТипЦен = :Цена2
 AND Цены.PARENTEXT IN (SELECT val FROM tmpНоменклатура)
GROUP by Цены.ТипЦен,Цены.PARENTEXT
HAVING Константы.VALUE NOTNULL
 




День добрый. Пробовал сделать данный запрос в ТИС, но ничего не получилось. Если Вам не сложно, прошу выложить файл с данной обработкой, чтобы можно было в живую посмотреть работу. Если нужно, то готов оплатить такую работу.
  
Наверх
 
IP записан
 
Grey77
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 23
Зарегистрирован: 22. Мая 2012
Re: 1sqlite
Ответ #914 - 03. Декабря 2017 :: 11:58
Печать  
А если еще вместе с этим запросом можно сделать с расчетом остатков, то это будет просто сказка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 59 60 [61] 62 63 ... 79
ОтправитьПечать