0
- 05.04.2012 - 12:34
|
Делаю запрос по справочнику. по полю ПолноеНаименование. "//**{ЗАПРОС(Сформировать) |Предприятия = Справочник.Предприятия.ТекущийЭлемент; |ПолнНаименование = Справочник.Предприятия.ПолнНаименование; |Группировка Предприятия; |Условие ((НРег(СокрЛП(ПолнНаименование))=НРег(СокрЛП(СтрНа им))) или | (НРег(СокрЛП(СтрНаим)) В НРег(СокрЛП (ПолнНаименование)))); |"//****ЗАПРОС ; он находит нужные данные, но кроме этого возвращает еще строки в которых поле ПолноеНаименование - пустое. Почему? | |
1
- 05.04.2012 - 12:39
|
(1) Выполни: Найти("апро", "") И помедитируй над результатом. | |
2
- 05.04.2012 - 12:50
| (1) вообще то строковые функции заметно тормозят выполнение запроса, в данном случае перебор с допиливанием, имхо, будет быстрее. | |
3
- 05.04.2012 - 12:52
| так а почему найти, то. у меня запрос тут | |
4
- 05.04.2012 - 12:54
|
(4) Потому что гладиолус: (НРег(СокрЛП(СтрНаим)) В НРег(СокрЛП (ПолнНаименование)))) | |
5
- 05.04.2012 - 13:04
| ну да, медленно как то работает. | |
6
- 05.04.2012 - 13:05
| ой непонятно | |
7
- 05.04.2012 - 13:06
| (7) Кто запрос писал? | |
8
- 05.04.2012 - 13:08
| ой не я, тетенька одна | |
9
- 05.04.2012 - 13:09
| (НРег(СокрЛП(СтрНаим)) В НРег(СокрЛП (ПолнНаименование)))) = Найти(ПолнНаименование, СтрНаим) | |
10
- 05.04.2012 - 13:10
| но запрос вроде нормальный, вроде должен нормально работать, а он кучу мусора кроме нужной информации выдает. я с запросами в 1с вообще первый раз сталкиваюсь, не могу понять почему так получается. | |
11
- 05.04.2012 - 13:16
|
Блин, чёт туплю я опять... Не глянул, что в чем ищется... СтрНаим - откуда берется? | |
12
- 05.04.2012 - 13:17
| сделать без запроса, просто поиск? | |
13
- 05.04.2012 - 13:18
| (13) Вопросы будем читать? | |
14
- 05.04.2012 - 13:19
| вводится в поле на форме. с клавиатуры. и вызывается функция в которой запросом ищется и выводится. | |
15
- 05.04.2012 - 13:31
|
Вместо вот этого |Условие ((НРег(СокрЛП(ПолнНаименование))=НРег(СокрЛП(СтрНа им))) или | (НРег(СокрЛП(СтрНаим)) В НРег(СокрЛП (ПолнНаименование)))); можно через функцию нарисовать. |Условие НужноеНаименование(ПолнНаименование) = 1; Сама функция: Функция НужноеНаименование(Наименование) Если Нрег(СокрЛП(СтрНаим)) = Нрег(СокрЛП(Наименование)) Тогда Возврат 1; ИначеЕсли Найти(Нрег(СокрЛП(СтрНаим)),Нрег(СокрЛП(Наименован ие)) > 0 Тогда Возврат 1; Иначе Возврат 0 КонецЕсли; КонецФункции Заодно проверишь откуда пустые наименования лезут. Конечно SQL запрос ускорит, если есть такая возможность. | |
16
- 05.04.2012 - 13:38
|
Не, нифига. Все правильно я писал. СП: "Синтаксис: В Англоязычный синоним: In Описание: Оператор языка запросов ''Условие (А в Б);'' говорит о том, что условие истинно, когда значение А является подмножеством значения Б. Следует особо отметить, что если значение Б пустое (объект не выбран), то условие является истинным," | |
17
- 05.04.2012 - 13:41
| все понятно. | |
18
- 05.04.2012 - 13:46
|
(18) Выкинь тот бред, что в (1) и напиши: |Без Итогов |Предприятия = Справочник.Предприятия.ТекущийЭлемент; |ПолнНаименование = Справочник.Предприятия.ПолнНаименование; |Группировка Предприятия Без Групп; |Условие (Найти(ПолнНаименование, СтрНаим) > 0); И больше не зовите ту тетеньку... | |
19
- 05.04.2012 - 13:50
| жжоте :)) | |
20
- 05.04.2012 - 13:55
|
+(19) Пара поправок. 1. После "Без итогов" - точка с запятой. 2. Вместо Найти(ПолнНаименование, СтрНаим) должно быть Найти(ВРег(ПолнНаименование), СтрНаим) 3. Предварительно СтрНаим = ВРег(СтрНаим) | |
21
- 05.04.2012 - 14:07
| хм, теперь вообще ничего не находит | |
22
- 05.04.2012 - 14:10
| (22) Больше кода. У меня все находит. | |
23
- 05.04.2012 - 14:11
|
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//**{ЗАПРОС(Сформировать) |Без Итогов; |Предприятия = Справочник.Предприятия.ТекущийЭлемент; |ПолнНаименование = Справочник.Предприятия.ПолнНаименование; |Группировка Предприятия; |Условие (Найти(ВРег(ПолнНаименование), ВРег(СтрНаим)) > 0); |"//****ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл СпЗнВл.ДобавитьЗначение(Запрос.Предприятия); КонецЦикла; ИспользоватьСписокЭлементов(СпЗнВл); | |
24
- 05.04.2012 - 14:44
|
_стрНаим = ВРег(СтрНаим); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//**{ЗАПРОС(Сформировать) |Без Итогов; |Предприятия = Справочник.Предприятия.ТекущийЭлемент; |ПолнНаименование = Справочник.Предприятия.ПолнНаименование; |Группировка Предприятия; |Условие (Найти(ВРег(ПолнНаименование), _стрНаим) > 0); |"//****ЗАПРОС ; Должно работать. | |
25
- 05.04.2012 - 14:48
|
(24) Пока Запрос.Группировка(1) = 1 Цикл поменять на Пока Запрос.Группировка() = 1 Цикл | |
26
- 05.04.2012 - 14:49
|
(24) Без итогов Не накапливать итоги по группировкам. Синтаксис: Без итогов; Англоязычный синоним: Without Totals; Описание: Цель данного оператора — увеличение скорости выполнения запроса, при условии, что итоговые записи при использовании запроса не нужны. Данный оператор языка запросов, дает возможность не накапливать итоги по группировкам. Использовать данный оператор в тексте запроса имеет смысл, когда запрос строится не для формирования сложного отчета, а например, для простой выборки значений из информационной базы для последующей их обработки. В случае применения данного оператора в тексте запроса, при обходе результатов запроса применяется только один цикл обхода, используя метод объ*екта «Запрос» Группировка() без параметра. Пример: Запрос = СоздатьОбъект("Запрос"); Текст3апроса = " ... |Группировка Товар; |Группировка Склад; |Без Итогов; "; Если Запрос.Выполнить(ТекстЗапроса) = 1 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка() = 1 Цикл ... КонецЦикла; Замечание. Если в тексте запроса используется группировка по многоуровневому справочнику и не указано "Без Групп", то итоги по группам справочника будут накапливаться. Другими словами, если в запросе не нужны итоги по группам справочника, то в тексте запроса кроме использования оператора "Без Итогов" дополнительно следует в операторах "Группировка ..." использовать ключевое слово "Без Групп". (с)жкк | |
27
- 05.04.2012 - 15:04
| (26) Вообще не надо там Группировка(). Есть прекрасный метод Выгрузить(). | |
28
- 05.04.2012 - 15:10
|
Ищет но не все теперь находит. Допустим ищу СОЮЗ, а он находит только допустим Аквасоюз, Промсоюз. а ооо "союз" не находит | |
29
- 05.04.2012 - 15:12
| а! вообще ООО не ищет. | |
30
- 05.04.2012 - 15:19
| _стрНаим = ВРег(СокрЛП(СтрНаим)); вот в чем дело то было. теперь все ОК. Всем большой спасибо! | |
31
- 05.04.2012 - 15:21
|
В разве нельзя это - _стрНаим = ВРег(СокрЛП(СтрНаим)); прямо в запрос написать? | |
32
- 05.04.2012 - 15:22
| не, группировка как раз подходит. | |
33
- 05.04.2012 - 15:29
|
(32) Ну почему нельзя? Можно, если ставим перед собой цел - увеличение времени работы запроса... (33) Подходит. Только кода больше и работает долльше. | |
| Интернет-форум Краснодарского края и Краснодара |