Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) про запрос справочника (число прочтений - 3841 )
harek78
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 18. Октября 2013
про запрос справочника
18. Октября 2013 :: 13:11
Печать  
Всем привет!
у меня есть обычный запрос:
     Запрос = СоздатьОбъект("Запрос");
     ТекстЗапроса =
     "//{{ЗАПРОС(ВыбратьНоменклатуру)
     |Обрабатывать НеПомеченныеНаУдаление;
     |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент;
     |Группировка Номенклатура упорядочить по Номенклатура.Наименование все;
     |Условие(Номенклатура в СписТоваров);
     |";//}}ЗАПРОС
     
     Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
           Возврат;
     КонецЕсли;

Подскажите как сделать тоже самое только прямым запросом?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: про запрос справочника
Ответ #1 - 18. Октября 2013 :: 14:13
Печать  
Код
Выбрать все
	rc = СоздатьОбъект("ODBCRecordSet");
	rc.УложитьСписокОбъектов(СписТоваров,"#Товары","Номенклатура");
	ТекстЗапроса = "select id [Товар $Справочник.Номенклатура]
	|from $Справочник.Номенклатура
	|where ismark = 0
	|and  (id IN (SELECT Val FROM #Товары))
	|order by descr";
	ТЗ = rc.ВыполнитьИнструкцию(ТекстЗапроса);

 

  
Наверх
 
IP записан
 
harek78
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 18. Октября 2013
Re: про запрос справочника
Ответ #2 - 22. Октября 2013 :: 05:25
Печать  
спасибо!
Сейчас буду тестить!
  
Наверх
 
IP записан
 
harek78
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 18. Октября 2013
Re: про запрос справочника
Ответ #3 - 22. Октября 2013 :: 06:36
Печать  
а чтобы группы товаров тоже были в ТЗ. Как сделать??
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: про запрос справочника
Ответ #4 - 22. Октября 2013 :: 06:39
Печать  
выгрузи запрос в итз и группировать..
или запрос + куча левых соединений к этому же справочнику для получения иерархии, или соединение к заранее подготовленной табличке с группами или.. еще варианты.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: про запрос справочника
Ответ #5 - 22. Октября 2013 :: 06:51
Печать  
harek78 писал(а) 22. Октября 2013 :: 06:36:
а чтобы группы товаров тоже были в ТЗ. Как сделать??

во врем таблицу #Товары добавь группы. ( перед выполнением основного запроса ).
  
Наверх
 
IP записан
 
harek78
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 18. Октября 2013
Re: про запрос справочника
Ответ #6 - 22. Октября 2013 :: 07:38
Печать  
Z1 писал(а) 22. Октября 2013 :: 06:51:
harek78 писал(а) 22. Октября 2013 :: 06:36:
а чтобы группы товаров тоже были в ТЗ. Как сделать??

во врем таблицу #Товары добавь группы. ( перед выполнением основного запроса ).


не в обиду, я в SQL-запросах ноль. Попытался сам что то сделать, просто как баран в пустые ворота. Подскажите, как добавить в #Товары группы??
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: про запрос справочника
Ответ #7 - 22. Октября 2013 :: 09:57
Печать  
harek78 писал(а) 22. Октября 2013 :: 07:38:
Z1 писал(а) 22. Октября 2013 :: 06:51:
harek78 писал(а) 22. Октября 2013 :: 06:36:
а чтобы группы товаров тоже были в ТЗ. Как сделать??

во врем таблицу #Товары добавь группы. ( перед выполнением основного запроса ).


не в обиду, я в SQL-запросах ноль. Попытался сам что то сделать, просто как баран в пустые ворота. Подскажите, как добавить в #Товары группы??



Неоптимально так :

после строки
Код
Выбрать все
rc.УложитьСписокОбъектов(СписТоваров,"#Товары","Номенклатура");
 


пишешь

Код
Выбрать все
meta = СоздатьОбъект("MetaDataWork");

Разм1 = СписокТоваров.РазмерСписка();
Для Инд1 = 1 по Разм1 Цикл
	ТекЭл = СписокТоваров.ПолучитьЗначение(Инд1);
	Если ПустоеЗначение(ТекЭл) = 1 Тогда
		Продолжить;
	КонецЕсли;
	Если ТекЭл.ЭтоГруппа() = 0 Тогда
		Продолжить;
	КонецЕсли;
	Зн_sql = "'" + Прав(Глоб_meta.ЗначениеВСтрокуБД(ТекЭл),9) + "'";
	rc.ВыполнитьСкалярный("insert into #Товары (val, isfolder) values (" + Зн_sql + " , 1) ");
КонецЦикла;
 


после этого во временной таблице будут и элементы и папки ( то что
значения папок могут повторяться не страшно )
  
Наверх
 
IP записан
 
harek78
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 18. Октября 2013
Re: про запрос справочника
Ответ #8 - 22. Октября 2013 :: 11:52
Печать  
А как мне выгрузить в ТЗ из rc??
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: про запрос справочника
Ответ #9 - 22. Октября 2013 :: 12:16
Печать  
тз = rc.ВыполлнитьИнструкцию(ТекстЗапроса);
  
Наверх
 
IP записан
 
harek78
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 18. Октября 2013
Re: про запрос справочника
Ответ #10 - 22. Октября 2013 :: 12:44
Печать  
все равно не выгружает всю иерархию групп.
у меня например в справочнике:
Группа1
Группа2
 Группа3
   Элемент1
   Элемент2
а в Прямой запрос выдает
Группа3
  Элемент1
  Элемент2
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: про запрос справочника
Ответ #11 - 22. Октября 2013 :: 14:57
Печать  
harek78 писал(а) 22. Октября 2013 :: 12:44:
все равно не выгружает всю иерархию групп.
у меня например в справочнике:
Группа1
Группа2
 Группа3
   Элемент1
   Элемент2
а в Прямой запрос выдает
Группа3
 Элемент1
 Элемент2

Так в (0) у тебя запрос написан не по иерархии а по наименованию товаров.
как по иерархии делать написано в (4)
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать