1С 8.3 Метод ЗаполнитьЗначенияСвойств() - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Метод ЗаполнитьЗначенияСвойств()

Данные > Примеры кода 1С > 1С 8.3 Процедуры и Функции
Перейти в раздел примеры кода 1С 8.3:
Синтаксис:
ЗаполнитьЗначенияСвойств(Приемник, Источник, [СписокСвойств], [ИсключаяСвойства]);

// Копирует свойства одного объекта в одноименные свойства другого. Сопоставление свойств производится по именам.
// Если указан параметр СписокСвойств, то в заполнении участвуют только они, параметр ИсключаяСвойства игнорируется.
// В противном случае, если указан параметр ИсключаяСвойства, свойства перечисленные в нем, исключаются из обработки.
Приемник (обязательный параметр) - Произвольный - Значение, чьи свойства будут заполнены значениями соответствующих свойств Источника. Внимание! Значение данного параметра не может быть примитивного типа!

Источник (обязательный параметр) - Произвольный - Значения свойств данного объекта будут установлены в соответствующие свойства Приемника. Внимание! Значение данного параметра не может быть примитивного типа!

СписокСвойств - Строка - Ограничивает список имен свойств которые необходимо заполнить. Имена свойств указываются через запятую. Если параметр опущен, то копируются только те свойства, которые представлены одновременно и в Источнике, и в Приемнике.

ИсключаяСвойства - Строка - Список имен свойств Приемника, разделенный запятыми, которые необходимо исключить из заполнения.  Если свойства, указанного в параметре не окажется в Приемнике, будет вызвано исключение.
Пример использования ЗаполнитьЗначенияСвойств() при заполнении документа в 1С 8.3:
Процедура ПримерМетодаЗаполнитьЗначенияСвойств()

   Накладная = Документы.Накладная.СоздатьДокумент();

   // Заполняем накладную на основании счёта
   ЗаполнитьЗначенияСвойств(Накладная, СчетНаОплату, , "Дата, Проведен, ПометкаУдаления");

   // Заполняем табличную часть накладной
   Для Каждого СтрокаСчета Из СчетНаОплату.Услуги Цикл

       СтрокаНакладной = Накладная.Услуги.Добавить();
       // Заполняем значения очередной строки табличной части
       ЗаполнитьЗначенияСвойств(СтрокаНакладной, СтрокаСчета);

   КонецЦикла;

КонецПроцедуры
Пример использования ЗаполнитьЗначенияСвойств() при заполнении структуры в 1С 8.3:
Процедура ПримерМетодаЗаполнитьЗначенияСвойств()

   ИсточникСтруктураА = Новый Структура("Наименование,Код", "Паладий", 1);
   ПриемникСтруктураА = Новый Структура("Наименование,Код");

   ЗаполнитьЗначенияСвойств(ПриемникСтруктураА, ИсточникСтруктураА);
   Сообщить(ПриемникСтруктураА.Наименование + " (" + ПриемникСтруктураА.Код + ")");
   //Паладий (1)

   ИсточникСтруктураБ = Новый Структура("Наименование,Код", "Золото", 2);
   ПриемникСтруктураБ = Новый Структура("Наименование,Код");

   ЗаполнитьЗначенияСвойств(ПриемникСтруктураБ, ИсточникСтруктураБ, "Наименование");
   Сообщить(ПриемникСтруктураБ.Наименование + " (" + ПриемникСтруктураБ.Код + ")");
   //Золото ()

   ИсточникСтруктураВ = Новый Структура("Наименование,Код", "Серебро", 3);
   ПриемникСтруктураВ = Новый Структура("Наименование,Код");

   ЗаполнитьЗначенияСвойств(ПриемникСтруктураВ, ИсточникСтруктураВ, , "Код");
   Сообщить(ПриемникСтруктураВ.Наименование + " (" + ПриемникСтруктураВ.Код + ")");
   //Серебро ()

КонецПроцедуры
При использовании популярного метода ЗаполнитьЗначенияСвойств(), если в приёмнике полей - единицы, а в источнике сотни, то желательно добавлять список, в котором будут перечислены все свойства для заполнения. При пустом параметре СписокСвойств, выполнение метода подтормаживает. Разница в скорости выполнения становиться ещё более значительной, когда источник или приемник имеют разные типы.
Тест метода ЗаполнитьЗначенияСвойств() в 1С 8.3:
Функция ТестМетодаЗаполнитьЗначенияСвойств()

   СтруктураИсточник = Новый Структура;
   СтруктураИсточник.Вставить("Свойство1", 1);
   СтруктураИсточник.Вставить("Свойство2", 1);
   СтруктураИсточник.Вставить("Свойство3", 1);
   СтруктураИсточник.Вставить("Свойство4", 1);
   СтруктураИсточник.Вставить("Свойство5", 1);

   СтруктураПриемник = Новый Структура;
   Для Сч = 1 По 700 Цикл
       СтруктураПриемник.Вставить("Свойство" + Формат(Сч, "ЧГ="), 1);
   КонецЦикла;

   НачалоЗамера = ТекущаяУниверсальнаяДатаВМиллисекундах();
   Для Сч = 1 По 10000 Цикл
       // Вариант 1 434мс
       // ЗаполнитьЗначенияСвойств(СтруктураИсточник, СтруктураПриемник);
       // Вариант 2 16мс
       ЗаполнитьЗначенияСвойств(СтруктураПриемник, СтруктураИсточник);
   КонецЦикла;

   Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - НачалоЗамера;
   Сообщить("Длительность, мс: " + Длительность);

   Возврат Длительность;

КонецФункции
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 06.09.2024
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому