Книга: «1С:Предприятие.Элемент». Возможности встроенного языка
Назад: Процедуры и функции называются методами
Дальше: Глава 2. Типизация данных, переменные, константы. Передача параметров

Текучий интерфейс

В языке «1С:Предприятия» практически нигде не было возможности получить объект как результат выполнения его метода. Например, для того чтобы создать XML с определенным содержимым, нужно было сохранить в переменной объект записи, а затем снова и снова вызывать методы от этой переменной.

В результате такой код выглядел довольно громоздким. Например:

Процедура ЗаписьXml()

Запись = Новый ЗаписьXML;

Запись.ОткрытьФайл("C:\test\test.xml");

Запись.ЗаписатьНачалоЭлемента("product");

Запись.ЗаписатьАтрибут("code", "138");

Запись.ЗаписатьНачалоЭлемента("description");

Запись.ЗаписатьТекст("Холодильник");

Запись.ЗаписатьКонецЭлемента();

Запись.ЗаписатьНачалоЭлемента("price");

Запись.ЗаписатьТекст("30000");

Запись.ЗаписатьКонецЭлемента();

Запись.ЗаписатьНачалоЭлемента("count");

Запись.ЗаписатьТекст("20");

Запись.ЗаписатьКонецЭлемента();

Запись.ЗаписатьКонецЭлемента();

КонецПроцедуры

Теперь в языке «Элемента» для некоторых типов реализован текучий интерфейс (Fluent API). Его суть заключается в том, что методы возвращают контекст своего вызова, благодаря чему упрощается множественный вызов методов одного экземпляра. Внешне это выглядит как цепочка методов, вызываемых последовательно.

Например, чтобы выполнить предыдущий пример, создается экземпляр записи XML и от него через точку в каждой новой строке вызываются соответствующие методы. Такая запись выглядит более простой и легче читается:

метод Скрипт()

исп ПотокЗаписи = новый Файл("C:\\test\\test.xml").ОткрытьПотокЗаписи()

пер Запись = новый ЗаписьXml(ПотокЗаписи)

Запись.ЗаписатьНачалоЭлемента("product")

.ЗаписатьАтрибут("code", "138")

.ЗаписатьНачалоЭлемента("description")

.ЗаписатьТекст("Холодильник")

.ЗаписатьКонецЭлемента()

.ЗаписатьНачалоЭлемента("price")

.ЗаписатьТекст("30000")

.ЗаписатьКонецЭлемента()

.ЗаписатьНачалоЭлемента("count")

.ЗаписатьТекст("20")

.ЗаписатьКонецЭлемента()

.ЗаписатьКонецЭлемента()

;

Назад: Процедуры и функции называются методами
Дальше: Глава 2. Типизация данных, переменные, константы. Передача параметров