Имя: Пароль:
1C
1С v8
Получить из Имя - Представление: СведенияОВзносах - Сведения о взносах. Как?
, ,
0 loololool
 
15.11.18
11:31
День добрый!

Есть готовое волшебство получения Представления из Имя?

Пример:
Имя: СведенияОВзносах
Представление: Сведения о взносах

Спасибо!
1 Случайный прохожий
 
15.11.18
12:04
Тебе функцию преобразования строки нужно или ты из метаданных хочешь по имени синоним получить?
2 loololool
 
15.11.18
12:05
(1) Функцию преобразования, конечно же. Из БПС желательно, при наличии.
3 Случайный прохожий
 
15.11.18
12:12
Нету. Но можно же написать :)
4 loololool
 
15.11.18
12:21
ʘʘ Хм..

Вариант-то имеется, такой:

Для каждой буквы из Имя Цикл
   Если буква = ВРЕГ(буква) Тогда
      Представление= СтрЗаменить(ТолькоЭтуБукву, " " + НРЕГ(буква));
   КонецЕсли;
КонецЦикла;
Представление= ВРЕГ(Сред(Представление, 2, 1)) + Сред(Представление, 3);
5 dezss
 
15.11.18
12:23
(4) первую большой оставь
6 Случайный прохожий
 
15.11.18
12:24
(4) А если несколько букв заглавными подряд идут?
7 Случайный прохожий
 
15.11.18
12:29
Глянь, может эта подойдет:
Функция ПреобразоватьСтроку(Знач ИсходнаяСтрока)
    ДлинаСтроки = СтрДлина(ИсходнаяСтрока);
    Рез = Лев(ИсходнаяСтрока,1);
    ИсходнаяСтрока = Прав(ИсходнаяСтрока,СтрДлина(ИсходнаяСтрока)-1);
    н = 1;
    ПредыдущаяБуква = Рез;
    Пока н <= ДлинаСтроки Цикл        
        Буква = Лев(ИсходнаяСтрока,1);
        ИсходнаяСтрока = Прав(ИсходнаяСтрока,СтрДлина(ИсходнаяСтрока)-1);
        Если Буква=ВРег(Буква) и ПредыдущаяБуква = Врег(ПредыдущаяБуква) Тогда
            Рез = Лев(Рез, СтрДлина(Рез)-1) + Врег(ПредыдущаяБуква);
            Рез = Рез + ВРег(Буква);    
        ИначеЕсли Буква=ВРег(Буква) Тогда
            Рез = Рез + " " +НРег(Буква);
        Иначе
            Рез = Рез + Буква;
        КонецЕсли;    
        ПредыдущаяБуква = Буква;
        н=н+1;
    КонецЦикла;    
    Возврат Рез;        
КонецФункции
8 Случайный прохожий
 
15.11.18
12:31
Не, тоже не то :)
9 loololool
 
15.11.18
12:35
Почему не то - вполне похоже, и с учётов нескольких заглавных, вдруг пригодится. Пожалуй - воспользуюсь, в качестве эксперимента.

Спасибо!
10 Случайный прохожий
 
15.11.18
12:35
Функция ПреобразоватьСтроку(Знач ИсходнаяСтрока)
    ДлинаСтроки = СтрДлина(ИсходнаяСтрока);
    Рез = Лев(ИсходнаяСтрока,1);
    ИсходнаяСтрока = Прав(ИсходнаяСтрока,СтрДлина(ИсходнаяСтрока)-1);
    н = 1;
    ПредыдущаяБуква = Рез;
    Пока н <= ДлинаСтроки Цикл        
        Буква = Лев(ИсходнаяСтрока,1);
        ИсходнаяСтрока = Прав(ИсходнаяСтрока,СтрДлина(ИсходнаяСтрока)-1);
        СледующаяБуква = Лев(ИсходнаяСтрока,1);
        Если Буква=ВРег(Буква) и ПредыдущаяБуква = Врег(ПредыдущаяБуква) и СледующаяБуква = Врег(СледующаяБуква) Тогда
            Рез = Лев(Рез, СтрДлина(Рез)-1) + Врег(ПредыдущаяБуква);
            Рез = Рез + ВРег(Буква);    
        ИначеЕсли Буква=ВРег(Буква) Тогда
            Рез = Рез + " " +НРег(Буква);
        Иначе
            Рез = Рез + Буква;
        КонецЕсли;    
        ПредыдущаяБуква = Буква;
        н=н+1;
    КонецЦикла;    
    Возврат Рез;        
КонецФункции
11 Случайный прохожий
 
15.11.18
12:36
Эта более правильная. Там подпилишь если что :)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший