Перейти к содержанию

Вызов вложенного конструктора Структуры при вызове функций

Не рекомендуется при вызове функций использовать вложенный конструктор структуры: Новый Структура(...). Вложенное объявление структуры допустимо только в тех случаях, когда количество её свойств небольшое (нужно ориентироваться на количество свойств не более трех).

Неправильно

ЗаполнитьЦены(
  Объект.Товары, // Табличная часть
  , // Массив строк или структура отбора
  Новый Структура( // Параметры заполнения
   "Дата, Валюта, Соглашение, ПоляЗаполнения",
   Объект.Дата,
   Объект.Валюта,
   Объект.Соглашение,
   "Цена, СтавкаНДС, ВидЦены, СрокПоставки"
  ),
  Новый Структура( // Структура действий с измененными строками
   "ПересчитатьСумму, ПересчитатьСуммуСНДС, ПересчитатьСуммуНДС, ПересчитатьСуммуРучнойСкидки, ОчиститьАвтоматическуюСкидку, ОчиститьСуммуВзаиморасчетов",
   "КоличествоУпаковок", СтруктураПересчетаСуммы, СтруктураПересчетаСуммы, "КоличествоУпаковок", Неопределено, Неопределено
  )
 );

Правильно

ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, СтавкаНДС, ВидЦены, СрокПоставки");

ДействияСИзмененнымиСтроками = Новый Структура;
ДействияСИзмененнымиСтроками.Вставить("ПересчитатьСумму","КоличествоУпаковок");
ДействияСИзмененнымиСтроками.Вставить("ПересчитатьСуммуСНДС", ПараметрыПересчетыСуммы);
ДействияСИзмененнымиСтроками.Вставить("ПересчитатьСуммуНДС", ПараметрыПересчетыСуммы);
ДействияСИзмененнымиСтроками.Вставить("ПересчитатьСуммуРучнойСкидки","КоличествоУпаковок");
ДействияСИзмененнымиСтроками.Вставить("ОчиститьАвтоматическуюСкидку");
ДействияСИзмененнымиСтроками.Вставить("ОчиститьСуммуВзаиморасчетов ");

ЗаполнитьЦены(Объект.Товары, ПараметрыЗаполнения, ДействияСИзмененнымиСтроками);

См. также

Экранирование кода

// sonar:NestedConstructorCall:off
// sonar:NestedConstructorCall:on