1С Возврат массива

Автор: | 05.12.2022

Как вернуть массив значений из функции в 1C

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

Функция возвращающая массив

В качестве примера рассмотрим простую задачу, допустим необходимо по наименования подразделения возвращать имена всех его сотрудников, т.е. пользователь выбирает подразделение нажимаем кнопку «Сотрудники» и видит их имена.

На форму документа добавим один реквизит «Подразделение» и команду «Сотрудники».

1С возврат массива

Далее для команды создадим процедуру, из которой будет вызываться функция возвращающая массив значений. В процедуру будем передавать выбранное подразделение. Создаем переменную «Подразделение» и присваиваем её значение объекта «Подразделение»

Подразделение = Объект.Подразделение;

Далее создаем переменную «Сотрудники» которой будет передаваться возвращаемое значение функции (массив).

Сотрудники = СотрудникиПодразделения(Подразделение);
1С как вернуть массив из функции

В функции напишем простой запрос, в который будет передаваться выбранное подразделение, по которому из справочника сотрудников будут выбираться имена.

 Запрос = Новый Запрос;
   	Запрос.Текст = 
	   "ВЫБРАТЬ
	   |	Сотрудники.Подразделение КАК Подразделение,
	   |	Сотрудники.Имя КАК Имя
	   |ИЗ
	   |	Справочник.Сотрудники КАК Сотрудники
	   |ГДЕ
	   |	Сотрудники.Подразделение = &Подразделение";
	
	   Запрос.УстановитьПараметр("Подразделение", Подразделение);

	
	   РезультатЗапроса  = Запрос.Выполнить(); 
	   ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

После этого создадим массив в который с помощью цикла добавим все выбранные запросом имена и вернем его.

Массив = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Имя = ВыборкаДетальныеЗаписи.Имя;
Массив.Добавить(Имя);
КонецЦикла;
Возврат Массив;
1С функция возвращающая массив

Остается только проверить как все это работает, запускаем отладку и поставим точку останова в команде, для того чтобы посмотреть что вернула функция. Для этого на переменной «Сотрудники» кликнем ПКМ и выберем пункт «Вычислить выражение».

1С возврат массива из функции

В открывшемся окне видим что вернулся массив, просмотреть его содержимое просто, выделяем его и на панели инструмент кликаем «Показать значения в отдельном окне», после этого откроется еще одно окно в котором будут отображены все элементы массива.

1С как вернуть массив значений из функции

Остается только обработать вернувшийся массив, но об этом в следующей статье. Вот таким образом можно возвращать из функции не одно значение а несколько. Если Вы знаете более правильный способ то обязательно расскажите о нём!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *