ПеренестиЗначенияИзРеквизитовФормыВОбъект (БСП)

Автор: 1С
ОбщийМодуль.УправлениеСвойствамиСлужебный
1С БСП

Перенести значения из реквизитов формы объект. См. УправлениеСвойствами.ПеренестиЗначенияИзРеквизитовФормыВОбъект.

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

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

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

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

ПриЧтенииНаСервере (БСП)

Получает значение реквизита формы

ПеренестиПользовательскиеМакеты (БСП)

Вернуть значения реквизитов объекта

ЗначениеРеквизитаОбъекта (БСП)

ЗначенияРеквизитовОбъектов (БСП)

ЗначениеРеквизитаОбъектов (БСП)

ПолучитьЗначениеРеквизитаПредмета (БСП)

TurboConf 6 - расширение Конфигуратора 1С