Библиотека универсальной обработки асинхронных вызовов

01.06.15

Разработка - Универсальные функции

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Конфигурация с библиотеками универсальных функций и обработки асинхронных вызовов
.cf 13,90Kb ver:1.0
8 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

 

Как только в платформе 8.3 появились возможности использования асинхронных вызовов, я сразу же решил попробовать их использовать, но столкнулся с целым рядом сложностей.

Например, во всех моих постоянно используемых конфигурациях была функция получения согласия на выполнение некоторого действия. Т.е. задавался вопрос, и если ответ утвердительный, функция возвращала Истина, иначе Ложь - простой механизм. Первым делом, я решил перевести на асинхронное исполнение именно эту функцию. Все оказалось весьма непросто и в результате появилась данная библиотека. Результат перевода на асинхронные рельсы рассматриваемого примера отражен в библиотеке функцией ПоказатьВопросИсполнения

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

К библиотеке прилагается конфигурация, содержащая данную библиотеку, а также библиотеку универсальных функций.

Библиотека универсальных функций опубликована здесь:

//infostart.ru/public/319157/

 

#Если Клиент Тогда
	
// Асинхронно показывает вопрос и инициализирует обработку ответа
// Параметры:
// ДополнительныеПараметры - Структура - Содержит параметры обработки результата асинхронного вызова (см. ОбработкаРезультатаОповещения).
//
// Описание других параметров см. в описании процедуры ПоказатьВопрос
//
Процедура ПоказатьВопросИсполнения(ТекстВопроса,ДополнительныеПараметры,Кнопки = Неопределено,Таймаут = 60,КнопкаПоУмолчанию = Неопределено,Заголовок = "",КнопкаТаймаута = Неопределено) Экспорт
		
	ДополнительныеПараметры.Вставить("УсловиеРезультата",КодВозвратаДиалога.Да);
	ОписаниеОповещения = СоздатьОповещение(ДополнительныеПараметры);
	
	Если Кнопки = Неопределено Тогда
		Кнопки = РежимДиалогаВопрос.ДаНет;
	КонецЕсли;
	
	Если КнопкаПоУмолчанию = Неопределено Тогда
		КнопкаПоУмолчанию = КодВозвратаДиалога.Нет;
	КонецЕсли;
	
	Если КнопкаТаймаута = Неопределено Тогда
		КнопкаТаймаута = КодВозвратаДиалога.Нет;
	КонецЕсли;
	
	ПоказатьВопрос(ОписаниеОповещения,ТекстВопроса,Кнопки,Таймаут,КнопкаПоУмолчанию,Заголовок,КнопкаТаймаута);
	
КонецПроцедуры

// Асинхронно осуществляет обработку результата оповещения
// Параметры:
// Результат - Тип зависит от обработчика - Значение содержит результат выполнения асинхронного вызова
// ДополнительныеПараметры - Структура - Содержит параметры обработки результата асинхронного вызова
// 		Ключи:
//  	"УсловиеРезультата" - Если неопределено, обработка осуществляется независимо от значения Результат, в противном случае обсработка выполняется если Результат равен данному значению
//  	"Команда" - Строка - Содержит текст команды, подлежащей выполнению в полной форме для оператора Выполнить
//  	"Сервер" - Булево - Если Истина, то команда выполяется на сервере, иначе на клиенте
//  	"ОбъектОповещения" - Если заполнен, то команда считается методом объекта, иначе выполняется независимо
//  	"ПередатьРезультат" - Булево - Если Истина, то Результат передается на сервер, иначе не передается
//
Процедура ОбработкаРезультатаОповещения(Результат,ДополнительныеПараметры) Экспорт
	
	УсловиеРезультата = ПолучитьЗначениеПоКлючу(ДополнительныеПараметры,"УсловиеРезультата");
	Если УсловиеРезультата = Неопределено или Результат = УсловиеРезультата Тогда
		ТекстКоманды = ПолучитьЗначениеПоКлючу(ДополнительныеПараметры,"Команда",Тип("Строка"));
		ТипБулево = Тип("Булево");
		Если не ПустаяСтрока(ТекстКоманды) Тогда
			ПередатьНаСервер = ПолучитьЗначениеПоКлючу(ДополнительныеПараметры,"Сервер",ТипБулево);
			ОбъектОповещения = ПолучитьЗначениеПоКлючу(ДополнительныеПараметры,"ОбъектОповещения");
			Если ОбъектОповещения = Неопределено Тогда
				КомандаИсполнения = ТекстКоманды;
			Иначе	
				КомандаИсполнения = "ОбъектОповещения."+ТекстКоманды;
			КонецЕсли; 
			Если ПередатьНаСервер Тогда
				ПередатьРезультат = ПолучитьЗначениеПоКлючу(ДополнительныеПараметры,"ПередатьРезультат",ТипБулево);
				Если ПередатьРезультат Тогда
					ВыполнитьОповещениеНаСервере(ОбъектОповещения,КомандаИсполнения,Результат);
				Иначе
					ВыполнитьОповещениеНаСервере(ОбъектОповещения,КомандаИсполнения);
				КонецЕсли; 
			Иначе	
				Выполнить(КомандаИсполнения);
			КонецЕсли; 
		КонецЕсли; 
	КонецЕсли;
	
КонецПроцедуры

// Выполняется при возникновении ошибок обработки оповещения
//
Процедура ОбработкаОшибокОповещения() Экспорт
	Сообщить("В процессе обработки оповещения возникла ошибка по причине: "+ОписаниеОшибки());
КонецПроцедуры

// Создает и возвращает описание оповещения
// Параметры:
// ДополнительныеПараметры - Структура - Содержит параметры обработки результата асинхронного вызова (см. ОбработкаРезультатаОповещения).
//
Функция СоздатьОповещение(ДополнительныеПараметры = Неопределено) Экспорт
	
	Если ДополнительныеПараметры = Неопределено Тогда
		ДополнительныеПараметры = Новый Структура;	
	КонецЕсли;
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ОбработкаРезультатаОповещения",АсинхронныеВызовы,ДополнительныеПараметры,"ОбработкаОшибокОповещения",АсинхронныеВызовы);
	Возврат ОписаниеОповещения;
	
КонецФункции
	
#КонецЕсли 	

// Выполняет команду обработки оповещения на сервере (см. ОбработкаРезультатаОповещения)
//
Процедура ВыполнитьОповещениеНаСервере(ОбъектОповещения,КомандаИсполнения,Результат = Неопределено) Экспорт
	Выполнить(КомандаИсполнения);
КонецПроцедуры

 

Вступайте в нашу телеграмм-группу Инфостарт

Асинхронные вызовы Модальность Библиотека Универсальные функции

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    4579    Abysswalker    11    

46

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    8509    DeerCven    15    

62

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    56210    dimanich70    85    

174

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7926    7    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    70650    atdonya    31    

72

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    9923    ke.92@mail.ru    17    

68
Для отправки сообщения требуется регистрация/авторизация