Вопрос немного по теории

lira89

Well-known member
12.03.2010
154
0
#1
В приведенном ниже коде обработки осуществляется передача переменной в функцию. Здесь идет запись отдельных реквизитов справочника (Имя, Фамилия, отчество) и все работает корректно:
Код:
Функция ФормированиеНаименования(СпрФЛ) 
Стр = "";  
Стр =СокрЛП(СпрФЛ.Фамилия)+" "+СокрЛП(СпрФЛ.Имя)+" "+СокрЛП(СпрФЛ.Отчество);
Возврат Стр;
КонецФункции 
.........
Процедура Выполнить()
СпрФЛ = СоздатьОбъект("Справочник.ФизическиеЛица");
СпрФЛ.Новый();
СпрФЛ.КодСтудента = Табл2.КодСтудента;
СпрФЛ.Фамилия = Табл2.Фам;
СпрФЛ.Имя = Табл2.Имя;
СпрФЛ.Отчество = Табл2.Отч;
СпрФЛ.Записать();
СпрФЛ.Наименование = ФормированиеНаименования(СпрФЛ); 
СпрФЛ.Записать(); 
......
Вопрос: а можно ли в самой функции ФормированиеНаименования написать метод СоздатьОбъект и через объявленную таким способом переменную сформировать наименование, состоящее из записанных данных СпрФЛ.Фамилия, СпрФЛ.Имя, СпрФЛ.Отчество и как корректнее всего это сделать, возможно надо что-то изменить в процедуре Выполнить?
 
T

Tulipe

#2
Выкладываю пример, как прописано в моей базе
Код:
Функция ФормированиеНаименования(СпрФЛ)
Стр = "";  
Стр =СокрЛП(СпрФЛ.Фамилия)+" "+СокрЛП(СпрФЛ.Имя)+" "+СокрЛП(СпрФЛ.Отчество);
Возврат Стр;
КонецФункции 	

Процедура Выполнить() 
СпрФЛ = СоздатьОбъект("Справочник.ФизическиеЛица");
СпрФЛ.ВыбратьЭлементы();
Пока СпрФЛ.ПолучитьЭлемент()=1 Цикл 
СпрФЛ.Новый();
СпрФЛ.Наименование = ФормированиеНаименования(СпрФЛ.ТекущийЭлемент());
СпрФЛ.Записать(); 
КонецЦикла;	
КонецПроцедуры;
Зачем создавать объект во вспомогательной функции?
 
T

Tulipe

#4
Просто lira89 выложил создание и запись одного элемента. Как правило, нужно обрабатывать весь справочник целиком.
 

vbs

Well-known member
18.02.2007
1 708
1
#5
Оно-то конечно.

Но при надобности цикл любой мало-мальски грамотный программист организует.
А вот в твоем примере я так ничего и не понял - перебирается справочник, при получении каждого элемента создается новый и формирует наименование из текущего.
Вот я и спрашиваю : зачем ?
Да и уверенности, что правильно написано, у меня нет
 
T

Tulipe

#6
Виноват, строка с созданием нового элемента - лишняя. И не факт, что в справочнике lira89 уже имеются заполненные реквизиты с именем, фамилией...
 

vbs

Well-known member
18.02.2007
1 708
1
#7
Схоластика все это. Проблема выеденного яйца не стоит, и обсуждать тут особо нечего
 

evgenyatam

Well-known member
07.09.2007
175
0
#8
После создания нового элемента наименование старого теряется вместе со ссылкой на него. Кроме того разрушается выборка.