Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Работа со строками в прямом запросе (число прочтений - 4056 )
Vix
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 25. Марта 2011
Работа со строками в прямом запросе
11. Октября 2011 :: 10:52
Печать  
Имеется список значений отсортированный по колонке "ШтрихКод". Вопрос заключается, как с помощью прямого запроса организовать поиск на примере стандартного 1С-го, Найти(строка,строкапоиска)? Смысл этого в том, чтобы из имеющихся штрихкодов в списке, выбрать конкретное вхождение символов, например, имеются "12090672100, 123006721700" строка поиска  "067217", должено вывестись только 2-е значение в запросе.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Работа со строками в прямом запросе
Ответ #1 - 11. Октября 2011 :: 12:41
Печать  
select val from :Список where val like '%'+:ПарамПоиска+'%'
  
Наверх
 
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Работа со строками в прямом запросе
Ответ #2 - 11. Октября 2011 :: 13:50
Печать  
Vix писал(а) 11. Октября 2011 :: 10:52:
должено вывестись только 2-е значение в запросе.

select top 1 ...
  
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Работа со строками в прямом запросе
Ответ #3 - 11. Октября 2011 :: 15:00
Печать  
тогда уж и order by необходим

Хотя, в сабже у него и так найдет только 1  элемент
  
Наверх
 
IP записан
 
Vix
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 25. Марта 2011
Re: Работа со строками в прямом запросе
Ответ #4 - 12. Октября 2011 :: 11:01
Печать  
Спасибо за ответы, очень помог оператор LIKE. Единственная поправочка с синтаксисом, LIKE '%"+ПоисковаяЧасть+"%'
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Работа со строками в прямом запросе
Ответ #5 - 12. Октября 2011 :: 11:32
Печать  
не надо там поправочки в синтаксис.. ты разрываешь текст запроса, а я -нет, я устанавливаю параметр.
  
Наверх
 
IP записан
 
