Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Помогите написать несложной запрос на sqlite (1С 7.7)... (число прочтений - 2588 )
kentavr27
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 40
Зарегистрирован: 04. Июня 2008
Помогите написать несложной запрос на sqlite (1С 7.7)...
24. Июля 2010 :: 15:56
Печать  
Прошу помощи у знатоков SQL для выполнения следующей задачи.
Исходные данные: 1C 7.7 оперативный учет, база DBF.
В конфигурации есть справочник "Товары", справочник "Категории" и справочник "КатегорииТоваров", реквизитом которого является элемент справочника "Категории". "КатегорииТоваров" подчинен справочнику "Товары". В каждом товаре присутствует множество категорий. Требуется построить выборку товаров по по выбранным категориям. Категории для фильтра выбираются в виде списка (из справочника "Категории"). В результирующую таблицу должны попасть те товары, у которых присутствуют ВСЕ выбранные категории (т.е. фильтр "И")
Очень хочется получить результат используя единственный запрос и не вычищая результат запроса от лишних значений.
Штатными стредствами получилось только вычищая результат запроса от лишнего. Рассматриваю вариант SQL запроса с помощью 1sqlite, но к сожалению в SQL запросах -- полный ноль   Печаль
Для эксперементов цепляю свою тестовую конфигурацию с данными и некоторыми комментариями.
Заранее благодарен всем откликнувшимся.
  

test_015.zip ( 16 KB | Загрузки )
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Помогите написать несложной запрос на sqlite (1С 7.7)...
Ответ #1 - 24. Июля 2010 :: 21:04
Печать  
Посмотри класс "ПрямойЗапрос". По синтаксису все описано в документации.
Собственно в синтаксисе класса:
Код
Выбрать все
	ПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
	ПрямойЗапрос.БухгалтерскийУчет = 0;
	ПрямойЗапрос.ПериодическиеЗначения = 0;
	ПрямойЗапрос.РежимОтладки = -1;
	ПрямойЗапрос.УложитьСписокЗначений(СписокКатегорий,"#Категории","Категории");
	азмерСписка());
	ПрямойЗапрос.Текст =
	"ВЫБРАТЬ
	|	Товары.ЭлементТовары КАК [Товар $Справочник.Товары]
	|ИЗ
	|	(ВЫБРАТЬ
	|		$КатегорииТоваров.Владелец КАК ЭлементТовары
	|		,1 КАК ПризнакНаличия
	|	ИЗ
	|		Справочник.КатегорииТоваров КАК КатегорииТоваров
	|	ГДЕ
	|		$КатегорииТоваров.Категория В (ВЫБРАТЬ val ИЗ #Категории)) КАК Товары
	|СГРУППИРОВАТЬ
	|	Товары.ЭлементТовары
	|ИМЕЮЩИЕ
	|	СУММА(Товары.ПризнакНаличия) = :КоличествоКатегорий";
	ТаблицаТоваров = ПрямойЗапрос.Выполнить(); // в результате ИндексированнаяТаблица
 



Ну и архив твоей конфы с подключенными классами и ВК 1С++ и 1sqlite.
  

test_015_001.rar ( 1856 KB | Загрузки )

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


I Love YaBB 2!

Сообщений: 40
Зарегистрирован: 04. Июня 2008
Re: Помогите написать несложной запрос на sqlite (1С 7.7)...
Ответ #2 - 26. Июля 2010 :: 08:34
Печать  
Спасибо огромное  Очень довольный
Результат -- то что нужно.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать