• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы lira89
  • Дата начала
L

lira89

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

Tulipe

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

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

Tulipe

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

vbs

Оно-то конечно.

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

Tulipe

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

vbs

Схоластика все это. Проблема выеденного яйца не стоит, и обсуждать тут особо нечего
 
E

evgenyatam

После создания нового элемента наименование старого теряется вместе со ссылкой на него. Кроме того разрушается выборка.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!