Записки программиста 1с

Использование структур в функциях 1с.

Использование структур в функциях 1с позволяет передать более 1 значения из функций.

Рассмотрим пример создания функций в 1с : Предприятие с применением структур.

Постановка задачи: По Фамилии Студента получить получить его:

1. Специальность;
2. Курс;
3. Группа;
4. Номер Документа Прием;
5.Дата Документа Прием;
Подготовительные мероприятия:

Во-первых создадим несколько справочников.

1. Справочник Физические Лица
2. Специальности
3. Группы

Использование структур в функциях 1с

Во-вторых сделаем два перечисления:

  1. Курсы
  2. Статус Студента
Использование структур в функциях 1с

В-третьих создадим Регистр Сведений Движение Контингента:

Использование структур в функциях 1с

В четвертых спроектируем документ Прием. Документ будет содержать следующие Реквизиты:

Использование структур в функциях 1с

Далее настроим движение для нашего документа:

Настройка движения документа 1с

Код движения документа:

Процедура ОбработкаПроведения(Отказ, Режим)
	//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

	// регистр ДвижениеКонтингента
	Движения.ДвижениеКонтингента.Записывать = Истина;
	Для Каждого ТекСтрокаСтудентыСписок Из СтудентыСписок Цикл
		Движение = Движения.ДвижениеКонтингента.Добавить();
		Движение.Физлицо = ТекСтрокаСтудентыСписок.Физлицо;
		Движение.Группа = Группа;
		Движение.Специальность = Специальность;
		Движение.Курс = Курс;
		Движение.Статус = ТекСтрокаСтудентыСписок.Статус;
	КонецЦикла;

	//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

Сделаем обработку для вывода информации о номере и дате документа Прием по Физическому лицу. Обработка будет содержать только один Реквизит Физическое лицо:

Обработка 1с

Начнем использование структур в функциях 1с, для этого создадим новую структуру.

параметры1=новый структура();

Заполним структуру параметры1 после извлечения информации при помощи запроса.

параметры1.Вставить("Дата",ВыборкаДетальныеЗаписи.Дата);
параметры1.Вставить("Номер",ВыборкаДетальныеЗаписи.Номер);

Полный код функции выглядит следующим образом:

физлицо=справочники.ФилЛица.НайтиПоНаименованию(физлицоСтрока);
	параметры1=новый структура();
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ДвижениеКонтингента.Регистратор.Дата КАК Дата,
		|	ДвижениеКонтингента.Регистратор.Номер КАК Номер
		|ИЗ
		|	РегистрСведений.ДвижениеКонтингента КАК ДвижениеКонтингента
		|ГДЕ
		|	ДвижениеКонтингента.Физлицо = &Физлицо";
	
	Запрос.УстановитьПараметр("Физлицо", Физлицо);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
		параметры1.Вставить("Дата",ВыборкаДетальныеЗаписи.Дата);
		параметры1.Вставить("Номер",ВыборкаДетальныеЗаписи.Номер);
	КонецЦикла;
	
	возврат Параметры1;

Код процедуры получения информации на Клиенте выглядит так:

&НаКлиенте
Процедура Команда2(Команда)
физлицоСтрока=элементы.Физлицо.ТекстРедактирования;//Объект.Физлицо;
статус=Команда3НаСервере(физлицоСтрока);
//сообщить(статус);
сообщить(“номер=”+статус.номер);
сообщить(“дата=”+статус.дата);
КонецПроцедуры

Итого использование структуры состоит из 2-х частей:

Во-первых создание структуры. В нашем примере на стороне Сервера:

параметры1=новый структура();
параметры1.Вставить("Дата",ВыборкаДетальныеЗаписи.Дата);
параметры1.Вставить("Номер",ВыборкаДетальныеЗаписи.Номер);

Как известно, структура в 1с 8.3 – это программная коллекция значений , содержащая набор элементов “Ключ” и “Значение”. В нашем примере структура параметры1 состоит из 2-х пар:

  • Ключ “Дата” – Значение ВыборкаДетальныеЗаписи.Дата
  • Ключ “Номер” – Значение ВыборкаДетальныеЗаписи.Номер

Во-вторых получение информации из структуры.

статус=Команда3НаСервере(физлицоСтрока);
сообщить("номер="+статус.номер);
сообщить("дата="+статус.дата);

Переменная статус получит из функции структуру. Структура содержит две пары значений.

Для доступа к значениям Структуры применяется операция разыменования: указывается имя переменной, объявленной как Структура, а затем Ключ значения через точку. Разыменование возможно как слева от оператора присваивания, так и справа.

Получение информации производится из структуры так:

Номер=статус.номер;
Дата=статус.дата;

Ссылка на файл Информационной базы: Ссылка.

Один ответ на “Использование структур в функциях 1с.

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

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