Функция Преобразование Строки Без Пробелов(СтрокаБезПробелов)


Функция ПреобразованиеСтрокиБезПробелов в Строку с пробелами с разделением по Заглавным буквам.
ОКОНЧАТЕЛЬНАЯ ВЕРСИЯ!
Теперь с воможностью добавления исключений, которые не надо преобразовывать в нижний регистр (НДС, ГТД…). Вы можете добавить свои исключения в массив исключений.
В строке без пробелов может быть неорганиченное количество РАЗНЫХ Исключений (если, нпример, НДС повторяется в строке 2 раза функция преобразует вторую НДС в нижний регистр).

Эта функция будет полезна при создании элементов формы программно.

 

Например, нужно при открытии обработки в какой-либо конфигурации создать в форме обработки элементы всех реквизитов справочника «Номенклатура». Названия реквизитов справочника указаны строками без пробелов, а в форме хотелось бы видеть заголовки элементов «нормально» с пробелами.

Не реализована ещё в этой функции проблема исключений. таких , как например, НДС или ГТД, которые не надо преобразовывать в нижний регистр. Позже доработаю.

/////////////////////////

&НаСервере
Функция ПреобразованиеСтрокиБезПробелов(СтрокаБезПробелов)
 
 СтрокаСПробелами = Лев(СтрокаБезПробелов,1);
 
 Для к = 2 По СтрДлина(СтрокаБезПробелов) Цикл
  ТекущийЗнак = Сред(СтрокаБезПробелов,к,1);
  КодСимвола = КодСимвола(ТекущийЗнак);
  Если (КодСимвола > 64 И КодСимвола < 91) Или (КодСимвола > 1039 И КодСимвола < 1072)  Тогда
   СтрокаСПробелами = СтрокаСПробелами + » » + НРег(ТекущийЗнак);
  Иначе
   СтрокаСПробелами = СтрокаСПробелами + ТекущийЗнак;
  КонецЕсли;
  
 КонецЦикла;
 
 Возврат  СтрокаСПробелами;
 
КонецФункции 

&НаСервере
Процедура ДобавитьЭлемент()
 
 РеквизитыНоменклатуры = Метаданные.Справочники.Номенклатура.Реквизиты;
 КоличествоРеквизитов = РеквизитыНоменклатуры.Количество();
 мРекв = Новый Массив;
 
 Для Каждого РеквизитНоменклатуры Из РеквизитыНоменклатуры Цикл
  РеквизитИмя = РеквизитНоменклатуры.Имя;
  РевизитТип = РеквизитНоменклатуры.Тип;
  НовыйРеквизит = Новый РеквизитФормы(РеквизитИмя,РевизитТип,,РеквизитИмя);
  мРекв.Добавить(НовыйРеквизит);
  КонецЕсли;
 КонецЦикла;
 
 ЭтаФорма.ИзменитьРеквизиты(мРекв);
 
 Для каждого Элемент Из мРекв Цикл
   НовыйЭлемент = Элементы.Добавить(«Поле»+Элемент.Имя,Тип(«ПолеФормы»), Элементы.Группа);
   НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; 
   НовыйЭлемент.ПутьКДанным = Элемент.Имя;
   НовыйЭлемент.Доступность = Истина;
   НовыйЭлемент.Заголовок = ПреобразованиеСтрокиБезПробелов(Элемент.Имя);

 КонецЦикла;
 
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
 
  ДобавитьЭлемент();
 

КонецПроцедуры

 ////////////////////////

 

 

4 Comments

  1. v.l.
  2. vovant

    Здравствуйте!

    Спасибо за Ваше мнение. Интересно было посмотреть другие варианты.

    Эту функцию я писал не видя до этого других вариантов. Писал обработку загрузки справочника Номенклатуры из Excel, захотелось преобразовать наименования. Вот так через две попытки пришел к окончательной версии.

    Reply
  3. nick-max

    проверьте вашу обработку на строках:

    ТипДокументовРасчета

    Сумма

    ДокументыДляЕНВД

    СуммаСНДС

    СуммаБезНДС

    ДляФНСЗаКвартал

    ПФРДляОтчетности

    суммаВзноса

    ПередачаВПФР

    ПередачаВ_ПФР

    Отчет3НДФЛ

    КнигаПокупок1137

    Reply
  4. vovant

    Добавьте свои исключения!

    мИсключения = Новый Массив(); //Добавьте свои исключения

    мИсключения.Добавить(«НДС»);

    мИсключения.Добавить(«ГТД»);

    мИсключения.Добавить(«HTML»);

    мИсключения.Добавить(«XML»);

    мИсключения.Добавить(«ЕНВД»);

    мИсключения.Добавить(«ФНС»);

    мИсключения.Добавить(«ПФР»);

    мИсключения.Добавить(«3НДФЛ»);

    —————————— получается так:

    ТипДокументовРасчета [ b] тип документов расчета

    Сумма Сумма

    ДокументыДляЕНВД Документы для ЕНВД

    СуммаСНДС Сумма с НДС

    СуммаБезНДС Сумма без НДС

    ДляФНСЗаКвартал Для ФНС за квартал

    ПФРДляОтчетности ПФР для отчетности

    суммаВзноса сумма взноса

    ПередачаВПФР Передача в ПФР

    ПередачаВ_ПФР Передача в_ ПФР

    Отчет3НДФЛ Отчет 3НДФЛ

    КнигаПокупок1137
    Книга покупок1137[/ b]

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *