Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
И срсредоточится на разработку языка, наконец добавив замыкания, Linq, указание типа для intellisense
//1С при передаче по ссылке свойства ВК Список.Current
// при выходе из метода присваивает Список.Current значение переданное изначально
// Поэтому помечаем входной параметр как Знач
//Или же делать так, если методы изменить нельзя
// То нужно присвоить значение переменной и вызвать метод передав в параметрах эту переменную
//Стр=Список.Current;
//Зазача=ъ(Стр);
Функция Ъ(знач Ссылка)
// Создаем объект по ссылке полученной из методов .Net классов
//Физически это строка ёЁ<Ьъ>№_%)Э?&2 содержащее 12 символов для отделения их от других строк
//и индекс в спике исполуемых объектов на стороне .Net
рез = Новый("AddIn.NetObjectToNative.NetObjectToNative");
// И установим ссылку
рез.УстановитьСсылку(Ссылка);
возврат рез
КонецФункции // СоздатьОбъектПоСсылке()
//1С при передаче по ссылке свойства ВК Список.Current
// при выходе из метода присваивает Список.Current значение переданное изначально
// Поэтому помечаем входной параметр как Знач
//Или же делать так, если методы изменить нельзя
// То нужно присвоить значение переменной и вызвать метод передав в параметрах эту переменную
//Стр=Список.Current;
//Зазача=ъ(Стр);
Функция Ъ(знач Ссылка)
// Создаем объект по ссылке полученной из методов .Net классов
//Физически это строка ёЁ<Ьъ>№_%)Э?&2 содержащее 12 символов для отделения их от других строк
//и индекс в спике исполуемых объектов на стороне .Net
рез = Новый("AddIn.NetObjectToNative.NetObjectToNative");
// И установим ссылку
рез.УстановитьСсылку(Ссылка);
возврат рез
КонецФункции // СоздатьОбъектПоСсылке()
Врап.ДобавитьСиноним(HTTPClient.ПолучитьСсылку(),"ПолучитьСтроку","GetStringAsync");
Врап.ДобавитьСиноним(Task.ПолучитьСсылку(),"Результат","Result");
Стр=ъ(Клиент.ПолучитьСтроку(адрес)).Результат;
Стр=ъ(Клиент.GetStringAsync(uriSources)).Result;
Врап.ДобавитьСиноним(HTTPClient.ПолучитьСсылку(),"ПолучитьСтроку","GetStringAsync");
Врап.ДобавитьСиноним(Task.ПолучитьСсылку(),"Результат","Result");
Стр=ъ(Клиент.ПолучитьСтроку(адрес)).Результат;
Клиент = ъ(Врап.Новый(HttpClient.ПолучитьСсылку(),handler.ПолучитьСсылку()));
лист=ъНовый("System.Collections.Generic.List`1[System.Threading.Tasks.Task]");
сч=0;
Для каждого стр из ПолучитьСписокURL() Цикл
// Получаем задачу
Задача=ъ(Клиент.GetStringAsync(стр));
// Получаем данные привязанные к данной задаче
объект=ПолучитьДанныеДляЗадачи(стр,сч);
//public static void ВыполнитьЗадачу(System.Threading.Tasks.Task Задача, String ИмяМетода, Object ДанныеДляЗадача)
Врап.ВыполнитьЗадачу(Задача.ПолучитьСсылку(),"ПолученаСтраница",объект.ПолучитьСсылку());
сч=сч+1;
КонецЦикла;
Процедура ПолученаСтраница(знач данные)
Задача=ъ(данные.Задача);
ДанныеДляЗадача=ъ(данные.ДанныеДляЗадача);
Сообщить("Адрес="+ДанныеДляЗадача.Адрес);
Сообщить("Номер="+ДанныеДляЗадача.Номер);
// При возникновении ошибки при выполнении задачи
// IsFaulted будет истина, а в Exception будет ошибка
Если (Задача.IsFaulted) Тогда // Ошибка выполнения
ошибка=Задача.Exception;
Сообщить("Ошибка "+Врап.ВСтроку(ошибка));
// Если сделать как ниже 1С хочет присвоить Задача.Exception новое значение
// Даже если оно не было изменено
// Так как считает, что параметр передан по ссылке
// Сообщить("Ошибка "+Врап.ВСтроку(Задача.Exception));
возврат;
КонецЕсли;
результат=Задача.Result;
Сообщить(СтрДлина(результат));
КонецПроцедуры
Процедура ВнешнееСобытие(Источник, Событие, Данные)
// Вставить содержимое обработчика.
Сообщить("Источник="+Источник);
Сообщить("Событие="+Событие);
Сообщить("Данные="+Данные);
Если Источник="АсинхронныйВыполнитель" Тогда
Данные=ъ(Данные);
Выполнить(Событие+"(Данные)");
КонецЕсли;
КонецПроцедуры
ctrl+f Mithgol
хмммм, ему тут место, мне кажется.
Асинхронное программирование в 1С через .Net Native ВК