Vix
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 25. Марта 2011
Re: Работа со строками в прямом запросе
Ответ #6 - 12. Октября 2011 :: 11:45
Печать  
Вообщем вот рабочий вариант
Код
Выбрать все
RS = СоздатьОбъект("ODBCRecordset");
		ТекстЗапроса = "
		|SELECT ус_Партии.PARENTEXT [Владелец $Справочник.Номенклатура]
		|	  ,$ус_Партии.ШтрихКод ШтрихКод
		|FROM $Справочник.ус_Партии AS ус_Партии With (NOLOCK)
		|WHERE	(ус_Партии.PARENTEXT IN (SELECT Val FROM #СписокТовара)) AND (ус_Партии.ISMARK = 0) AND ($ус_Партии.ШтрихКод LIKE '%"+СокрЛП(КодТовара)+"%')
		|GROUP BY ус_Партии.PARENTEXT
		|	   , $ус_Партии.ШтрихКод
		|ORDER BY ус_Партии.PARENTEXT
		|";
		RS.УложитьСписокОбъектов(СписокТовара,"#СписокТовара");
	  ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
		СписокШтрихКодов = СоздатьОбъект("СписокЗначений");
		ТЗ.Выгрузить(СписокШтрихКодов,,,"ШтрихКод");  
 


а отдельно выбор из списка не работает
Код
Выбрать все
Запрос1С = СоздатьОбъект("ODBCRecordset");
		ТекстЗапроса = "
		|SELECT val FROM  :СписокШтрихКодов
		|where val LIKE '%'+:КодТовара+'%'
		|";
		Запрос1С.УстановитьТекстовыйПараметр("КодТовара", КодТовара);
	    RS.УложитьСписокОбъектов(СписокШтрихКодов,"#СписокШтрихКодов");
		//Запрос1С.УстановитьТекстовыйПараметр("СписокШтрихКодов", СписокШтрихКодов);  
		Запрос1С.Отладка(1);
		ТЗ = Запрос1С.ВыполнитьИнструкцию(ТекстЗапроса);
 

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Работа со строками в прямом запросе
Ответ #7 - 12. Октября 2011 :: 12:45
Печать  
Цитата:
а отдельно выбор из списка не работает

Попробуй без параметров.
Все должно работать.
Код:
Код
Выбрать все
Запрос1С = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
|SELECT val FROM  #СписокШтрихКодов
|where val LIKE '%'"+СокрЛП(КодТовара)+"'%'
|";
Запрос1С.УложитьСписокОбъектов(СписокШтрихКодов,"#СписокШтрихКодов");
Запрос1С.Отладка(1);
ТЗ = Запрос1С.ВыполнитьИнструкцию(ТекстЗапроса);
 



ps да вроде в #6 ты перепутал rc и Запрос1С. укладывал в однин объект а выполнял другой
  
Наверх
 
IP записан
 
Vix
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 25. Марта 2011
Re: Работа со строками в прямом запросе
Ответ #8 - 12. Октября 2011 :: 13:27
Печать  
так тоже не работает..пробовал
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Работа со строками в прямом запросе
Ответ #9 - 12. Октября 2011 :: 13:34
Печать  
Vix писал(а) 12. Октября 2011 :: 13:27:
так тоже не работает..пробовал

ну где то еще ошибка.

выполни это
Код
Выбрать все
Запрос1С = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "
|SELECT val FROM  #СписокШтрихКодов
|";
Запрос1С.УложитьСписокОбъектов(СписокШтрихКодов,"#СписокШтрихКодов");
ТЗ = Запрос1С.ВыполнитьИнструкцию(ТекстЗапроса);
 



Список СписокШтрихКодов содержит или нет папки (в смысле группы) ?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Работа со строками в прямом запросе
Ответ #10 - 12. Октября 2011 :: 13:46
Печать  
Едрена батона..

Код
Выбрать все
SELECT Val FROM #СписокТовара
where val LIKE '%'+:КодТовара+'%' 



+ укладываешь ты в 1 объект, параметр устанавливаешь в другой.
Запрос.Отладка(1) в студию.
  
Наверх
 
IP записан
 
Vix
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 25. Марта 2011
Re: Работа со строками в прямом запросе
Ответ #11 - 13. Октября 2011 :: 03:01
Печать  
Список ШтрихКодов содержит элементы, тип строка. КодТовара это тип строка которую ищем.
Выполняю..
Код
Выбрать все
Запрос1С = СоздатьОбъект("ODBCRecordset");
		ТекстЗапроса = "
		|SELECT Val FROM #СписокШтрихКодов
	  |where val LIKE '%'+:КодТовара+'%'
		|";
	  Запрос1С.УстановитьТекстовыйПараметр("КодТовара", КодТовара);
		Запрос1С.УложитьСписокОбъектов(СписокШтрихКодов,"#СписокШтрихКодов");
		Запрос1С.Отладка(1);
		ТЗ = Запрос1С.ВыполнитьИнструкцию(ТекстЗапроса);
 

           
Получаю пустой список...отладка            
SELECT Val FROM #СписокШтрихКодов
where val LIKE '%'+'067217'+'%'
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Работа со строками в прямом запросе
Ответ #12 - 13. Октября 2011 :: 04:16
Печать  
Vix писал(а) 13. Октября 2011 :: 03:01:
Список ШтрихКодов содержит элементы, тип строка. КодТовара это тип строка которую ищем.
Выполняю..
Код
Выбрать все
Запрос1С = СоздатьОбъект("ODBCRecordset");
		ТекстЗапроса = "
		|SELECT Val FROM #СписокШтрихКодов
	  |where val LIKE '%'+:КодТовара+'%'
		|";
	  Запрос1С.УстановитьТекстовыйПараметр("КодТовара", КодТовара);  
		Запрос1С.УложитьСписокОбъектов(СписокШтрихКодов,"#СписокШтрихКодов");
		Запрос1С.Отладка(1);
		ТЗ = Запрос1С.ВыполнитьИнструкцию(ТекстЗапроса);  
 

           
Получаю пустой список...отладка            
SELECT Val FROM #СписокШтрихКодов
where val LIKE '%'+'067217'+'%'


Так УложитьСписокОбъектов укладывает из списка элементы справочника id (включая все подгруппы).
Элементы списка в виде текста никак не попадут во временную таблицу с помощью УложитьСписокОбъектов.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать