[Alimir_BootModal_Login]

Внутренний язык программирования 1С 8.3 для начинающих программистов: структуры в 1С

Автор уроков и преподаватель школы: Владимир Милькин

На прошлом занятии мы познакомились с массивами. Сегодня на очереди следующий тип данных - Структура.

Тип данных Структура в языке 1С 8

Давайте я подведу вас к необходимости структур в языке 1С.

Пусть нам требуется хранить в программе информацию о некотором человеке, которая включает в себя фамилию, имя и отчество. Как лучше представить эти данные?

Можно, конечно, так:

Фамилия = "Пупкин";
Имя = "Василий";
Отчество = "Алибабаевич";

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

Возникает потребность связать эти три параметра (фамилия, имя и отчество) с одним объектом, который, давайте назовём Человек.

Можно поместить все три параметра в массив:

Человек = Новый Массив(3);
Человек[0] = "Пупкин";
Человек[1] = "Василий";
Человек[2] = "Алибабаевич";

Вроде бы цель достигнута - связали все три параметра с одним объектом. Но работать с таким объектом неудобно, потому что обращаться к значениям массива придется по числовому индексу, то есть, чтобы нам вывести отчество, придется написать:

Сообщить(Человек[2]); // вывод отчества человека

Что, конечно же, очень неудобно! Хотелось бы обращаться к параметрам объекта по их именам. Вот для этого и были придуманы Структуры.

Cтруктура - это составной объект, в который входят элементы любых типов, обращаться к которым можно по имени этих элементов.

С использованием структур предыдущий пример будет выглядеть так:

Человек = Новый Структура("Фамилия, Имя, Отчество");
Человек.Фамилия = "Пупкин";
Человек.Имя = "Василий";
Человек.Отчество = "Алибабаевич";
Сообщить(Человек.Отчество);

По приведенному выше примеру пройдите следующий тест:

Начать тест
Задание №34. Необходимо ввести имена и возраст трёх людей. Затем найти, кто из них самый старший и вывести его имя.

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

// объявляем массив с тремя ящиками
Люди = Новый Массив(3);
 
Для Шаг = 0 По 2 Цикл
    // вводим информацию по каждому из трёх людей
    // и сохраняем её в структуру, которую
    // кладём в соответствующую ячейку массива
    Люди[Шаг] = Новый Структура("Имя, Возраст");
    ВвестиСтроку(Люди[Шаг].Имя); // вводим имя
    ВвестиЧисло(Люди[Шаг].Возраст); // вводим возраст
КонецЦикла;
 
// изначально положим, что самым старшим
// является человек из первой ячейки массива
ИмяСамогоСтаршегоЧеловека = Люди[0].Имя;
НаибольшийВозраст = Люди[0].Возраст;
 
Для Шаг = 0 По 2 Цикл // пробежимся по всем людям
    // и сравним их возраста с наибольшим
    // возрастом на текущий момент
    Если Люди[Шаг].Возраст > НаибольшийВозраст Тогда
        // нашли человека, который старше предыдущего
        // сохраним его возраст
        НаибольшийВозраст = Люди[Шаг].Возраст;
        // и имя
        ИмяСамогоСтаршегоЧеловека = Люди[Шаг].Имя;
    КонецЕсли;
КонецЦикла;
 
ОткрытьЗначение(
    "Самый старший человек - " + 
    ИмяСамогоСтаршегоЧеловека + ". Ему " + 
    НаибольшийВозраст + " лет."
);

По аналогии с этим примером решите следующую задачу.

Задание №35. Необходимо ввести имена и вес четырёх человек, найти самого легкого из них и вывести его имя.

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся

Дополнение

Данный материал рассчитан на начинающих разработчиков. Если он показался вам слишком лёгким - рассмотрите другие примеры использования структур в 1С (ссылка).

Для учеников

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

Обязательно выполняйте все тесты и домашние задания, старайтесь улучшить свои результаты. Сверяйтесь с эталонными решениями только после самостоятельного выполнения задач.

На вопросы учеников — отвечаю по почте,  но прежде загляните в ЧАВО (ссылка) .

С уважением, Владимир Милькин