gifts2017

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

Опубликовал Владимир Антонов (vovant) в раздел Программирование - Практика программирования

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

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

 

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

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

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

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

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

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

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

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

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

 

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Функция ПреобразованиеСтрокиБезПробелов(СтрокаБезПробелов)-final.txt
.txt 2,00Kb
11.08.13
5
.txt 2,00Kb 5 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

2. Владимир Антонов (vovant) 13.08.13 09:54
Здравствуйте!

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

Эту функцию я писал не видя до этого других вариантов. Писал обработку загрузки справочника Номенклатуры из Excel, захотелось преобразовать наименования. Вот так через две попытки пришел к окончательной версии.
3. nick-max nick-max (nick-max) 13.08.13 16:17
проверьте вашу обработку на строках:

ТипДокументовРасчета
Сумма
ДокументыДляЕНВД
СуммаСНДС
СуммаБезНДС
ДляФНСЗаКвартал
ПФРДляОтчетности
суммаВзноса
ПередачаВПФР
ПередачаВ_ПФР
Отчет3НДФЛ
КнигаПокупок1137
4. Владимир Антонов (vovant) 13.08.13 16:52
Добавьте свои исключения!

мИсключения = Новый Массив(); //Добавьте свои исключения
мИсключения.Добавить("НДС");
мИсключения.Добавить("ГТД");
мИсключения.Добавить("HTML");
мИсключения.Добавить("XML");
мИсключения.Добавить("ЕНВД");
мИсключения.Добавить("ФНС");
мИсключения.Добавить("ПФР");
мИсключения.Добавить("3НДФЛ");

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

ТипДокументовРасчета [ b] тип документов расчета
Сумма Сумма
ДокументыДляЕНВД Документы для ЕНВД
СуммаСНДС Сумма с НДС
СуммаБезНДС Сумма без НДС
ДляФНСЗаКвартал Для ФНС за квартал
ПФРДляОтчетности ПФР для отчетности
суммаВзноса сумма взноса
ПередачаВПФР Передача в ПФР
ПередачаВ_ПФР Передача в_ ПФР
Отчет3НДФЛ Отчет 3НДФЛ
КнигаПокупок1137
Книга покупок1137[/ b]
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа