Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:25

Поиск русских букв в артикуле номенклатуры

Автор happynattion, 22 ноя 2018, 07:51

0 Пользователей и 1 гость просматривают эту тему.

happynattion

Возможно ли как то осуществить поиск русских букв в артикуле номенклатуры? Номенклатуру забивают из файла excel копируют артикула не обращая внимание на наличие русских букв. Конфигурция УПП 1.3

oleg-x

Цитата: happynattion от 22 ноя 2018, 07:51
Возможно ли как то осуществить поиск русских букв в артикуле номенклатуры? Номенклатуру забивают из файла excel копируют артикула не обращая внимание на наличие русских букв. Конфигурция УПП 1.3
На ум приходит поиск перебором русских букв.
Найти(Наименование,"а")
Можно через код символа, тогда получится сделать в цикле.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

happynattion


Цитата: oleg-x от 22 ноя 2018, 08:29Можно через код символа, тогда получится сделать в цикле.
Это как через код символа?


Z.spb

Цитата: happynattion от 22 ноя 2018, 08:59

Цитата: oleg-x от 22 ноя 2018, 08:29Можно через код символа, тогда получится сделать в цикле.
Это как через код символа?

У каждой буквы, цифры или символа есть код. Получить этот код можно функцией "КодСимвола".
Например
Сообщить(КодСимвола("а"));
Сообщить(КодСимвола("я"));
Сообщить(КодСимвола("ё"));

Буквы с "а" до "я" идут подряд, буква "ё" имеет отдельный номер.

Самый простой пример перебором побуквенно

Артикул  = "QwertyфZXCV";
нАртикул = Нрег(Артикул);
ЕстьРусскиеБуквы = Ложь;
Для сч=1 По СтрДлина(нАртикул) Цикл
Если (КодСимвола(нАртикул,сч) > 1071 И КодСимвола(нАртикул,сч) < 1104)
ИЛИ КодСимвола(нАртикул,сч) = 1105 Тогда
ЕстьРусскиеБуквы = Истина;
Прервать;
КонецЕсли;
КонецЦикла;



А ещё можно вот так
Артикул  = "QwertyфZXCV";
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = Истина;
RegExp.Global = Истина;
RegExp.MultiLine = Ложь;
RegExp.Pattern = "[а-яё]";
ЕстьРусскиеБуквы = RegExp.Test(Артикул);
RegExp = Неопределено;
Сообщить(ЕстьРусскиеБуквы);


А если номенклатуры много и вся она загружается из Excel, допустим в таблицу значений, то можно эту таблицу запихнуть в запрос 1С, и запросом установить условие ПОДОБНО "%[а-яё]%".

Разные варианты есть.


oleg-x

Цитата: happynattion от 22 ноя 2018, 08:59

Цитата: oleg-x от 22 ноя 2018, 08:29Можно через код символа, тогда получится сделать в цикле.
Это как через код символа?
Вот две строки:
КодСимвола(Строка,2); //Возвращает код второго символа
Символ(0430); //Возвращает символ (а), согласно кодировке
//Коды согласно Unicode. остается определится какие коды и как организовать цикл.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск