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


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
СокрЛП в прямом запросе
05. Августа 2008 :: 09:29
Печать  
Возможно ли каким то образом удалить в строках лишние пробелы в запросе?

           ТекстЗапроса = "
           |SELECT
           |      Спр.ID as [ТекущийЭлемент $Справочник.Материалы],
           |      STR(Спр.Descr) as [Наименование $Строка]
           |FROM
           |      $Справочник.Материалы as Спр
           |WHERE
           |      Спр.IsFolder = 1 AND
           |      Спр.IsMark = '' AND      
           |      Спр.PARENTID = :ПапкаПолотно";
           
           
           Запрос. УстановитьТекстовыйПараметр ("ПапкаПолотно", ПапкаПолотно);
           Запрос.Отладка(1);
           Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗГруппы);
           ТЗГруппы.ВыбратьСтроку();
           
           ТЗГруппы.ВыбратьСтроки();
           пока ТЗГруппы.ПолучитьСтроку()=1 цикл
                 сообщить(ТЗГруппы.Наименование);
                 сообщить(СтрДлина(ТЗГруппы.Наименование));
           КонецЦикла;
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #1 - 05. Августа 2008 :: 09:33
Печать  
Используй комбинацию LTRIM и RTRIM - скуль аналоги СокрЛ и СокрП
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #2 - 05. Августа 2008 :: 09:35
Печать  
mov68 писал(а) 05. Августа 2008 :: 09:33:
Используй комбинацию LTRIM и RTRIM - скуль аналоги СокрЛ и СокрП

спасибо за помошь
можешь подкинуть ссылку на синтаксис помошник по скулю?
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #3 - 05. Августа 2008 :: 09:38
Печать  
Не помню откуда, пробую прицепить als по функциям SQL
  

Transact_SQL.als ( 59 KB | Загрузки )
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #4 - 05. Августа 2008 :: 09:42
Печать  
mov68 писал(а) 05. Августа 2008 :: 09:33:
Используй комбинацию LTRIM и RTRIM - скуль аналоги СокрЛ и СокрП

ругается:
     Спр.ID as [ТекущийЭлемент_1c_type_Справочник_Материалы],
     LTRIM(Спр.Descr as Наименование)
FROM
     sc1817 as Спр
WHERE
     Спр.IsFolder = 1 AND
     Спр.IsMark = '' AND      
     Спр.PARENTID = '     3   '
Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗГруппы);
{Документ.АктПриемки.Форма.Модуль(699)}: FAILED! ICommandText::Execute(): Function name is missing ).
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #5 - 05. Августа 2008 :: 09:44
Печать  
OnCheck писал(а) 05. Августа 2008 :: 09:42:
mov68 писал(а) 05. Августа 2008 :: 09:33:
Используй комбинацию LTRIM и RTRIM - скуль аналоги СокрЛ и СокрП

ругается:
     Спр.ID as [ТекущийЭлемент_1c_type_Справочник_Материалы],
     LTRIM(Спр.Descr as Наименование)
FROM
     sc1817 as Спр
WHERE
     Спр.IsFolder = 1 AND
     Спр.IsMark = '' AND      
     Спр.PARENTID = '     3   '
Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗГруппы);
{Документ.АктПриемки.Форма.Модуль(699)}: FAILED! ICommandText::Execute(): Function name is missing ).

Надо:
LTRIM(Спр.Descr) as Наименование

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


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #6 - 05. Августа 2008 :: 09:45
Печать  
В твоем случае подозреваю:
LTRIM(RTRIM(Выражение)) as Наименование
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #7 - 05. Августа 2008 :: 09:47
Печать  
mov68 писал(а) 05. Августа 2008 :: 09:44:
OnCheck писал(а) 05. Августа 2008 :: 09:42:
mov68 писал(а) 05. Августа 2008 :: 09:33:
Используй комбинацию LTRIM и RTRIM - скуль аналоги СокрЛ и СокрП

