Разделение имен переменных (и не только) пробелами

06.04.20

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

Разделим стандартное имя переменной или как получить из "ПреведМедвед" "Превед медвед".

 

 
 КОД

 

Перем МассивЦифр;

Процедура КнопкаВыполнитьНажатие(Кнопка)
	Имя="ПреведМедвед";
	Итоговаястрока=ПолучитьНаименованиеИзИмени(Имя);
КонецПроцедуры
Функция ПолучитьНаименованиеИзИмени(Имя)
	ВсегоСимоволов=СтрДлина(Имя);
	Наименование="";
	для счетчикСимволов=1 по ВсегоСимоволов Цикл
		ТекущийСимвол=Сред(Имя,счетчикСимволов,1);
		Если счетчикСимволов=1 Тогда
			Наименование=Наименование+ТекущийСимвол;
			Продолжить;
		КонецЕсли;
		Если ТекущийСимвол="_" Тогда
			Наименование=Наименование+" ";
			Продолжить;
		КонецЕсли;
		Если счетчикСимволов=ВсегоСимоволов Тогда
			Наименование=Наименование+ТекущийСимвол;
			Продолжить;
		КонецЕсли;
		СледующийСимвол=Сред(Имя,счетчикСимволов+1,1);
			Если НРег(ТекущийСимвол)=ТекущийСимвол и Врег(СледующийСимвол)=СледующийСимвол и не Этоцифра(ТекущийСимвол) Тогда
			Наименование=Наименование+ТекущийСимвол+" ";
		Иначе
			Если Прав(Наименование,1)=" " и Врег(СледующийСимвол)<>СледующийСимвол Тогда
				Наименование=Наименование+НРег(ТекущийСимвол);
			Иначе
				Наименование=Наименование+ТекущийСимвол;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	Возврат Наименование;
КонецФункции
Функция Этоцифра(ТекущийСимвол)
	Если МассивЦифр.Найти(ТекущийСимвол)<>Неопределено Тогда
		возврат Истина;
	КонецЕсли;
	Возврат Ложь;
КонецФункции
МассивЦифр=Новый Массив;
МассивЦифр.Добавить("1");
МассивЦифр.Добавить("2");
МассивЦифр.Добавить("3");
МассивЦифр.Добавить("4");
МассивЦифр.Добавить("5");
МассивЦифр.Добавить("6");
МассивЦифр.Добавить("7");
МассивЦифр.Добавить("8");
МассивЦифр.Добавить("9");
МассивЦифр.Добавить("0");

Данное решение подойдет, например, тем кто сделал на СКД "набор данных - Объект" и желает добавить список полей в xml от СКД

 
 Пример xml описания числового поля для СКД

 

	ТекстШаблона0="<field xsi:type=""DataSetFieldField"">
	|<dataPath>";
	//ИмяПоля	
	ТекстШаблона1="</dataPath>
	|<field>";
	//ИмяПоля
	ТекстШаблона11="</field>
	|<title xsi:type=""v8:LocalStringType"">
	|	<v8:item>
	|		<v8:lang>ru</v8:lang>
	|		<v8:content>";
	//НаименованиеПоля
	ТекстШаблона2="</v8:content>
	|	</v8:item>
	|</title>
	|<valueType>
	|	<v8:Type>xs:decimal</v8:Type>
	|	<v8:NumberQualifiers>
	|		<v8:Digits>0</v8:Digits>
	|		<v8:FractionDigits>0</v8:FractionDigits>
	|		<v8:AllowedSign>Any</v8:AllowedSign>
	|	</v8:NumberQualifiers>
	|</valueType>
	|<appearance/>
	|<inputParameters/>
	|</field>
	|";
	МассивИмен=Новый Массив;
	// предполагается что здесь вы поместите имена в массив

	Итоговаястрока="";
	для каждого Имя из МассивИмен Цикл
		Итоговаястрока=Итоговаястрока+ТекстШаблона0+Имя+ТекстШаблона1+Имя+ТекстШаблона11+ПолучитьНаименованиеИзИмени(Имя)+ТекстШаблона2;
	КонецЦикла;

 

  

Надеюсь, я не изобрел велосипед на костылях, и кому-нибудь это будет полезно.

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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    4825    Abysswalker    11    

47

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

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

14.05.2025    9024    DeerCven    15    

63

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

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

21.05.2024    57913    dimanich70    85    

175

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

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

1 стартмани

18.03.2024    8138    7    John_d    13    

59

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

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

12.02.2024    72661    atdonya    31    

73

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

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

30.11.2023    10112    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. inclodes 31 07.04.20 03:19 Сейчас в теме
(1) Предложенный Вами "синонимайзер" действительно очень короток, однако он не корректно работает с нижними подчеркиваниями. Например "ДЗ_Нач" ваш вариант превратит в "ДЗ_ нач" а не в "ДЗ нач".
3. dhurricane 07.04.20 07:52 Сейчас в теме
(2) Мой комментарий скорее относится к последней фразе Вашего поста. Доработать учет символа "_" ведь никто не мешает. Плюс по приведенной мной ссылке можно найти еще одну ссылку на пост другого автора, решающего ту же самую задачу. И также без учета "_", но тем не менее.
Для отправки сообщения требуется регистрация/авторизация