Особенности использования структур в качестве параметров процедур и функций
<em>Область применения: управляемое приложение, мобильное приложение, обычное приложение.</em>См. также
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
Основная статья: Параметры процедур и функций
Для процедур и функций (далее по тексту: функций) с параметрами типа Структура рекомендуется придерживаться следующего подхода к разработке.
1. Помимо функции, которая собственно реализует прикладную функциональность (далее по тексту: вызываемая функция), необходимо определить функцию-конструктор для создания новой структуры (далее по тексту функция-конструктор параметров). При этом сама функция-конструктор не принимает параметров, а только возвращает структуру-заготовку со свойствами, которую вызывающий код должен проинициализировать конкретными значениями и передать в вызываемую функцию.
Пример вызывающего кода:
Процедура ПриИзмененииНоменклатурыСервер(ИдентификаторТекущейСтроки) // Получаем новую структуру параметров. ПараметрыЗаполненияЦен = ЦенообразованиеКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(); // Заполняем параметры. ПараметрыЗаполненияЦен.Дата = Объект.Дата; ПараметрыЗаполненияЦен.Валюта = Объект.Валюта; ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ИдентификаторТекущейСтроки); // Передаем структуру параметров в прикладную функцию. ЦенообразованиеСервер.ЗаполнитьЦеныВСтрокеТЧ(ТекущаяСтрока, ПараметрыЗаполненияЦен); КонецПроцедуры
Пример функции-конструктора параметров в модуле ЦенообразованиеКлиентСервер:
Функция ПараметрыЗаполненияЦеныВСтрокеТЧ() Экспорт ПараметрыЗаполненияЦен = Новый Структура; ПараметрыЗаполненияЦен.Вставить("Дата"); ПараметрыЗаполненияЦен.Вставить("Валюта"); ПараметрыЗаполненияЦен.Вставить("ПересчитыватьСумму", Истина); ПараметрыЗаполненияЦен.Вставить("ОбязательныеПараметры","Дата,Валюта"); // обязательные параметры, которые нужно заполнять Возврат ПараметрыЗаполненияЦен; КонецФункции
Имена свойств структуры соответствуют параметрам вызываемой функции. При этом параметры со значениями по умолчанию должны быть явно проинициализированы в этой структуре.
2. В вызывающем коде не следует добавлять каких-либо других свойств в структуру параметров. Во избежание неоднозначности и скрытых ошибок все допустимые параметры вызываемой функции должны быть определены явно в функции-конструкторе параметров.