Имя: Пароль:
1C
1C 7.7
v7: Как отобрать элементы спр-ка, у которых Лев(Наименование, N) = "ляляля"?
,
0 Галахад
 
гуру
02.12.11
07:23
?
1 Ковычки
 
02.12.11
07:24
НайтиПоНаименованию с ложным удалением
2 Галахад
 
гуру
02.12.11
07:25
(1) Что такое ложное удаление?
3 Ковычки
 
02.12.11
07:26
тогда через перебор или запрос
4 PuhUfa
 
02.12.11
07:26
Запрос не предлогать?
5 Галахад
 
гуру
02.12.11
07:28
(3) Понятно.

(4) В 77 запросы какие-то странные...
6 Amiralnar
 
02.12.11
07:29
Вам 1 раз или регулярно?
1с++ поддерживает нормальные запросы.
7 Rie
 
02.12.11
07:30
(5) В данном случае запрос - элементарный:
"Элем = Справочник.ТвойСправочник.ТекущийЭлемент;
|Наименование = Справочник.ТвойСправочник.Наименование;
|Условие (Лев(Наименование,12345)=""ляляля"";"
8 Галахад
 
гуру
02.12.11
07:30
(6) Однократно. Надеюсь. :-)
9 Amiralnar
 
02.12.11
07:30
(7) Ранозначно перебору?
10 Галахад
 
гуру
02.12.11
07:31
(7) Спасибо.
11 Ковычки
 
02.12.11
07:32
(2)
НачатьТранзакцию();
Пока Спр.НайтиПоНаименованию("ляляля",0,0)=1 Цикл
  Сп.ДобавитьЗначение(Спр,ТекущийЭлемент());
  Спр.Удалить(1);
КонецЦикла;
ОтменитьТранзакцию();
12 PuhUfa
 
02.12.11
07:33
(11) жуть какая
13 Chai Nic
 
02.12.11
07:34
(11) зачем такой изврат? Если нужно именно по левой части строки отбор - то установить порядок наименований и дальше перебором до тех пор, пока не наткнешься на несоответствие начальному шаблону.
14 Галахад
 
гуру
02.12.11
07:35
(11) Ага. Вспомнил. Хорошая штука.
15 Ковычки
 
02.12.11
08:06
(13) эта жуть просто универсальна и сама быстрая
16 МихаилМ
 
02.12.11
11:36
запросом

Условие (Наименование >= "ляляля")
 Условие (Наименование < "лялял+СИМВОЛПОСЛЕ(я)")

именно так мс скл преобразует like
17 МихаилМ
 
02.12.11
11:36
+ но тут зависимость от collation
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший