Автоматизация бизнеса

Установка, настройка, внедрение и сопровождение любых конфигураций на платформе 1С:Предприятие. 

e-mail: info@programmist1c.ru

Минимальный объем работ от 50 000 рублей
  •   Удаленный админ
  •   Карта сайта
  •   Контакты


  • Поиск
     

    v8: Функция получения представления идентификатора из самого идентификатора

    В конфигураторе во многих местах после ввода имени объекта некоторые другие его свойства, связанные с представлением, заполняются автоматически, преобразую имя в строку естественного языка. Это очень удобно, но программно такая функция платформы, к сожалению, недоступна. Так давайте напишем свою.
    Автор статьи: TormozIT | Редакторы: Buran
    Последняя редакция №5 от 28.01.07


    Ключевые слова: Синоним, Представление, Идентификатор


    Подразумевается, что вы придерживаетесь стандартов и идентификаторы строите по правилу преобразования фразы естественного языка путем замены регистра первой буквы каждого слова в верхний и удаления всех пробелов и знаков препинания. Хотя символ "_" не рекомендуется использовать в идентификаторах, я включил его поддержку в функцию.

    // Получает представление из идентификатора по правилу 
    // "Дебиторка_По_контрагентамСИнтерваламиСНГДля__Руководства" => "Дебиторка По контрагентам с интервалами СНГ для  Руководства".
    // После символа "_" регистр не меняется, а сам символ заменяется на " ".
    //
    // Параметры:
    //  ИсходнаяСтрока – Строка – идентификатор.
    //
    // Возвращаемое значение:
    //               – Строка – представление.
    //
    Функция ЛксПолучитьПредставлениеИзИдентификатора(ИсходнаяСтрока) Экспорт
    
        СтрокаВозврата = Сред(ИсходнаяСтрока, 1, 1);
        Для Сч = 2 По СтрДлина(ИсходнаяСтрока) Цикл
            ПредыдущийСимвол = Сред(ИсходнаяСтрока, Сч - 1, 1);
            ТекущийСимвол = Сред(ИсходнаяСтрока, Сч, 1);
            СледующийСимвол = Сред(ИсходнаяСтрока, Сч + 1, 1);
            ПослеследующийСимвол = Сред(ИсходнаяСтрока, Сч + 2, 1);
            Если ТекущийСимвол = "_" Тогда 
                СтрокаВозврата = СтрокаВозврата + " ";
                Продолжить;
            ИначеЕсли ВРЕГ(ТекущийСимвол) = ТекущийСимвол Тогда 
                Если Ложь
                    ИЛИ ВРЕГ(ПредыдущийСимвол) <> ПредыдущийСимвол
                    ИЛИ (Истина 
                        И ПредыдущийСимвол <> "_"
                        И ВРЕГ(ПредыдущийСимвол) = ПредыдущийСимвол
                        И ВРЕГ(СледующийСимвол) <> СледующийСимвол)
                Тогда 
                    СтрокаВозврата = СтрокаВозврата + " ";
                    Если Ложь
                        ИЛИ ВРЕГ(СледующийСимвол) <> СледующийСимвол
                        ИЛИ ВРЕГ(ПослеследующийСимвол) <> ПослеследующийСимвол
                    Тогда
                        ТекущийСимвол = НРЕГ(ТекущийСимвол);
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
            СтрокаВозврата = СтрокаВозврата + ТекущийСимвол;
        КонецЦикла;
        Возврат СтрокаВозврата;
    
    КонецФункции // ЛксПолучитьПредставлениеИзИдентификатора()
    


    Buran:
    самым эффективным инструментом работы со строками считаются Регулярные Выражения (RegExp).

    Вот пример кода с использованием регулярных выражений, аналогичный предыдущему:
    RegExp = Новый COMОбъект("VBScript.RegExp");
    RegExp.Global = Истина;
    RegExp.Pattern = "([а-я](?=[А-Я]))|([А-Я](?![А-Я]))|_";
    Результат = RegExp.Replace("Дебиторка_По_контрагентамСИнтерваламиСНГДля__Руководства"," $1 $2"));
    

    Комментарии к шаблону:
    Первая скобка - поиск начала новых слов.
    Вторая - чтобы не заменять аббревиатуры.
    Ну, и подчерк заменяется просто пробелом.
    Ввиду того, что на VBScript Perl'овые регекспы реализованы не полностью,
    результат выдает пробел в начале слова, да и шаблон на так изящен. Однако, код работает, проверено.
    21.02.18 | 10:31


    30.11.16 | 20:25


    28.11.16 | 09:22


    26.11.16 | 08:19


    22.11.16 | 20:17


    19.11.16 | 10:14


    18.11.16 | 20:09




    Внедрение 1С Автоматизация 1С Доработка 1С Сопровождение 1С Обслуживание 1С Программирование 1С 8 Hастройка 1С Карта сайта Контакты