delegateпакет
Пакет лежит в основном пуле хаба: короткой формы достаточно, если хаб прописан сервером пакетов в opm.cfg.
opm install delegateУстановка на opm младше 1.7.0
Легаси-флоу. Клиент младше 1.7.0 адрес пула в аргументе не разбирает: пул сначала прописывают сервером пакетов, и только потом ставят через него. На 1.7.0 и новее этот раздел не нужен — хватает команды из шапки страницы.
Добавьте пул сервером пакетов в opm.cfg. Порт продублирован в «Сервер»: у opm push поле «Порт» не читается.
{
"СервераПакетов": [
{
"Имя": "default",
"Сервер": "https://hub.1cdevelopers.ru",
"Порт": 443,
"ПутьНаСервере": "/api/v1/pools/default/download/",
"РесурсПубликацииПакетов": "/api/v1/pools/default/push",
"Приоритет": 1
}
]
}И ставьте пакет, указывая сервер:
opm install -m default delegateОписание
Делегаты
Обсудить [](https://gitter.im/EvilBeaver/oscript-library?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Библиотека предназначена для создания и выполнения делегатов/функторов.
Делегат представляет собой объект, который может ссылаться на метод другого объекта.
Например, можно выполнять функции-коллбэки или унифицированно выполнять методы у схожих объектов.
Также можно использовать для замены "некрасивых" и многословных объектов 1С - ОписаниеОповещения,
которые имеют мало смысла в мире OneScript.
Использование
Обработчик-процедура
// Подключение библиотеки
#Использовать Делегат
// Метод, вызываемый из делегата
Процедура Поздороваться(Имя) Экспорт
Сообщить("Привет, " + Имя + "!");
КонецПроцедуры
Делегат = Делегаты.Создать(ЭтотОбъект, "Поздороваться", "Мир");
Делегаты.Исполнить(Делегат); // или Делегат.Исполнить();
ДелегатНовыйМир = Делегаты.Создать(ЭтотОбъект, "Поздороваться");
ДелегатНовыйМир.Исполнить("Новый мир"); // или Делегаты.Исполнить(ДелегатНовыйМир, "Новый мир");
Обработчик-функция
// Подключение библиотеки
#Использовать Делегат
// Метод, вызываемый из делегата
Функция Поздороваться(Имя) Экспорт
Сообщить("Привет, " + Имя + "!");
Возврат Имя;
КонецФункции
Делегат = Делегаты.Создать(ЭтотОбъект, "Поздороваться", "Мир");
ИмяМир = Делегаты.Исполнить(Делегат); // или Делегат.Исполнить();
ДелегатНовыйМир = Делегаты.Создать(ЭтотОбъект, "Поздороваться");
ИмяНовыйМир = ДелегатНовыйМир.Исполнить("Новый мир"); // или Делегаты.Исполнить(ДелегатНовыйМир, "Новый мир");
Передача нескольких параметров
#Использовать Делегат
Процедура МетодСТремяПараметрами(Парам1, Парам2, Парам3) Экспорт
Журнал = СтрШаблон("%1%2, %3, %4!", Журнал, Парам1, Парам2, Парам3);
КонецПроцедуры
Делегат = Делегаты.Создать(ЭтотОбъект, "МетодСТремяПараметрами");
Массив = Делегаты.МассивПараметров(1, "Два", "Десять");
Делегат.Исполнить(Массив);
или можно указать параметры при создании Делегата
#Использовать Делегат
Процедура МетодСТремяПараметрами(Парам1, Парам2, Парам3) Экспорт
Сообщить(СтрШаблон("%1, %2, %3!", Парам1, Парам2, Парам3));
КонецПроцедуры
Массив = Делегаты.МассивПараметров(1, "Два", "Десять");
Делегат = Делегаты.Создать(ЭтотОбъект, "МетодСТремяПараметрами", Массив);
Делегат.Исполнить();