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

15.08.13

Разработка - Универсальные функции

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Функция ПреобразованиеСтрокиБезПробелов(СтрокаБезПробелов)-final.txt
.txt 2,00Kb
10 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

 

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

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

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

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

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

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

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


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

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

 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    5503    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    46638    dimanich70    83    

165

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    6890    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    57833    atdonya    31    

68

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

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

30.11.2023    8667    ke.92@mail.ru    17    

68

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    22884    YA_418728146    8    

174
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. v.l. 437 13.08.13 06:22 Сейчас в теме
2. vovant 43 13.08.13 09:54 Сейчас в теме
Здравствуйте!

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

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

ТипДокументовРасчета
Сумма
ДокументыДляЕНВД
СуммаСНДС
СуммаБезНДС
ДляФНСЗаКвартал
ПФРДляОтчетности
суммаВзноса
ПередачаВПФР
ПередачаВ_ПФР
Отчет3НДФЛ
КнигаПокупок1137
7. Valeriy009 23.05.25 16:59 Сейчас в теме
(3) Любите вы придумать =)

Функция РазделитьСтрокуПоЗаглавнымБуквам(СтрокаБезПробелов) Экспорт
	СтрокаБП = СтрЗаменить(СтрокаБезПробелов, "_", " ");
	Ответ = Лев(СтрокаБП, 1);
	ПредыдущаяБольшая = Истина;
	ПозапрошлаБольшая = Ложь;
	Длина = СтрДлина(СтрокаБП)-1;
	Для Инд = 2 По Длина Цикл
		КодСимвола = КодСимвола(СтрокаБП, Инд+1);
		СледующаяБольшая = (КодСимвола > 64 И КодСимвола < 91) Или (КодСимвола > 1039 И КодСимвола < 1072);

		ТекущийЗнак = Сред(СтрокаБП,Инд,1);
		КодСимвола = КодСимвола(ТекущийЗнак);
		Большая = (КодСимвола > 64 И КодСимвола < 91) Или (КодСимвола > 1039 И КодСимвола < 1072);
		Если Большая И Не ПредыдущаяБольшая Тогда
			Ответ = Ответ +" "+ ?(СледующаяБольшая, ТекущийЗнак, НРег(ТекущийЗнак));
		ИначеЕсли ПозапрошлаБольшая И ПредыдущаяБольшая И Не СледующаяБольшая Тогда	
			Ответ = Ответ +" "+ НРег(ТекущийЗнак);
			ПредыдущаяБольшая = Ложь;
		Иначе
			Ответ = Ответ + ТекущийЗнак;
		КонецЕсли; 
		ПозапрошлаБольшая = ПредыдущаяБольшая;
		ПредыдущаяБольшая = Большая;
 	КонецЦикла;
	Ответ = Ответ + Прав(СтрокаБП, 1);
	
	Возврат Ответ;
КонецФункции
Показать
sibelectrocom; +1 Ответить
8. nick-max 255 23.05.25 21:11 Сейчас в теме
4. vovant 43 13.08.13 16:52 Сейчас в теме
Добавьте свои исключения!

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

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

ТипДокументовРасчета [ b] тип документов расчета
Сумма Сумма
ДокументыДляЕНВД Документы для ЕНВД
СуммаСНДС Сумма с НДС
СуммаБезНДС Сумма без НДС
ДляФНСЗаКвартал Для ФНС за квартал
ПФРДляОтчетности ПФР для отчетности
суммаВзноса сумма взноса
ПередачаВПФР Передача в ПФР
ПередачаВ_ПФР Передача в_ ПФР
Отчет3НДФЛ Отчет 3НДФЛ
КнигаПокупок1137
Книга покупок1137[/ b]
Valeriy009; +1 Ответить
5. e-rogov 6 23.02.23 19:39 Сейчас в теме
немного проще

//&НаКлиентеНаСервереБезКонтекста
Функция СтрРазделитьПоЗаглавнымБуквам(СтрокаБезПробелов) Экспорт // ПреобразованиеСтрокиБезПробелов
	МассБукофф = Новый Массив();
	Для НомБукфы = 1 По СтрДлина(СтрокаБезПробелов) Цикл
		ЗнчБукфы = Сред(СтрокаБезПробелов, НомБукфы, 1);
		Если ЗнчБукфы = ТРег(ЗнчБукфы) И МассБукофф.Количество() И МассБукофф[МассБукофф.ВГраница()] <> ВРег(МассБукофф[МассБукофф.ВГраница()]) Тогда
			МассБукофф.Добавить(" ");
		КонецЕсли;
		МассБукофф.Добавить(ЗнчБукфы);
	КонецЦикла;
	Возврат СтрЗаменить(СтрСоединить(МассБукофф, ""), "  ", " ");
КонецФункции // СтрРазделитьПоЗаглавнымБуквам
Показать
6. Tom_Plank 28.06.24 11:32 Сейчас в теме
Вставлю свои 5 копеек

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