Гарантированно рабочий пример использования длительных операций на БСП с отображением прогресса. [Часть 1]

Публикация № 1260411 29.10.20

Разработка - БСП (Библиотека стандартных подсистем)

длительная операция фоновые задания БСП

В данной статье я предлагаю вам гарантированно действующий пример работы с длительными операциями в рамках Библиотеки стандартных подсистем. Так же рассмотрим некоторые новые функции последней версии БСП для работы с длительными операциями.

 

Введение

Привет всем! В данной статье предлагаю алгоритм по-шагового разбора примера создания "Длительной операции" на самой последней версии библиотеки стандартных подсистем (БСП) на момент публикации статьи - 3.1.3.303.

Вы спросите - для чего эта статья? уже неоднократно разбиралась эта тема, зачем повторять? К своему удивлению, здесь на ресурсе я не нашел НИ ОДНОЙ реально "работающей" статьи по длительным операциям. В примерах много лишнего, много воды, недосказанности, другие примеры - откровенно устарели.

Моя публикация "подводит черту актуальности" на текущую дату - 28.10.2020 - я привожу рабочий пример с "длительной операцией", с отображением прогресса как на основной форме, так и на форме "длительной операции".

В публикации я постараюсь придерживаться стандартов разработки, основанных на системе БСП.

В качестве примера будет разрабатываться внешняя обработка (я бы даже сказал шаблон), которая будет обращаться к созданному мной серверному общему модулю с функциями или процедурами длительных операций.

Не буду использовать расширения - не считаю нужным в этом примере. Так же посмотрим некоторые новые функции БСП для работы с "длительными операциями".

 

Разработка задания с отражением состояния на форме "Длительной операции"

Свою разработку я начну с написания общего серверного модуля, в котором размещу процедуру для длительной операции. Добавляем вот такой текст процедуры:

&НаСервере
Процедура ПровестиДокументы222(Параметры, АдресРезультата) Экспорт
	
	//МассивВозврат = Новый Массив;
	
	ПоискДляПроведения = Новый Запрос("ВЫБРАТЬ
	                                  |	РеализацияТоваровУслуг.Ссылка КАК Ссылка
	                                  |ИЗ
	                                  |	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
	                                  |ГДЕ
	                                  |	РеализацияТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
	                                  |	И РеализацияТоваровУслуг.Организация = &Организация
	                                  |
	                                  |УПОРЯДОЧИТЬ ПО
	                                  |	РеализацияТоваровУслуг.Дата");
	
	ПоискДляПроведения.УстановитьПараметр("Дата1", 	Параметры.ДатаНач1);
	ПоискДляПроведения.УстановитьПараметр("Дата2", 	Параметры.ДатаОкон1);
	ПоискДляПроведения.УстановитьПараметр("Организация", Параметры.Орг1);
	
	НашлиДокументы = ПоискДляПроведения.Выполнить().Выгрузить();
	
	ВсегоДокументов = НашлиДокументы.Количество();
	
	ТекДок = 1;
	
	Для Каждого Стр11 ИЗ НашлиДокументы Цикл
				
		Док = Стр11.Ссылка.ПолучитьОбъект();
		
		Док.Проведен 	= Ложь;
		Док.ПометкаУдаления = Ложь;
		
		Попытка
			Док.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
		Исключение
			Док.Записать(РежимЗаписиДокумента.Запись);
		КонецПопытки;
		
		ПроцентВыполнения = (ТекДок/ВсегоДокументов)*100;
		ПроцентВыполнения = Окр(ПроцентВыполнения,0);
		
		//МассивВозврат.Добавить(ПроцентВыполнения);
		
		// сообщаем "процент" и "текст сообщения"
		ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения,СокрЛП(Док.Ссылка));
		
		ТекДок = ТекДок + 1;
		
	КонецЦикла;
	
	//ПоместитьВоВременноеХранилище(МассивВозврат, АдресРезультата);
	
КонецПроцедуры	

 

Данная процедура очень простенькая, но для того, чтобы она работала и "отдавала" состояние пользователю нам нужно - во-первых правильно передать ей структуру параметров, чтобы она "запустилась" вообще и во-вторых - использовать функционал БСП сообщать прогресс "Процентом", "Текстом" - ДлительныеОперации.СообщитьПрогресс.

На этом разработка общего модуля так быстро завершена и я перейду к программированию внешней обработки, в которой напишем всю "обвязку" к длительной операции процедурыПровестиДокументы222.

Для начала нарисуем форму обработки:

Рис.1 Базовая форма внешней обработки для запуска длительной операции

 

Добавим в форму вот такие реквизиты:

Рис.2 Необходимые реквизиты и их типы

 

Пройдемся по реквизитам : ДатаНачала, ДатаОкончания и Организация - это необходимые реквизиты для запуска процедуры "на удаленке - в фоне".

Индикатор и СтрокаСостояния - вспомогательные реквизиты отображения на форме обработки

ИдЗадания - один из важных реквизитов (он не выводится на форму) - это уникальный идентификатор создаваемого фонового задания, по которому это задание можно будет "отловить" в дальнейшем.

 

Начнем с написания кода кнопки "Запустить операцию" на форме обработки. Он выглядит вот так - можно его просто скопировать и привязать действие к кнопке (как и все далее - будет сразу работать, кстати):

&НаКлиенте
Процедура ЗапуститьОперацию(Команда)
	
	ИДЗадания = "";
	Индикатор = 0;
	СтрокаСостояния = "";
	
	ПараметрыЗапуска = Новый Структура;
	ПараметрыЗапуска.Вставить("ДатаНач1", НачалоДня(ЭтаФорма.ДатаНачала));
	ПараметрыЗапуска.Вставить("ДатаОкон1",КонецДня(ЭтаФорма.ДатаОкончания));
	ПараметрыЗапуска.Вставить("Орг1",  ЭтаФорма.Организация);
	
	СтруктураФоновогоЗадания = ВыполнитьФоновоеЗаданиеНаСервере(ПараметрыЗапуска, УникальныйИдентификатор);
	ИДЗадания 	= СтруктураФоновогоЗадания.ИдентификаторЗадания;
	
	ПараметрыОжидания  = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
	ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
	ПараметрыОжидания.Интервал  = 2;
	
	ДлительныеОперацииКлиент.ОжидатьЗавершение(СтруктураФоновогоЗадания, Новый ОписаниеОповещения("ОбработатьДанные", ЭтотОбъект), ПараметрыОжидания);
	
КонецПроцедуры

В этой процедуре мы заполняем ПараметрыЗапуска  для структуры фонового задания, задаем вывод ПрогрессаВыполнения с интервалом на форму длительной операции. Также, мы "активируем" фоновое задание и "отслеживаем его" с помощью ДлительныеОперацииКлиент.ОжидатьЗавершение().

 

Опишем оповещение "ОбработатьДанные". Это оповещение вызывается при завершении фонового задания. Выглядит вот так:

&НаКлиенте
Процедура ОбработатьДанные(Результат, ДополнительныеПараметры) Экспорт

	ОтключитьОбработчикОжидания("ОбработчикОжиданияИндикатор");
	
	Если Результат = Неопределено Тогда
		Возврат;
	ИначеЕсли Результат.Статус = "Ошибка" Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Результат.ПодробноеПредставлениеОшибки);
		ЭтаФорма.СтрокаСостояния = "Ошибка";
	ИначеЕсли Результат.Статус = "Выполнено" Тогда
		ЭтаФорма.Индикатор = 100;
		ЭтаФорма.СтрокаСостояния = "Выполнено";
	КонецЕсли;
	
КонецПроцедуры

 

Теперь, опишем основную функцию внешней обработки ВыполнитьФоновоеЗаданиеНаСервере(). Выглядит она вот так:

&НаСервере
Функция ВыполнитьФоновоеЗаданиеНаСервере(ПараметрыЗапуска, УникальныйИдентификатор)
	
	НаименованиеЗадания = "Моя длительная операции";

	ВыполняемыйМетод = "ДлительныйМодуль.ПровестиДокументы222";
	
	ПараметрыВыполнения 	= ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
	ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания;
	ПараметрыВыполнения.ЗапуститьВФоне 	= Истина;
	ПараметрыВыполнения.Вставить("ИдентификаторФормы", УникальныйИдентификатор); 
	
	СтруктураФоновогоЗадания = ДлительныеОперации.ВыполнитьВФоне(ВыполняемыйМетод, ПараметрыЗапуска, ПараметрыВыполнения);
	
	Возврат СтруктураФоновогоЗадания;
	
КонецФункции

В принципе, все - можно уже работать и получать информацию о статусе фонового задания.

Отмечу сразу, что функция БСП "ВыполнитьВФоне" уже немного устарела. Взамен ее рекомендуют использовать функции - ВыполнитьФункцию и ВыполнитьПроцедуру. Но, о них я напишу чуть позже.

 

Процесс выполнения фонового задания в "стандартном режиме" будет выглядеть вот так:

Рис.3 Отражение статуса выполнения запущенного фонового задания - в данном случае - это проведение документов.

 

Так, тут все просто и понятно - достаточно запомнить один раз и использовать многократно. Теперь, перейдем к разработке функционала для отображения статуса и состояния на форме внешней обработки.

 

Разработка задания с отражением состояния на форме внешней обработки

Для этого изначально доработаем нашу исходную процедуру - повесим в нее "обработчик ожидания" на отслеживание нашего состояния по заданному уникальному идентификатору

&НаКлиенте
Процедура ЗапуститьОперацию(Команда)
	
	ИДЗадания = "";
	Индикатор = 0;
	СтрокаСостояния = "";
	
	ПараметрыЗапуска = Новый Структура;
	ПараметрыЗапуска.Вставить("ДатаНач1", НачалоДня(ЭтаФорма.ДатаНачала));
	ПараметрыЗапуска.Вставить("ДатаОкон1",КонецДня(ЭтаФорма.ДатаОкончания));
	ПараметрыЗапуска.Вставить("Орг1",  ЭтаФорма.Организация);
	
	
	СтруктураФоновогоЗадания  = ВыполнитьФоновоеЗаданиеНаСервере(ПараметрыЗапуска, УникальныйИдентификатор);
	ИДЗадания 	= СтруктураФоновогоЗадания.ИдентификаторЗадания;
	
	ПараметрыОжидания 	= ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
	//ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
	//ПараметрыОжидания.Интервал 	= 2;
        ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
	
	ДлительныеОперацииКлиент.ОжидатьЗавершение(СтруктураФоновогоЗадания, Новый ОписаниеОповещения("ОбработатьДанные", ЭтотОбъект), ПараметрыОжидания);
	
	// подключим обработку ожидания получения "отклика" на форму
	ПодключитьОбработчикОжидания("ОбработчикОжиданияИндикатор",5);
	
КонецПроцедуры

 

Так же, заблокируем Интервал и ВыводитьПрогрессВыполнения. И добавим ПараметрыОжидания.ВыводитьОкноОжидания = Ложь (запрет вывода типовой формы длительной операции).

 

Опишем процедуру ПодключитьОбработкиОжидания - ОбработчикОжиданияИндикатор. Выглядит она вот так:

&НаКлиенте 
Процедура ОбработчикОжиданияИндикатор() 
	
	Прогресс = ПрочитатьПрогресс(ИДЗадания);
	Если НЕ ТипЗнч(Прогресс) = Тип("Структура") Тогда
		ЭтаФорма.СтрокаСостояния = "";
		Возврат;
	КонецЕсли;
	
	Если ТипЗнч(Прогресс) = Тип("Структура") 
		И Прогресс.Свойство("ЗавершеноАварийно") Тогда
		ОтключитьОбработчикОжидания("ОбработчикОжиданияИндикатор");
		Возврат;
	КонецЕсли;
	
	Если Прогресс.Свойство("ЗаданиеВыполнено") И Прогресс.ЗаданиеВыполнено Тогда
		ЭтаФорма.Индикатор = 100;
		ЭтаФорма.СтрокаСостояния = "Задание завершено.";
	Иначе
		Если Прогресс.Свойство("Процент") Тогда
			ЭтаФорма.Индикатор = Прогресс.Процент;
			
		КонецЕсли;
		
		Если Прогресс.Свойство("Текст") Тогда
			ЭтаФорма.СтрокаСостояния = Прогресс.Текст;
		КонецЕсли;
	КонецЕсли;

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

 

Серверная функция ПрочитатьПрогресс на базе БСП библиотеки - выглядит вот так:

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

 

Итог работы данных изменений и добавлений в обработку будет такой:

Рис.4 Отражение статуса выполнения запущенного фонового задания на форме обработке. Окно выполнения фонового задания отключено. Но, процесс идет и отражается на идентификаторе и передает текущее состояние.

 

Заключение и выводы

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

Хорошо это или плохо - 100 % оценить не могу, но по своему опыту всегда пользователь запускал обработку, которая "лочила" его действия в базе.... так, для надежности чтоли....

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

В своем примере я использовал Платформу 1с 8.3.17.1549 и конфигурацию БСП 3.1.3.303.

Еще раз отмечу - почему я решил написать данную статью - на ресурсе я не нашел ничего действенного, очень много лишнего пишет народ, много воды, не хватает вводных данных.

 

Функции данной статьи вы сможете скопировать к себе в обработку и это все будет работать. Спасибо, что прочитали данную статью.

 

Другие материалы

Так же прошу ознакомиться с другими моими статьями по БСП и типовым конфигурациям:

Работаем с контактной информацией в конфигурациях на БСП

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Типовые методы конфигурации "Зарплата и управление персоналом", которые пригодятся каждому ЗУП программисту и не только

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Возможности работы со строками при помощи БСП, которые должен знать каждый программист

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 730 29.10.20 08:38 Сейчас в теме
"почему я решил написать данную статью" - одного раза объяснения хватает.
За развитие направления "БСП в картинках" плюс.
Код можно под спойлеры убрать, чтобы общее повествование не разрывалось.
echo77; quazare; +2 Ответить
2. quazare 1136 29.10.20 08:42 Сейчас в теме
(2) в следующих статьях - уберу под спойлеры. БСП - СИЛА!
17. Yashazz 4069 29.10.20 12:40 Сейчас в теме
(2) БСП хрень полная. Кривая, мутная, несогласованная, хаотичная, избыточная, непрозрачная, и документирована скверно.
Megaiff; davdykin; qwinter; rulan87; +4 Ответить
23. davdykin 25 01.11.20 10:36 Сейчас в теме
(17)Согласен, но жизнь есть жизнь, и зачастую использование функций БСП - оправдано, допустим когда они делают какой-то нужный тебе функционал, а писать свой велосипед - выйдет "дорого". Ну и знание функций для получения какой-то информации (допустим контактной, как одна из статей автора), тоже может пригодиться. Так что автору большой плюс за объяснение "этой шайтан машины" на конкретных, полезных, рабочих примерах.
24. Yashazz 4069 01.11.20 14:48 Сейчас в теме
(23) Увы, да, иногда свой велосипед был бы по всем параметрам лучше, но писать некогда.
27. danjer74 2 11.11.20 08:02 Сейчас в теме
(17)
документирована скверно.
- не соглашусь. Скорее отвратительно :)
21. echo77 1258 30.10.20 06:47 Сейчас в теме
(2) Ничего не мешает отредактировать публикацию и сразу опубликовать - она не уйдет на проверку повторно.
3. suepifanov 518 29.10.20 09:00 Сейчас в теме
Ну имхо тоже не полное описание.
Если уж запуск идет во внешней обработке, то надо запускать процедуру в модуле объекта и учесть варианты когда обработка добавлена во внешние и когда через "Файл-открыть".
Ну и еще нужна команда остановки выполнения)
Lerka2611; JohnyDeath; PowerBoy; mikl79; rpgshnik; SlavaKron; Terve!R; +7 Ответить
19. mikl79 114 29.10.20 13:43 Сейчас в теме
Я не знаю как это сделать для внешней обработки, запускаемой через файл-открыть.

Но через подключенную обработку примерно понимаю как сделать:

1) в общим модуле (можно в расширении) в процедуре (методе) прописать запуск подключенной обработки

2) в обработке подсунуть этот метод (который выполняется в фоне)


п.с. Нажмите "Отмена" и будет остановка
22. suepifanov 518 30.10.20 09:30 Сейчас в теме
(19) вот и я помню примерно
Чтобы выполнить обработку в модуле объекта надо вызывать метод ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки. И в зависимости от того, как подключена обработка передавать нужно разные параметры.

Команда отмены имелась в виду на собственной форме, а не в стандартной.
4. SlavaKron 29.10.20 09:29 Сейчас в теме
Свою разработку я начну с написания общего серверного модуля
Дальше не стал читать – у меня конфигурация на замке.
5. quazare 1136 29.10.20 09:30 Сейчас в теме
(4) ну зря не стал читать - а как же использование расширений?!
rpgshnik; +1 Ответить
8. SlavaKron 29.10.20 09:32 Сейчас в теме
(5) Сами ж пишите
Не буду использовать расширения - не считаю нужным в этом примере.
6. rpgshnik 2636 29.10.20 09:31 Сейчас в теме
Ну раз заявка, что все "не рабочие" и моя лучшая, то покритикуем :)

По тексту:
Выделение жирным шрифтом раздражает глаз.
Про воду, тоже много.

По коду:
Не понравились имена вроде "ПровестиДокументы222" или "Орг1" и т.п. Даже для примера нужно делать красиво.
Описание параметров лучше делать у самой процедуры а не отдельным абзацем, было бы удобно их себе скопировать :)

Серверная функция ПрочитатьПрогресс на базе БСП библиотеки - выглядит вот так:

Она доступна из общего модуля или нужно себе добавлять?

А так да согласен, тоже делал для внешней обработки подобное по публикации (не помню какой, но более менее где хоть понятно было) и хотел убиться об стену :) Будет время проверю вашу.

Молодец, если рабочее :)
7. ellavs 836 29.10.20 09:31 Сейчас в теме
За статью +.
Жаль, что так до сих пор нет нормального способа реализации длительных операци именно на клиенте (все примеры реализуют "длительность" только на сервере), уже несколько раз столкнулась с задачами, где выполнение определенных длительных действий могло быть реализовано только на стороне клиента (обращение к объектам, установленным на ПК-клиенте, работа в защищенной сети, в которой находится ПК-клиент и т.п.).
Как то в прошлом году про это спрашивала, было предложено только решение-хак через параллельное открытие другой формы. В новой платформе 8.3.18 упомянули новые способы асинхронности, интересно, решится ли там этот вопрос...
TimkoNzt; rpgshnik; +2 Ответить
9. quazare 1136 29.10.20 09:36 Сейчас в теме
(7) в последних конфигурациях БСП - разрабатываются общие модули Асинхронность, но они пока пустые. Возможно, это делается за запуска именно на клиенте для новой платформы 8.3.18

посмотрим..... думаю, где-нибудь зимой уже
10. Rustig 1184 29.10.20 10:16 Сейчас в теме
(0)
Вы спросите - для чего эта статья? уже неоднократно разбиралась эта тема, зачем повторять? К своему удивлению, здесь на ресурсе я не нашел НИ ОДНОЙ реально "работающей" статьи по длительным операциям. В примерах много лишнего, много воды, недосказанности, другие примеры - откровенно устарели.

Длительные операции используют разработчики типовых конфигураций. Не припомню, чтобы кто-то описал свой опыт использования длительных операций.
Я вот к примеру, написал про распараллеливание матем. расчетов - как вам статья?
https://infostart.ru/1c/articles/1257170/

воды много? :)
11. Rustig 1184 29.10.20 10:24 Сейчас в теме
В примерах много лишнего, много воды, недосказанности, другие примеры - откровенно устарели.

я предположу, что в самой БСП тоже много воды, лишнего, недосказанности, ряд процедур наверное устарели - следить за развитием БСП - не лучшее времяпрепровождение по жизни.
а вам, как автору спасибо, что поднимаете тему БСП - чем больше примеров, тем легче программировать
12. quazare 1136 29.10.20 10:27 Сейчас в теме
(11) если вы профессиональный человек - вы должны следить за подобными вещами, кроме того, использовать стандартный методы, стандартные подходы в профессии - это экономит личное время.
13. Rustig 1184 29.10.20 10:30 Сейчас в теме
(12)вы за маркировкой следите? за НДС следите? за 2-НДФЛ следите? а финотчетность для руководства составите?
EliasShy; YanTsys; +2 Ответить
25. quazare 1136 06.11.20 11:17 Сейчас в теме
(13) вы хотели знать - слежу ли я за маркировкой. Да, конечно слежу - вот, например, ознакомьтесь с моей публикацией https://infostart.ru/public/1321478/

БСП так - для тренировки мозгов, как кроссворд.
26. Rustig 1184 07.11.20 08:42 Сейчас в теме
14. Rustig 1184 29.10.20 10:33 Сейчас в теме
(12) лично у меня много разноплановых проектов - каждый проект это новое погружение в предметную область - скажем так, это другая сторона медали под названием фрилансер 1с... я считаю, что не всем дано и надо следить за развитием БСП... это не плохо, это просто факт жизни...принимаю всех какие они есть, без претензий, друг
15. mszsuz 259 29.10.20 11:51 Сейчас в теме
Может кто не знает, но в самой демо-базе БСП есть 2 демо-обработки с примерами использования:
Обработка._ДемоДлительнаяОперация и Обработка._ДемоЗамерДлительнойОперации
user925427; JohnyDeath; suepifanov; Rustig; +4 Ответить
16. Yashazz 4069 29.10.20 12:38 Сейчас в теме
Беда в том, что все наши публикации про БСП могут внезапно взять и резко устареть. Когда в 1С очередной раз "изменится концепция".

С некоторых пор стало тупо жаль время тратить на такие изыскания. Копаешься, берёшь за образец, а оно бац, и "более не используется".
Lerka2611; user925427; +2 Ответить
20. qwinter 636 29.10.20 17:27 Сейчас в теме
(16) особенно переименование функций без изменения функционала веселят)))
rulan87; Lerka2611; YanTsys; +3 Ответить
18. mikl79 114 29.10.20 13:36 Сейчас в теме
Варианты, действительно рабочие, проверил на БСП 3.1.2.416.

Спасибо, буду использовать.

Надеюсь что действительно - оно будет долго работать.

2-й вариант с выводом индикатора на форму хуже чем 1-й:
1) чуть дольше по времени отработал;
2) периодически подвисала система на доли секунд, через 3-5 секунд;
3) нет возможности прервать выполнение
user1532282; quazare; +2 Ответить
28. user1476964 09.05.21 13:19 Сейчас в теме
СтруктураФоновогоЗадания = ВыполнитьФоновоеЗаданиеНаСервере(ПараметрыЗапуска, УникальныйИдентификатор);


Гммм, может я что то пропустил - но "УникальныйИдентификатор" - это что, где определяется?
29. user1476964 09.05.21 13:36 Сейчас в теме
Сорри, проехали, тупанул
Оставьте свое сообщение

См. также

Библиотека стандартных подсистем (Механизм БСП) Промо

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но...!

03.03.2017    80396    V.Stavinsky    22    

Подключение нового справочника к подсистемам БСП (дополнительные реквизиты, файлы, запрет редактирования)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

В данной статье я привожу пример подключения нового справочника к подсистемам БСП. Статья будет применима как к самописным конфигурациям на базе БСП, так и к типовым УТ, ERP, БП и прочим конфигурациям на базе БСП.

17.08.2021    1787    maraty    8    

Добавление нового вида доступа в конфигурациях, построенных на БСП

БСП (Библиотека стандартных подсистем) Роли и права v8::Права 1cv8.cf Бесплатно (free)

Прочитаете и решите: надо оно вам или лучше по старинке. Рассмотрен простой вариант без групп доступа.

05.08.2021    1061    xrrg    2    

Префиксация объектов - полезный типовой функционал БСП

Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия БУ УУ Бесплатно (free)

В данной публикации предлагаю рассмотреть основные типовые возможности библиотеки стандартных подсистем (БСП), касаемые префиксации объектов конфигураций.

21.06.2021    4187    quazare    4    

Особенности online-обмена между старыми и новыми типовыми

Перенос данных из 1C8 в 1C8 БСП (Библиотека стандартных подсистем) v8 8.3.14 8.3.6 8.3.8 КА1 КД ДО Бесплатно (free)

Столкнулся с неприятной особенностью потери части данных при обмене УСО (УПП) - ДО.

01.06.2021    2825    echo77    7    

Обзор полезных методов БСП 3.1.4. Часть 2

БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

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

27.04.2021    14053    rayastar    7    

Обзор полезных методов БСП 3.1.4

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

25.03.2021    34961    rayastar    51    

Печать макета MS Word в любом документе с помощью БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В данной статье рассмотрим типовой функционал вывода на печать макетов печатных форм MS Word (*.docx) для любого документа конфигурации, основанной на библиотеке стандартных подсистем. Вариант клиент-серверный.

23.02.2021    5800    quazare    3    

Базовое понимание внедрения механизма печати в любом документе конфигурации на БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

В данной статье рассмотрим базовое применение методов вывода на печать макетов печатных форм с помощью БСП любых типовых или собственных документов.

17.02.2021    7450    quazare    19    

Перенос/копирование и установка отбора/периода при интерактивном переключении или смене варианта отчета/СКД в БСП 3.1 (1C ERP, УТ, БП, ...)

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

18.01.2021    1240    SizovE    4    

Генерация штрихкодов с помощью БСП для программистов

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия УУ Бесплатно (free)

В данной публикации рассмотрим базовый функционал библиотеки стандартных подсистем (БСП) формирования штрихкодов для вывода на печать.

09.01.2021    9163    quazare    18    

Асинхронное выполнение длительных операций

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

Демонстрация использования функционала БСП для выполнения длительных операций. Механизм может быть полезен, например, при загрузке/выгрузке больших объемов данных.

28.12.2020    2168    prog_mayskiyse    7    

Метаданные и их идентификаторы

Структура метаданных БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Идентификаторы (GUID'ы) метаданных конфигурации. Немного о том, как их получить.

05.12.2020    11182    YPermitin    27    

Сохранение настроек

Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Делюсь еще одним не самым очевидным способом хранения настроек в базах на БСП без доработки конфигурации. Весь код в статье.

22.11.2020    4099    the1    8    

Дополнительные реквизиты формы (простой вариант взаимодействия)

Практика программирования БСП (Библиотека стандартных подсистем) Работа с интерфейсом v8 Россия Бесплатно (free)

Упрощаем взаимодействия с дополнительными реквизитами на форме с помощью фиксированного соответствия.

14.11.2020    2161    samvani    0    

Запуск почти любых процедур и функции конфигураций в асинхронном режиме - БСП - Длительные операции [Часть 2]

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В данной статье я привожу описание рекомендуемых 1С функций к использованию в работе с длительными операциями в рамках БСП.

30.10.2020    7055    quazare    5    

Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3

БСП (Библиотека стандартных подсистем) Перенос данных из 1C8 в 1C8 v8 1cv8.cf УПП1 КД ERP2 Россия Бесплатно (free)

Данный вариант подойдет тем, кто хочет настроить "свой" регулярный обмен с добавлением "своих" планов обмена с использованием правил обмена на КД 2.1.

27.10.2020    6801    байт    20    

Вычислить РАЗНОСТЬДАТ в рабочих днях

Практика программирования БСП (Библиотека стандартных подсистем) v8::Запросы v8::СКД ERP2 БП3.0 УТ11 ЗУП3.x Бесплатно (free)

Вычисление количества рабочих днях между двумя датами в запросе.

20.10.2020    3635    antonivan    17    

Разработка функционала обмена с несколькими внешними точками

Обмен данными 1С БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В статье приводятся несколько практических советов по организации обмена с несколькими точками, прежде всего «не 1С». Рассматривается создание плана обмена, использование параметров, программирование и настройка регламентных заданий. Доработка системы проводится без изменения конфигурации с использованием расширения и внешней обработки.

21.09.2020    1239    Sergey1CSpb    2    

Работаем с контактной информацией в конфигурациях на БСП

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

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

14.09.2020    17994    quazare    16    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

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

30.08.2020    18902    quazare    34    

Выполнение внешней обработки по расписанию для управляемого и обычного приложения

БСП (Библиотека стандартных подсистем) Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Использование БСП для выполнения внешних обработок в управляемом и обычном приложении

06.08.2020    11515    RPGrigorev    0    

RLS добавление ограничения доступа к данным по произвольному справочнику через штатные механизмы

БСП (Библиотека стандартных подсистем) Информационная безопасность Роли и права v8 КА2 Россия УУ Бесплатно (free)

Решал задачу ограничения доступ к объектам по справочнику "Банковские счета" штатными средствами БСП. Конфигурация КА 2.2. В остальных на БСП должно работать так же. Хотел сделать инструкцию для себя на будущее, решил поделиться.

05.08.2020    3521    ER34    2    

Возможности работы со строками при помощи БСП, которые должен знать каждый программист

Практика программирования БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Переходим на следующий уровень работы со строками, уходим от типовых возможностей платформы. Узнаем, как применить функционал БСП конфигурации.

05.07.2020    13063    quazare    37    

Мастер-класс "Ведение проектов в типовых конфигурациях 1С"

Управление проектом CI/CD БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

При адаптации типовой конфигурации под особенности учета в компании важно обеспечить возможность легкого обновления поставки. Как организовать архитектуру решения и продумать процесс быстрой и эффективной разработки без ущерба типовой функциональности, на конференции Infostart Event 2019 Inception рассказал ведущий программист компании BIA-Teсhnologies Алексей Князьков.

05.06.2020    4970    AKnyazkov    4    

Способ хранения данных расширения или дополнительной обработки

БСП (Библиотека стандартных подсистем) Практика программирования v8 Бесплатно (free)

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

01.06.2020    5556    Sedaiko    17    

Переопределение настроек отчета на СКД. 1С: БСП

БСП (Библиотека стандартных подсистем) v8::СКД ERP2 Россия Бесплатно (free)

Изменение настроек СКД отчета без доработки модулей БСП

24.04.2020    4010    klimsrv    6    

Картинка в форме списка номенклатуры для УТ 11.4

БСП (Библиотека стандартных подсистем) Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В публикации приведу код, позволяющий выводить картинку номенклатуры в форме списка.

23.03.2020    2328    malikov_pro    2    

Полезные функции БСП (Часть 2)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

Список полезных функций из состава Библиотеки стандартных подсистем 3.1.

10.03.2020    19818    user5300    20    

Механизмы проведения документов при обмене по универсальному формату

Перенос данных из 1C8 в 1C8 БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Как проводятся документы при обмене по универсальному формату. Пример доработки типовых правил обмена с переносом состояния документа: проведен/не поведен/пометка удаления.

04.03.2020    6402    partizand    6    

[БСП] Внешняя печатная форма: как перед печатью выводить форму настроек

Печатные формы документов БСП (Библиотека стандартных подсистем) v8 КА2 Бесплатно (free)

Во внешней печатной форме перед печатью нужно выводить форму настроек. Для примера рассматриваю печатную форму "Акт сверки взаимных расчетов " .

19.12.2019    13758    John_d    9    

Реализация печати QR кодов "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Рассмотрим, как реализовать печать QR кодов с помощью механизмов БСП.

16.10.2019    8086    paulis    4    

Реализация команды печати "Библиотека стандартных подсистем", редакция 3.1 (3.1.1.151)

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

В новом релизе "БСП" произошли изменения в процедурах общих модулей, связанных с механизмом печати, и в процедурах их вызова в формах документов и в формах списков. Рассмотрим их.

12.10.2019    8559    paulis    4    

Шпаргалка (БСП). Добавление в новый документ механизма печати дополнительных печатных форм

Печать БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

10.10.2019    28545    John_d    19    

От чего можно отказаться при разработке расширений 1С

Практика программирования БСП (Библиотека стандартных подсистем) Расширения v8 Бесплатно (free)

Разработка расширений 1С и оптимизация через механизм БСП: Дополнительные отчеты и обработки.

23.09.2019    11556    independ    33    

БСП: Дополнительные отчеты и обработки - одна обработка, несколько форм

Практика программирования Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Как в одной дополнительной обработке разместить несколько форм с типом команды "ОткрытиеФормы"?

29.07.2019    13056    dsdred    10