[РЕШЕНО] Коды символов латиницы

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем alexburn, 10 апр 2015.

  1. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Приветствую, ребят. Кто может поделиться или пнуть в сторону, где можно получить список кодов символов латиницы?
    Просто есть задача, отловить номенклатуру, где используются латинские буквы, вместо киррилицы. Вот, хочу сделать соответствие(либо массив) и проверять посимвольно каждую номенклатуру.
  2. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    hex есть в вики для 1251
    --- Объединение сообщений, 10 апр 2015 ---
    можно и самому сделать :)
    в цикле код от 1 увеличивай и выводи код и символ

    они там практически по порядку, кроме нескольких букв русского алфавита

    где-то тут недавно рассатривали тему на предмет вхождения символа в интервал
    alexburn нравится это.
  3. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Спасибо большое, то что нужно.
    А что лучше подойдет, для реализации. Загонять в соответствие весь список, или массив проще сделать ?
    Не знаю как лучше поступить. Перебирать посимвольно наименование и искать этот символ на принадлежность ко множеству, или наоборот, брать каждый из множества и прогонять через наименование :))) ?
  4. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    в хрюше была ещё доступна таблица символов
    [​IMG]
    --- Объединение сообщений, 10 апр 2015 ---
    хм
    на первый взгляд напрашивается СЗ из кодов для сравнения и последовательный перебор символов Наименования (или строки) приведённых к коду на предмет вхождения в СЗ
    а заготовку кодов для СЗ можно где-то хранить и загружать её в СЗ перед потребностью проверки
    --- Объединение сообщений, 10 апр 2015 ---
    обход можно сделать через
    Код:
    КодСимвола("Строка","НомерСимвола")
    цикл от 1 до размера Наименования
    Последнее редактирование: 10 апр 2015
  5. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Ну это можно и не СЗ делать, а просто массив, тем более что он фиксирован 1С, и проверять на присутствие символа в этом массиве.
  6. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.429
    Симпатии:
    372
    Баллы:
    104
    это уже частности реализации :)
  7. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    alexburn открой УПП/КА и посмотри там СтроковыеФункцииКлиентСервер.ЭтоРазделительСлов()
    Я думаю наведет на определенные мысли.
    Все что надо сделать - закомментировать пару строк в ней, ну и написать процедуру, которая будет из переданной строки посимвольно получать код символа и передавать в нее на проверку.
  8. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Сань, у меня нет этих конфигураций :(
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Код:
    Функция ЭтоРазделительСлов(КодСимвола, РазделителиСлов = Неопределено) Экспорт
       
        Если РазделителиСлов <> Неопределено Тогда
            Возврат Найти(РазделителиСлов, Символ(КодСимвола)) > 0;
        КонецЕсли;
           
        Диапазоны = Новый Массив;
        Диапазоны.Добавить(Новый Структура("Мин,Макс", 48, 57));         // цифры
        Диапазоны.Добавить(Новый Структура("Мин,Макс", 65, 90));         // латиница большие
        Диапазоны.Добавить(Новый Структура("Мин,Макс", 97, 122));         // латиница маленькие
        Диапазоны.Добавить(Новый Структура("Мин,Макс", 1040, 1103));     // кириллица
        Диапазоны.Добавить(Новый Структура("Мин,Макс", 1025, 1025));     // символ "Ё"
        Диапазоны.Добавить(Новый Структура("Мин,Макс", 1105, 1105));     // символ "ё"
        Диапазоны.Добавить(Новый Структура("Мин,Макс", 95, 95));         // символ "_"
       
        Для Каждого Диапазон Из Диапазоны Цикл
            Если КодСимвола >= Диапазон.Мин И КодСимвола <= Диапазон.Макс Тогда
                Возврат Ложь;
            КонецЕсли;
        КонецЦикла;
       
        Возврат Истина;
       
    КонецФункции
    
    alexburn нравится это.
  10. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Спасибо большущее!!!!
  11. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ну и сразу, из нее получаем:
    Код:
    Функция ЭтоБукваЛатинскогоАлфавита(КодСимвола, РазделителиСлов = Неопределено) Экспорт
       
        //Если РазделителиСлов <> Неопределено Тогда
        //    Возврат Найти(РазделителиСлов, Символ(КодСимвола)) > 0;
        //КонецЕсли;
           
        Диапазоны = Новый Массив;
        //Диапазоны.Добавить(Новый Структура("Мин,Макс", 48, 57));         // цифры
        Диапазоны.Добавить(Новый Структура("Мин,Макс", 65, 90));         // латиница большие
        Диапазоны.Добавить(Новый Структура("Мин,Макс", 97, 122));         // латиница маленькие
        //Диапазоны.Добавить(Новый Структура("Мин,Макс", 1040, 1103));     // кириллица
        //Диапазоны.Добавить(Новый Структура("Мин,Макс", 1025, 1025));     // символ "Ё"
        //Диапазоны.Добавить(Новый Структура("Мин,Макс", 1105, 1105));     // символ "ё"
        //Диапазоны.Добавить(Новый Структура("Мин,Макс", 95, 95));         // символ "_"
       
        Для Каждого Диапазон Из Диапазоны Цикл
            Если КодСимвола >= Диапазон.Мин И КодСимвола <= Диапазон.Макс Тогда
                //Возврат Ложь;
                Возврат Истина;
            КонецЕсли;
        КонецЦикла;
       
        //Возврат Истина;
        Возврат Ложь;
       
    КонецФункции
    
    alexburn нравится это.

Поделиться этой страницей