ПредставлениеЗначения (БСП)

Автор: 1С
ОбщийМодуль.ИнтернетПоддержкаПользователейКлиентСервер
БСП

Представление значения. Функция возвращает строковое представление для произвольного значения.

// Функция возвращает строковое представление для произвольного значения.
//
// Параметры:
//  ОбрабатываемоеЗначение - Произвольный - значение произвольного типа, которое надо вывести в виде строки;
//  Разделитель1           - Строка - разделитель значений 1 (например, разделяет элементы массива или ключ и значение структуры или соответствия);
//  Разделитель2           - Строка - разделитель значений 2 (например, разделяет элементы структуры или соответствия);
//  Уровень                - Число  - Значение уровня, влияет на отступ.
//
// Возвращаемое значение:
//   Строка - строковое представление.
//
Функция ПредставлениеЗначения(ОбрабатываемоеЗначение, Разделитель1 = "", Разделитель2 = "", Знач Уровень = 0) Экспорт

	Результат = "";

	ТипЧисло                     = Тип("Число");
	ТипСтрока                    = Тип("Строка");
	ТипДата                      = Тип("Дата");
	ТипБулево                    = Тип("Булево");
	ТипСписокЗначений            = Тип("СписокЗначений");
	ТипМассив                    = Тип("Массив");
	ТипФиксированныйМассив       = Тип("ФиксированныйМассив");
	ТипСтруктура                 = Тип("Структура");
	ТипФиксированнаяСтруктура    = Тип("ФиксированнаяСтруктура");
	ТипСоответствие              = Тип("Соответствие");
	ТипФиксированноеСоответствие = Тип("ФиксированноеСоответствие");

	Если ТипЗнч(Уровень) <> ТипЧисло
			ИЛИ Уровень < 0 Тогда
		Уровень = 0;
	КонецЕсли;

	Если ТипЗнч(ОбрабатываемоеЗначение) = ТипСтрока Тогда
		Результат = СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень) + ОбрабатываемоеЗначение;
	ИначеЕсли ТипЗнч(ОбрабатываемоеЗначение) = ТипДата Тогда
		Результат = СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень) + Формат(ОбрабатываемоеЗначение, "ДЛФ=DT");
	ИначеЕсли ТипЗнч(ОбрабатываемоеЗначение) = ТипЧисло Тогда
		Результат = СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень) + Формат(ОбрабатываемоеЗначение, "ЧЦ=15; ЧДЦ=4; ЧРД=,; ЧРГ=' '; ЧН=0,0000; ЧГ=3,0");
	ИначеЕсли ТипЗнч(ОбрабатываемоеЗначение) = ТипБулево Тогда
		Результат = СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень) + Формат(ОбрабатываемоеЗначение, "БЛ=Ложь; БИ=Истина");
	ИначеЕсли ТипЗнч(ОбрабатываемоеЗначение) = ТипСписокЗначений Тогда
		Счетчик = 1;
		Для Каждого ТекущееЗначение Из ОбрабатываемоеЗначение Цикл
			Если Счетчик = ОбрабатываемоеЗначение.Количество() Тогда
				Результат = Результат
					+ СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень)
					+ СокрЛП(ТекущееЗначение.Значение);
			Иначе
				Результат = Результат
					+ СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень)
					+ СокрЛП(ТекущееЗначение.Значение) + Разделитель1;
			КонецЕсли;
			Счетчик = Счетчик + 1;
		КонецЦикла;
	ИначеЕсли (ТипЗнч(ОбрабатываемоеЗначение) = ТипМассив) ИЛИ (ТипЗнч(ОбрабатываемоеЗначение) = ТипФиксированныйМассив) Тогда
		Счетчик = 1;
		Для Каждого ТекущееЗначение Из ОбрабатываемоеЗначение Цикл
			Если Счетчик = ОбрабатываемоеЗначение.Количество() Тогда
				Результат = Результат
					+ СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень)
					+ СокрЛП(ТекущееЗначение);
			Иначе
				Результат = Результат
					+ СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень)
					+ СокрЛП(ТекущееЗначение) + Разделитель1;
			КонецЕсли;
			Счетчик = Счетчик + 1;
		КонецЦикла;
	ИначеЕсли (ТипЗнч(ОбрабатываемоеЗначение) = ТипСтруктура)
			ИЛИ (ТипЗнч(ОбрабатываемоеЗначение) = ТипФиксированнаяСтруктура) Тогда
		Для Каждого КлючЗначение Из ОбрабатываемоеЗначение Цикл
			Если (ТипЗнч(КлючЗначение.Значение) = ТипСтруктура)
					ИЛИ (ТипЗнч(КлючЗначение.Значение) = ТипФиксированнаяСтруктура) Тогда
				// Перед структурой вставить еще один разделитель.
				Результат =
					Результат
					+ СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень)
					+ КлючЗначение.Ключ
					+ Разделитель1
					+ Символы.ПС
					+ ПредставлениеЗначения(КлючЗначение.Значение, Разделитель1, Разделитель2, Уровень + 1) // С отступом
					+ Разделитель2;
			Иначе
				Результат =
					Результат
					+ СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень)
					+ КлючЗначение.Ключ
					+ Разделитель1
					+ ПредставлениеЗначения(КлючЗначение.Значение, Разделитель1, Разделитель2, 0) // Без отступа
					+ Разделитель2;
			КонецЕсли;
		КонецЦикла;
	ИначеЕсли (ТипЗнч(ОбрабатываемоеЗначение) = ТипСоответствие) ИЛИ (ТипЗнч(ОбрабатываемоеЗначение) = ТипФиксированноеСоответствие) Тогда
		Для Каждого КлючЗначение Из ОбрабатываемоеЗначение Цикл
			Если (ТипЗнч(КлючЗначение.Значение) = ТипСтруктура)
					ИЛИ (ТипЗнч(КлючЗначение.Значение) = ТипФиксированнаяСтруктура) Тогда
				// Перед структурой вставить еще один разделитель.
				Результат =
					Результат
					+ СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень)
					+ ПредставлениеЗначения(КлючЗначение.Ключ, Разделитель1, Разделитель2, Уровень + 1)
					+ Разделитель1
					+ Символы.ПС
					+ ПредставлениеЗначения(КлючЗначение.Значение, Разделитель1, Разделитель2, Уровень + 1) // С отступом
					+ Разделитель2;
			Иначе
				Результат =
					Результат
					+ СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов("  ", Уровень)
					+ ПредставлениеЗначения(КлючЗначение.Ключ, Разделитель1, Разделитель2, Уровень + 1)
					+ Разделитель1
					+ ПредставлениеЗначения(КлючЗначение.Значение, Разделитель1, Разделитель2, 0) // Без отступа
					+ Разделитель2;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;

	Возврат Результат;

КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

Base64ВСтроку (БСП)

КонтактнаяИнформацияПоПредставлению (БСП)

ПриЧтенииПредставленийНаСервере (БСП)

ПредставлениеСмТакже (БСП)

ПредставлениеВажный (БСП)

ПросклонятьПредставление (БСП)

ПредставленияЗаполнены (БСП)

ПредставлениеПисьма (БСП)

ПредставлениеРасписания (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз