|
Разбор строки в 8.2 | ☑ | ||
---|---|---|---|---|
0
егаис
21.11.13
✎
10:48
|
Загрузка накладных в Рознице 2.0.
Есть наименование товара "Пылесос SAMSUNG SC4752", нужно для поиска оставить только "SAMSUNG SC4752", т.е. разложить слова в многострочный текст и вырезать оттуда слова с русскими буквами. Как сделано &НаСервере Процедура ПодобратьНоменклутуруНаСервере() Для Каждого Строка Из Объект.СоответствиеНоменклатуры Цикл Если (НЕ Строка.Загружать) ИЛИ ЗначениеЗаполнено(Строка.Номенклатура) Тогда Продолжить; КонецЕсли; СтрокаПоиска = ""; МногострочнаяСтрока = СтрЗаменить(СтрокаСРазделителями, " ", Символы.ПС); Для кСчЦ = 1 по СтрЧислоСтрок(МногострочнаяСтрока) Цикл СтрокаМС = СокрЛП(СтрПолучитьСтроку(МногострочнаяСтрока,СчЦ)); Если СтрокаМС = "" Тогда Продолжить; КонецЕсли; Если Найти(СтрокаМС) = 0 Тогда КонецЕсли; КонецЦикла; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Наименование ПОДОБНО &Наименование"; Запрос.УстановитьПараметр("Наименование", "%" + Строка.Наименование + "%"); Результат = Запрос.Выполнить().Выгрузить(); Если Результат.Количество() = 1 Тогда Строка.Номенклатура = Результат[0].Ссылка; ИначеЕсли Результат.Количество() > 1 Тогда СписокКА = Новый СписокЗначений; СписокКА.ЗагрузитьЗначения(Результат.ВыгрузитьКолонку("Ссылка")); Строка.Номенклатура = ВыбратьИзСписка(СписокКА); КонецЕсли; КонецЦикла; КонецПроцедуры Я наверное туплю, но как "вырезать" слова с русскими буквами?! Вот здесь Если Найти(СтрокаМС) = 0 Тогда КонецЕсли; |
|||
1
Wobland
21.11.13
✎
10:49
|
код символа есть в этой вселенной?
|
|||
2
егаис
21.11.13
✎
10:51
|
(1) бррр, описать каждый символ ??!!!
|
|||
3
Wobland
21.11.13
✎
10:51
|
(2) можешь сфантазировать другое решение?
|
|||
4
Wobland
21.11.13
✎
10:52
|
регвыражения? да даже лайк умеет, кстати
|
|||
5
егаис
21.11.13
✎
10:52
|
например?
наименование может быть и "Стайлеры, щипцы и выпрямители POLARIS PHS 1127белый/лиловый" |
|||
6
Бешеная Нога
21.11.13
✎
10:53
|
СписокБукв.Добавить("А");
СписокБукв.Добавить("Б"); ... Если СписокБукв.Найти(Сред(СтрокаМС, 1,1)) Тогда ... |
|||
7
Wobland
21.11.13
✎
10:54
|
(5) на слова поделишь? функцию русскости напишешь?
|
|||
8
Лодырь
21.11.13
✎
10:54
|
Регулярные выражения прям прорулили бы в данном вопросе.
|
|||
9
егаис
21.11.13
✎
10:54
|
(6) вот поверь, совсем хреновое решение
|
|||
10
Бешеная Нога
21.11.13
✎
10:55
|
(9) давай свое )))
|
|||
11
егаис
21.11.13
✎
10:55
|
(8) если не сложно, можно примером?
|
|||
12
Cube
21.11.13
✎
10:55
|
(6) Можно и так:
Если Найти("абвгд...яАБВГД...Я", ТекСимволМоейСтроки) > 0 Тогда //Это русский символ - удалить |
|||
13
Бешеная Нога
21.11.13
✎
10:56
|
СписокБукв = "абвгде...я";
Если Найти(СписокБукв,Сред(СтрокаМС, 1,1)) Тогда |
|||
14
Wobland
21.11.13
✎
10:56
|
(12) прогнозирую, лайк отработает быстрее. а уж регвыражения..
|
|||
15
anaed
21.11.13
✎
10:56
|
Функция KillRussian(Переменная)
Если Переменная="" Тогда Возврат Переменная; КонецЕсли; Пер=СокрЛП(Переменная); Длина=СтрДлина(Пер); Пер1=""; Для Сч=1 По Длина Цикл Символ=Сред(Пер,Сч,1); Если Найти("абвгдАБВГД...все исключаемые символы",Символ)>0 Тогда продолжить; КонецЕсли; Пер1=Пер1+Символ; КонецЦикла; Возврат Пер1; КонецФункции |
|||
16
Бешеная Нога
21.11.13
✎
10:57
|
и вообще, что за националистические нападки, чем вас русский не устраивает? может вы и против России? не нравится валите ваще тогда отсюда
|
|||
17
егаис
21.11.13
✎
10:57
|
Мужики, тупой перебор и сам бы написал.
Про регулярыне интересно ) |
|||
18
Лодырь
21.11.13
✎
10:57
|
(11)
пример можно увидеть тут в предпоследнем посте v8: Замена заглавных букв на прописные, если заглавных букв больше 5 подряд |
|||
19
егаис
21.11.13
✎
10:57
|
(16) вопрос к поставщикам ))
|
|||
20
Как страшно жить
21.11.13
✎
10:58
|
а как разложить "пылесос ЭЛЕКТРОН-2"?
|
|||
21
Лодырь
21.11.13
✎
10:59
|
или пример например тут http://infostart.ru/public/64222/
|
|||
22
Wobland
21.11.13
✎
10:59
|
(20) -2
|
|||
23
егаис
21.11.13
✎
11:00
|
(20) пробел - разделитель
|
|||
24
Asmody
21.11.13
✎
11:01
|
тащим отсюда https://snegopat.ru/scripts/doc/trunk/rex/readme.markdown библиотеку
потом делаем что-то типа ре = Новый("V8RegEx", "[\p{Letter}&&\p{script=cyrillic}]+"); НоваяСтрока = ре.Заменить(ИсходныйТекст,""); |
|||
25
Лодырь
21.11.13
✎
11:22
|
(24) Сильно просто ) дал бы возможность человеку разобраться с регулярками по полной. Он бы прокачался.
|
|||
26
егаис
21.11.13
✎
14:04
|
ага, спасибо
еще ламерский вопрос Процедура выполняется насервере. Метод СЗ ВыбратьЭлемент или ВыбратьИзСписка для УФ недоступны. Как передать в функцию наклиента данный список? Что-то типа &НаКлиенте Функция ВыбратьИзТекущегоСписка(СписокАналогов) Возврат ВыбратьИзСписка(СписокАналогов); КонецФункции &НаСервере Процедура ПодобратьНоменклатуруНаСервере() ... Результат = Запрос.Выполнить().Выгрузить(); Если Результат.Количество() = 1 Тогда Строка.Номенклатура = Результат[0].Ссылка; ИначеЕсли Результат.Количество() > 1 Тогда СписокКА = Новый СписокЗначений; СписокКА.ЗагрузитьЗначения(Результат.ВыгрузитьКолонку("Ссылка")); Строка.Номенклатура = ВыбратьИзТекущегоСписка(СписокКА); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
27
егаис
21.11.13
✎
14:05
|
{Обработка.ЗагрузкаДанныхИзТабличногоДокумента.Форма.ФормаПомощник.Форма(953,26)}: Процедура или функция с указанным именем не определена (ВыбратьИзТекущегоСписка)
Строка.Номенклатура = <<?>>ВыбратьИзТекущегоСписка(СписокКА); (Проверка: Сервер) |
|||
28
1dvd
21.11.13
✎
14:09
|
(0) неплохой пылесос, кстати. Был у меня такой
|
|||
29
WildSery
21.11.13
✎
14:09
|
(5) Так и нет ответа на вопрос (7), как надо разделять указанную строку.
|
|||
30
егаис
21.11.13
✎
14:13
|
переписал логику, все оставил наклиенте, запрос передал на сервер. Все равно ошибка
{Обработка.ЗагрузкаДанныхИзТабличногоДокумента.Форма.ФормаПомощник.Форма(946)}: Ошибка при вызове метода контекста (ВозвратСпискаТоваров) ТаблицаТоваров = ВозвратСпискаТоваров(СтрокаПоиска); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Ошибка отображения типов: Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable' |
|||
31
егаис
21.11.13
✎
14:15
|
все, разобрался, спасиюл
|
|||
32
егаис
21.11.13
✎
14:45
|
пил ят, как можног шарить в этих УФ?!
Элементы.СоответствиеНоменклатуры.ТекущиеДанные.Номенклатура = ВыбратьИзСписка(СписокТоваров); Список выбора значений на уф выходит, выбираю, но выбираемый элемент почему-то не отражается на форме. |
|||
33
егаис
21.11.13
✎
14:54
|
как установить значение для колонки таблицы в управляемой форме? мозг сломал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |