Оператор Новый
Встроенный язык 1С является предметно-ориентированным, но некоторые возможности объектно-ориентированных языков программирования в нем присутствуют. Например, создание объектов, обращение к свойствам и методам объекта.
Для создания нового объекта используется оператор Новый. Результатом данного оператора будет значение указанного типа. Например:
1 2 3 4 5 6 7 8 9 |
//в переменной Массив будет ссылка на объект типа Массив Массив = Новый Массив(); //в переменной Структура будет ссылка на объект типа Структура Структура = Новый Структура(); //если используется конструктор без параметров, то можно не указывать скобки. Массив = Новый Массив; Структура = Новый Структура; |
Оператор Новый выделяет память для объекта, после этого вызывает его конструктор. Конструктор — некое действие, которое создает «заготовку» объекта. Конструктор вызывается при создании нового объекта. Изменить конструктор из встроенного языка 1С нельзя.
С помощью оператор Новый можно создавать прикладные объекты (справочники, документы и т.п.):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//предположим, что у нас есть переменная УИД, в которой хранится //уникальный идентификатор одного из элементов справочника Товары Массив = Новый Массив; Массив.Добавить(УИД); //в конструктор передаем тип данных значения, которое хотим создать //и массив с уникальным идентификатором Спр = Новый ("СправочникСсылка.Товары", Массив); //в результате в переменной Спр будет ссылка на элемент справочника Товары //из нее можно получить объект и выполнить какие-либо действия СпрОб = Спр.ПолучитьОбъект(); СпрОб.Код = "1"; СпрОб.Наименование = "тест"; СпрОб.Записать(); |
Обращение к свойствам и методам объектов
Свойства — это некие переменные объекта, которые хранят значения и определяют состояние объекта. Например, у объекта с типом СправочникОбъект.Товары могут быть свойства: Наименование, Код, Артикул и т.п. Как правило свойства доступны как для чтения, так и для изменения. К свойствам объекта можно обращаться через точку или через квадратные скобки от имени переменной:
1 2 3 4 5 6 7 8 9 |
//в переменной СправочникОбъект будет ссылка на объект типа //СправочникОбъект.Товары СправочникОбъект = Справочники.Товары.СоздатьЭлемент(); //меняем его свойства СправочникОбъект.Наименование = "Диван"; СправочникОбъект.Код = "000000007"; //можно так СправочникОбъект["Наименование"] = "Диван"; СправочникОбъект["Код"] = "000000007"; |
Методы — это процедуры и функции, которые можно вызывать у объектов. Вызов метода выполняется через точку от имени переменной:
1 2 3 4 5 |
//в переменной СправочникОбъект будет ссылка на объект типа //СправочникОбъект.Товары СправочникОбъект = Справочники.Товары.СоздатьЭлемент(); //вызов метода УстановитьНовыйКод СправочникОбъект.УстановитьНовыйКод(); |
Есть ли ООП в 1С?
Холиварный вопрос. Однозначного ответа нет. С одной стороны в 1С можно создавать объекты, можно создавать новые классы (например, новый справочник или новый документ), хотя полностью произвольный класс создать уже не получится. В 1С есть инкапсуляция (да, в 1С нет модификаторов доступа, но инкапсуляция и модификаторы доступа это не одно и то же). Есть наследование, хотя оно сильно ограничено. Есть полиморфизм. Можно сказать что ООП в 1С есть, но программировать в стиле ООП на 1С нельзя.
Сами 1С называют свой язык предметно-ориентированным.