ругается:
     Спр.ID as [ТекущийЭлемент_1c_type_Справочник_Материалы],
     LTRIM(Спр.Descr as Наименование)
FROM
     sc1817 as Спр
WHERE
     Спр.IsFolder = 1 AND
     Спр.IsMark = '' AND      
     Спр.PARENTID = '     3   '
Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗГруппы);
{Документ.АктПриемки.Форма.Модуль(699)}: FAILED! ICommandText::Execute(): Function name is missing ).

Надо:
LTRIM(Спр.Descr) as Наименование


да уж), спасибо
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #8 - 05. Августа 2008 :: 09:51
Печать  
mov68 писал(а) 05. Августа 2008 :: 09:45:
В твоем случае подозреваю:
LTRIM(RTRIM(Выражение)) as Наименование

обидно то что все равно как были все наименования по 50 символов с пробелами, так и остались  Нерешительный
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #9 - 05. Августа 2008 :: 09:58
Печать  
OnCheck писал(а) 05. Августа 2008 :: 09:51:
mov68 писал(а) 05. Августа 2008 :: 09:45:
В твоем случае подозреваю:
LTRIM(RTRIM(Выражение)) as Наименование

обидно то что все равно как были все наименования по 50 символов с пробелами, так и остались  Нерешительный


Не может быть, это проверено, можно получить после запроса, уверен там все нормально. смотри куда помещаешь, если там длина 50, что ж ты тогда хочешь? Скорее всего проблема там
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #10 - 05. Августа 2008 :: 10:04
Печать  
mov68 писал(а) 05. Августа 2008 :: 09:58:
OnCheck писал(а) 05. Августа 2008 :: 09:51:
mov68 писал(а) 05. Августа 2008 :: 09:45:
В твоем случае подозреваю:
LTRIM(RTRIM(Выражение)) as Наименование

обидно то что все равно как были все наименования по 50 символов с пробелами, так и остались  Нерешительный


Не может быть, это проверено, можно получить после запроса, уверен там все нормально. смотри куда помещаешь, если там длина 50, что ж ты тогда хочешь? Скорее всего проблема там


помещаю в таблицу значений
Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗГруппы);
текст запроса выше
делаю
           ТЗГруппы.ВыбратьСтроки();
           пока ТЗГруппы.ПолучитьСтроку()=1 цикл
                 сообщить(ТЗГруппы.Наименование);
                 сообщить(СтрДлина(ТЗГруппы.Наименование));
                 ТЗГруппы.Наименование=СокрП(ТЗГруппы.Наименование);
                 сообщить(ТЗГруппы.Наименование);
                 сообщить(СтрДлина(ТЗГруппы.Наименование));
           КонецЦикла;

сначала для каждого элемента - 50, потом для каждого - своё.
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #11 - 05. Августа 2008 :: 10:10
Печать  
Таблицу формируешь сам? Покажи что такое ТЗГруппы
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #12 - 05. Августа 2008 :: 10:11
Печать  
mov68 писал(а) 05. Августа 2008 :: 10:10:
Таблицу формируешь сам? Покажи что такое ТЗГруппы

ТЗГруппы=СоздатьОбъект("ТаблицаЗначений");
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #13 - 05. Августа 2008 :: 10:12
Печать  
OnCheck писал(а) 05. Августа 2008 :: 10:11:
mov68 писал(а) 05. Августа 2008 :: 10:10:
Таблицу формируешь сам? Покажи что такое ТЗГруппы

ТЗГруппы=СоздатьОбъект("ТаблицаЗначений");


Точно все?
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: СокрЛП в прямом запросе
Ответ #14 - 05. Августа 2008 :: 10:16
Печать  
В семерке нет полей переменной длины, значит поле получает длину по макс длинной строке(50), остальные дополнены справа пробелами.

Как проверить? Попробуй в наименовании поставить пробелы спереди, если функция отрабатывает, то слева они убирутся точно.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать