Перенести значения из реквизитов формы объект. См. УправлениеСвойствами.ПеренестиЗначенияИзРеквизитовФормыВОбъект.
// См. УправлениеСвойствами.ПеренестиЗначенияИзРеквизитовФормыВОбъект.
Процедура ПеренестиЗначенияИзРеквизитовФормыВОбъект(Форма, Объект = Неопределено, ПередЗаписью = Ложь) Экспорт
Приемник = Новый Структура;
Приемник.Вставить("ПараметрыСвойств", Неопределено);
ЗаполнитьЗначенияСвойств(Приемник, Форма);
Если НЕ Форма.Свойства_ИспользоватьСвойства
ИЛИ НЕ Форма.Свойства_ИспользоватьДопРеквизиты
ИЛИ (ТипЗнч(Приемник.ПараметрыСвойств) = Тип("Структура")
И Приемник.ПараметрыСвойств.Свойство("ВыполненаОтложеннаяИнициализация")
И Не Приемник.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация) Тогда
Возврат;
КонецЕсли;
Если Объект = Неопределено Тогда
ОписаниеОбъекта = Форма.Объект;
Иначе
ОписаниеОбъекта = Объект;
КонецЕсли;
СтарыеЗначения = ОписаниеОбъекта.ДополнительныеРеквизиты.Выгрузить();
ОписаниеОбъекта.ДополнительныеРеквизиты.Очистить();
Для каждого Строка Из Форма.Свойства_ОписаниеДополнительныхРеквизитов Цикл
Значение = Форма[Строка.ИмяРеквизитаЗначение];
Если Значение = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Строка.ТипЗначения.Типы().Количество() = 1
И (НЕ ЗначениеЗаполнено(Значение) Или Значение = Ложь) Тогда
Продолжить;
КонецЕсли;
Если Строка.Удалено Тогда
Если ЗначениеЗаполнено(Значение) И Не (ПередЗаписью И Форма.Свойства_СкрытьУдаленные) Тогда
НайденнаяСтрока = СтарыеЗначения.Найти(Строка.Свойство, "Свойство");
Если НайденнаяСтрока <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(ОписаниеОбъекта.ДополнительныеРеквизиты.Добавить(), НайденнаяСтрока);
КонецЕсли;
КонецЕсли;
Продолжить;
КонецЕсли;
// Поддержка строк гиперссылок.
ИспользоватьСтрокуВВидеСсылки = ИспользоватьСтрокуВВидеСсылки(
Строка.ТипЗначения, Строка.ВыводитьВВидеГиперссылки, Строка.МногострочноеПолеВвода);
НоваяСтрока = ОписаниеОбъекта.ДополнительныеРеквизиты.Добавить();
НоваяСтрока.Свойство = Строка.Свойство;
Если ИспользоватьСтрокуВВидеСсылки Тогда
АдресИПредставление = АдресИПредставление(Значение);
НоваяСтрока.Значение = АдресИПредставление.Представление;
Иначе
НоваяСтрока.Значение = Значение;
КонецЕсли;
// Поддержка строк неограниченной длины.
ИспользоватьНеограниченнуюСтроку = ИспользоватьНеограниченнуюСтроку(
Строка.ТипЗначения, Строка.МногострочноеПолеВвода);
Если ИспользоватьНеограниченнуюСтроку Или ИспользоватьСтрокуВВидеСсылки Тогда
НоваяСтрока.ТекстоваяСтрока = Значение;
КонецЕсли;
КонецЦикла;
Если ПередЗаписью Тогда
Форма.Свойства_СкрытьУдаленные = Ложь;
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
Получает значение реквизита формы
ПеренестиПользовательскиеМакеты (БСП)
Вернуть значения реквизитов объекта
ЗначениеРеквизитаОбъекта (БСП)
ЗначенияРеквизитовОбъектов (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)