Собственные типы

Собственные типы — это типы, уникальные для вашего модуля. Вы объявляете их самостоятельно, используя в качестве базового типа один из стандартных типов Перечисление, Объект или Исключение. Эти типы можно использовать только в методах того модуля, где они объявлены.

Перечисление

Перечисление — это новый тип, множество значений которого представляет собой явно заданный набор идентификаторов.

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

перечисление ВидСообщения
    Важное,
    Обычное умолчание,
    Второстепенное
;

метод Скрипт()
    // Используется значение перечисления по умолчанию.
    пер Важность: ВидСообщения
    ОтправитьСообщение("текст сообщения", Важность)
    
    // Значение перечисления указано явно.
    ОтправитьСообщение("проблема!", ВидСообщения.Важное)
;

метод ОтправитьСообщение(Текст: Строка, Вид: ВидСообщения)
;

Подробнее про перечисления.

Структура

Структура — это тип, содержащий несколько именованных значений произвольных типов. Структура состоит из полей. Каждое поле имеет тип, указанный при объявлении типа структуры.

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

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

Преимущества структуры:
  • нет необходимости документировать,
  • доступна контекстная подсказка.
Табл. 1. Пример использования структуры
«1С:Шина»
структура Товар
    обз знч Наименование: Строка
    пер Артикул: Строка
    пер Цена: Число
;

метод Скрипт()
    пер ПервыйТовар = новый Товар("Холодильник", "М50", 5300)
    пер ВторойТовар = новый Товар("Пылесос")
    
    ВторойТовар.Артикул = "VC20"
    ВторойТовар.Цена = 5000
;
1С:Предприятие 8
Товар = Новый Структура("Наименование, Артикул, Цена", "Холодильник", "М50", 5300);
Товар.Наименование = "Утюг";
Товар.Цена = "хорошая";
Товар = Новый Структура("Вес, Рост", 80, 180);

Подробнее про структуры.

Исключение

Исключение — это новый тип, содержащий набор данных, который описывает обнаруженную ошибку.

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

структура ДанныеПоСотруднику
    обз пер ФИО: Строка
    обз пер ТабельныйНомер: Число
;

исключение ИсключениеНеверныйФорматФайла
    обз пер ИмяФайла: Строка
;

@НаСервере
метод Скрипт(Путь: Строка)
    пер Результат: Массив<ДанныеПоСотруднику>
    пер ФайлыСДаннымиОСотрудниках = Файлы.Найти(Путь)
    для Файл из ФайлыСДаннымиОСотрудниках
        попытка
            Результат.Добавить(ПрочитатьДанные(Файл))
        поймать Искл: ИсключениеНеверныйФорматФайла
            ОбработатьИсключение(Искл)
        поймать Искл: Исключение
            // обработка других исключений
        ;
    ;
    // ...
;

@НаСервере
метод ПрочитатьДанные(Файл: Файл): ДанныеПоСотруднику
    пер Данные: ДанныеПоСотруднику

    // считывание данных в структуру
    // ...
    выбросить новый ИсключениеНеверныйФорматФайла(
        "Неверный формат. Недопустимое поле %Поле", Файл.Путь)

    // ...
    возврат Данные
;

метод ОбработатьИсключение(Искл: ИсключениеНеверныйФорматФайла)
// обработка
;

Другие отличия от встроенного языка:

Подробнее про исключение.