Гарантированно рабочий пример использования длительных операций на БСП с отображением прогресса. [Часть 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 (сравнение)

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

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

Отзывы
37. quazare 3237 04.04.22 13:11 Сейчас в теме
Всем желающим скачать примеры - можете на моем телеграмм канале
yurazyuraz; d4rkmesa; +2 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1237 29.10.20 08:38 Сейчас в теме
"почему я решил написать данную статью" - одного раза объяснения хватает.
За развитие направления "БСП в картинках" плюс.
Код можно под спойлеры убрать, чтобы общее повествование не разрывалось.
Yan_Malyakov; chrnv; v_den_v; echo77; quazare; +5 Ответить
2. quazare 3237 29.10.20 08:42 Сейчас в теме
(2) в следующих статьях - уберу под спойлеры. БСП - СИЛА!
17. Yashazz 4512 29.10.20 12:40 Сейчас в теме
(2) БСП хрень полная. Кривая, мутная, несогласованная, хаотичная, избыточная, непрозрачная, и документирована скверно.
haykking; petr.myazin; user622095_admin; chrnv; AndrewKop; Cthulhu; bocharovki; KoC_one; Hatson; 4erv; Megaiff; davdykin; qwinter; rulan87; +14 1 Ответить
23. davdykin 25 01.11.20 10:36 Сейчас в теме
(17)Согласен, но жизнь есть жизнь, и зачастую использование функций БСП - оправдано, допустим когда они делают какой-то нужный тебе функционал, а писать свой велосипед - выйдет "дорого". Ну и знание функций для получения какой-то информации (допустим контактной, как одна из статей автора), тоже может пригодиться. Так что автору большой плюс за объяснение "этой шайтан машины" на конкретных, полезных, рабочих примерах.
24. Yashazz 4512 01.11.20 14:48 Сейчас в теме
(23) Увы, да, иногда свой велосипед был бы по всем параметрам лучше, но писать некогда.
27. danjer74 3 11.11.20 08:02 Сейчас в теме
(17)
документирована скверно.
- не соглашусь. Скорее отвратительно :)
21. echo77 1768 30.10.20 06:47 Сейчас в теме
(2) Ничего не мешает отредактировать публикацию и сразу опубликовать - она не уйдет на проверку повторно.
3. suepifanov 804 29.10.20 09:00 Сейчас в теме
Ну имхо тоже не полное описание.
Если уж запуск идет во внешней обработке, то надо запускать процедуру в модуле объекта и учесть варианты когда обработка добавлена во внешние и когда через "Файл-открыть".
Ну и еще нужна команда остановки выполнения)
KoC_one; Lerka2611; JohnyDeath; PowerBoy; mikl79; rpgshnik; SlavaKron; Terve!R; +8 Ответить
19. mikl79 117 29.10.20 13:43 Сейчас в теме
Я не знаю как это сделать для внешней обработки, запускаемой через файл-открыть.

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

С некоторых пор стало тупо жаль время тратить на такие изыскания. Копаешься, берёшь за образец, а оно бац, и "более не используется".
AndrewKop; Lerka2611; user925427; +3 Ответить
20. qwinter 665 29.10.20 17:27 Сейчас в теме
(16) особенно переименование функций без изменения функционала веселят)))
AndrewKop; rulan87; Lerka2611; YanTsys; +4 Ответить
18. mikl79 117 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 Сейчас в теме
Сорри, проехали, тупанул
30. mars207 27 05.10.21 18:42 Сейчас в теме
Благодарю за пример. Буду использовать
31. sdemon72 24 11.11.21 09:47 Сейчас в теме
Спасибо, дружище!!!
Вот "от нашего стола - вашему столу" пример только на БСП (без своих подписчиков) с выводом прогресса, состояния и сообщений:

Исполняемая процедура:
Процедура ФоновоеЗадание() Экспорт
	
	МаксИнд = 100000;
	
	Для Инд = 1 По МаксИнд Цикл
		
		ПроцентВыполнения = Инд/МаксИнд*100;
		
		Если ПроцентВыполнения%0.1 = 0 Тогда
			ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения,"Выполняется операция: " + ПроцентВыполнения + "%");
		КонецЕсли;
		
		Если ПроцентВыполнения%10 = 0 Тогда
			ОбщегоНазначения.СообщитьПользователю("Выполнено " + ПроцентВыполнения + "%");
		КонецЕсли;
	
	КонецЦикла;
	
КонецПроцедуры
Показать


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


Запуск (серверная часть):
&НаСервере
Функция ВыполнитьОперациюНаСервере()
	
	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
	
	ПараметрыВыполнения.КлючФоновогоЗадания = "НашеФоновоеЗадание";
	ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Наше фоновое задание'");
	
	Результат = ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения,"Обработки.НашиФоновыеЗадания.ФоновоеЗадание"); 
	Возврат Результат;
	
КонецФункции
Показать


Вывод прогресса и сообщений:
&НаКлиенте
Процедура ОповещениеПрогрессДлительнойОперации(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено
		И Результат.Статус = "Выполняется" Тогда
		Если Результат.Свойство("Прогресс")
			И Результат.Прогресс <> Неопределено Тогда
			ПрогрессОперации = Результат.Прогресс.Процент;
			СостояниеОперации = Результат.Прогресс.Текст;
		КонецЕсли;
	КонецЕсли;
	
	Если Результат.Свойство("Сообщения")
		И Результат.Сообщения <> Неопределено Тогда
		Для Каждого Сообщение Из Результат.Сообщения Цикл
			Сообщение.Сообщить();
		КонецЦикла;
	КонецЕсли;

КонецПроцедуры
Показать


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


Прерываение задания:
&НаСервере
Процедура ОстановитьЗаданиеНаСервере()
	Если ИдентификаторФоновогоЗадания <> Неопределено Тогда
		ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторФоновогоЗадания);
		ИдентификаторФоновогоЗадания = Неопределено;
	КонецЕсли;
КонецПроцедуры


Все процедуры, кроме первой, размещены в форме обработки. Реквизиты "ПрогрессОперации" и "СостояниеОперации" связаны с элементами формы типов "Прогресс" и "Текст" соответственно. Реквизит ИдентификаторФоновогоЗадания используется только для прерывания заданий
Miket78; YA_514896950; Merkalov; begemot; user1286487; sizeoff; +6 Ответить
32. burgomister 54 13.11.21 15:59 Сейчас в теме
"Свою разработку я начну с написания общего серверного модуля" - а куда ж его разместить? Это внешняя обработка. Конфигурация на поддержке. Не понял. Если разместить в модуль объекта,, пишет - неверное имя параметра.
33. quazare 3237 13.11.21 19:29 Сейчас в теме
(32) прошел год с момента написания данной статьи, и она немножечко устарела - сейчас я ее перечитал, но принципы остались теже.

Я готовлю статью - набор рабочих примеров применения длительных операций, где освежу их применение.

Касаемого вашего вопроса - используйте расширения.
34. burgomister 54 14.11.21 19:23 Сейчас в теме
(33) Спасибо. На базовой расширения нельзя. Так что использовал вариант из PUBID_1112877. Он работает без расширения.
35. Salavat 13 30.12.21 14:54 Сейчас в теме
...я не нашел НИ ОДНОЙ реально "работающей" статьи по длительным операциям. В примерах много лишнего, много воды, недосказанности, другие примеры - откровенно устарели...


Вобщем (моя точка зрения, после попытки повторить) - и эта статья - несильно отличается других (которые Не Работали у меня, тоже) примеров.

Ну да - воды, слегка поменьше, но - результата, всё-равно не дало.

Конкретизирую -

Мне интересен Прогресс - для внешних обработок.
(Без всяких регистраций в Доп.Обработках - просто открыть и просто Индикатор (и/или Окно - без особой разницы) Прогресса получить.

Первый Описанный Способ ("на форме "Длительной операции""), вроде похож на рабочий, но - Не Доступна процедура из Модуля Внешней Обработки!
(Если подскажете вариант синтаксиса написания для ВыполняемыйМетод, чтобы работало - буду благодарен)

Второй Способ - Просто не Рабочий.
(возможно - причина, как и у других авторов/источников, воды много лишней, в которой распутаться мне не удалось, тоже, но - результат аналогичен им((((...)
36. Salavat 13 30.12.21 14:58 Сейчас в теме
Вобщем - если подскажете, как прицепить на внешнюю обработку - Индикатор Прогресса, Работающий с длительными операциями на сервере -

- Буду Благодарен.
(подозреваю, нетолько я!)

И да, всем в Новом Году - Всего хорошего!!
EugeneSemyonov; +1 Ответить
37. quazare 3237 04.04.22 13:11 Сейчас в теме
Всем желающим скачать примеры - можете на моем телеграмм канале
yurazyuraz; d4rkmesa; +2 Ответить
38. user1277564 04.09.22 09:26 Сейчас в теме
Добрый день, я начинающий программист, подскажите пожалуйста, как передать данные из таблицы значений в процедуру фонового задания ?
суть такая что предварительно пользователь выбрать настройки, ему на экране с помощью запроса вывелись документы, он какие то документы удалил, какие то наоборот добавил в таблице значений. И после он хочет нажать кнопку - изменить количество( в каждом документе, по 200+ строк тч). И посему я хочу передать в фоновое задание итоговую таблицу значений. в ней строки обработать. Не могу сообразить, дайте пожалуйста совет.
39. HolyRadiance 25.10.22 05:25 Сейчас в теме
А вот этот модуль где находится?
ДлительныйМодуль

У вас процедура, которая должна выполняться в фоне, находится, как я понимаю, в модуле формы внешней обработки. Как указать к ней путь?
41. HolyRadiance 25.10.22 09:37 Сейчас в теме
(39) сам отвечу. Понял неправильно у автора для фонового исполнения используется процедура в общем модуле. Для использование процедуры внешней обработки необходимо указать такой путь:

ВнешняяОбработка.НазваниеОбработки.МодульОбъекта.НазваниеМетодаМодуляОбъекта
40. HolyRadiance 25.10.22 09:34 Сейчас в теме
ОтключитьОбработчикОжидания("ОбработчикОжиданияИндикатор");

Данный метод недоступен на сервере.
42. Korolev 49 02.12.22 16:39 Сейчас в теме
(40)

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


Сделать:
	Если Задание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
		СтруктураОтвета = Новый Структура;
		СтруктураОтвета.Вставить("ЗавершеноАварийно", Истина);
		Возврат СтруктураОтвета;
	КонецЕсли;
43. YA_514896950 22 02.03.23 16:09 Сейчас в теме
скопировал в обработку процедуры из начала статьи, длительную операцию вынес в модуль обработки
при вызове просто подвисает, индикации прогресса нет

Скрытый текст


Скрытый текст
yurazyuraz; +1 Ответить
45. yurazyuraz 13.03.23 16:11 Сейчас в теме
(43)
тоже пробовал , не работает
может быть конечно что то сделано не так.


Платформа 8.3.18.1334
БП 3.0.95.24
БСП 3.1.3.494
46. YA_514896950 22 13.03.23 17:22 Сейчас в теме
(45)
(45)
Я потом нашел рабочий на сто процентов пример для внешней обработки. Можете скачать одну из моих последних публикаций)
Все оказалось проще чем я думал
44. yurazyuraz 13.03.23 16:10 Сейчас в теме
Платформа 8.3.18.1334
БП 3.0.95.24
БСП 3.1.3.494


пример не работает
47. yurazyuraz 13.03.23 17:47 Сейчас в теме
(46)
Вот эта публикация ? My Webpage

Увы нет 10 стармани :)
48. YA_514896950 22 13.03.23 18:21 Сейчас в теме
49. Serg2000mr 50 27.05.23 22:15 Сейчас в теме
(0) В комментарии-описании к функции СообщитьПрогресс() есть следующее:
Регистрирует информацию о ходе выполнения длительной операции.
Во избежание избыточного потребления памяти и ее утечек при выполнении одной длительной операции
не следует сообщать прогресс более 100 раз.

Думаю, нужно это учесть в коде процедуры ПровестиДокументы
50. Salavat 13 28.05.23 12:19 Сейчас в теме
(49) Согласен.
Более того - такие мелкие шажочки (каждое из которых - действительно ресурсы требует) - просто бессмысленны.
Да - так, размер кода, меньше выходит.
Но, в результате же (например - для выборки из 1000 документов) - придётся сообщать 1000 раз.
Причём "движение" прогресса - рассмотреть трудновато будет.

Именно поэтому - шаг прогрессы обычно делают <=10 (в крайнем случае 5) %.от общего количества.
Оставьте свое сообщение

См. также

Снова об использовании ТекущаяДата() на клиенте и на сервере и о работе в разных часовых поясах

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

Можно ли применять ТекущаяДата() вопреки требованиям стандартов 1С? Безопасно ли использование функции ОбщегоНазначенияКлиент.ДатаСеанса() из БСП? Как правильно поступать при работе пользователей в разных часовых поясах?

24.04.2023    4146    Alxby    26    

40

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

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

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

03.04.2023    737    user1575928    0    

17

Учим БСП печатать активные ссылки и подложку в документе WORD

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Небольшое расширение БСП для печати в WORD. Добавлена печать активных ссылок, подложки документа, и фона страницы.

1 стартмани

13.03.2023    1328    3    user1575928    0    

6

Многопоточное выполнение процедуры с помощью ДлительныеОперации

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В публикации: Приведен шаблон для запуска многопоточной операции для различных вариантов размещения многопоточной операции, в том числе в модуле объекта внешней обработки, встроенной в справочник Дополнительные отчеты и обработки; Представлен вариант корректного отображения прогресса многопоточной операции; Приведены замеры, демонстрирующие целесообразность использования нового механизма для увеличения производительности.

1 стартмани

26.02.2023    4596    egoriy111    24    

68

Пример многопоточной обработки (БСП)

Обработка документов HighLoad оптимизация Обработка справочников БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

13.02.2023    6222    4    echo77    8    

76

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

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

10.02.2023    1903    7    janit    0    

7

Ошибка механизма автонумерации объектов. Обработка «Максимальный код (номер) объекта» (БСП 3.1.7.61)

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

30.01.2023    1376    1    mobiledrivec    0    

3

Использование типовых возможностей 1С и их расширение. Часть 1

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

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

29.10.2022    5668    ixijixi    7    

56

Работа с файлами

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

03.09.2022    2343    10    Tash.B    0    

8

Шаблон внешней обработки на основе БСП с фоновым выполнением модуля обработки и выводом индикации фонового задания

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

31.08.2022    6067    53    VdZMWOnC    5    

83

Альтернативная иерархия справочника

БСП (Библиотека стандартных подсистем) Обработка справочников Механизмы типовых конфигураций 8.3.14 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

30.08.2022    3039    2    hiduk    0    

3

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

Обработка документов Печатные формы БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

27.07.2022    3373    5    Alex33614    2    

6

Выгрузка дополнительных отчетов и обработок

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

21.07.2022    2265    7    mobiledrivec    0    

5

Система контроля ведения учета [БСП]

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

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

18.07.2022    5539    quazare    8    

101

Оценка производительности с помощью БСП

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

В данной статье будут рассмотрены базовые возможности подсистемы "Оценка производительности" в библиотеке стандартных подсистем.

30.06.2022    4714    quazare    8    

54

Разработка конфигурации на основе Библиотеки стандартных подсистем 3.1.6.245

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

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

06.06.2022    6125    user1432326    5    

25

Как подключить документ расширения к версионированию БСП

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Пример расширения, в котором добавлен новый документ и он же подключен к подсистеме версионирования объектов. Важно! Основную конфигурацию нужно переключить в режим совместимости 8.3.20.

2 стартмани

27.05.2022    6035    5    EvgeTrofi    9    

13

Отправка счетов и актов за период из 1С:Бухгалтерии 3.0 программно с помощью функций БСП

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

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

1 стартмани

23.05.2022    1612    lenastep    4    

5

Подсистема регулярных заданий

Универсальные функции БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Абонемент ($m)

Подсистема регулярных заданий предназначена для выполнения произвольных алгоритмов (задач) по заранее сформированным графикам с учетом производственного календаря.

1 стартмани

23.05.2022    5373    15    Sirruf    15    

14

Базовые принципы работы с регламентными заданиями подсистем БСП

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

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

22.05.2022    9555    quazare    25    

54

Шаблоны сообщений пользователю - подсистема БСП

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

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

15.05.2022    8284    quazare    6    

103

Еще раз о дополнительных реквизитах и дополнительных сведениях

Адаптация типовых решений БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Дополнительные реквизиты и сведения существуют давно. Задумка очень хорошая. Суть этих механизмов понятна всем. По этому поводу написано много. Что тут можно сказать нового? Однако бес, как всегда, в деталях. Как создавали реквизиты в объектах типовых конфигураций, так и продолжаем это делать. Почему это происходит? За всех сказать не могу. Могу рассуждать только на своем примере. Являясь убежденным практиком, одно могу сказать вполне определенно. Если что-то на практике недостаточно удобно, то останется оно главным образом в теории... Если не приложить немного усилий.

11.05.2022    9410    user1374747    19    

48

Универсальный анализ и управление ролями

Инструменты администратора БД БСП (Библиотека стандартных подсистем) Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Универсальный анализ прав доступа (без RLS) по ролям конфигурации. Работает с конфигурациями на библиотеке стандартных подсистем.

1 стартмани

27.04.2022    4350    27    denmp    0    

5

Модули общего назначения - готовые полезные функции и процедуры конфигураций на БСП

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

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

25.04.2022    10252    quazare    11    

130

Правила регистрации объектов 1С:БСП

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

Здравствуйте, коллеги! В статье рассмотрим работу с правилами регистрации объектов в библиотеке стандартных подсистем 1С.

20.04.2022    10775    Koder_Line    12    

32

Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД

БСП (Библиотека стандартных подсистем) СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

20.04.2022    5404    eugene-p    8    

28

Раздел меню внешних отчетов и обработок (расширение конфигурации на БСП)

Рабочее место БСП (Библиотека стандартных подсистем) Менеджеры внешних отчетов 8.3.14 Конфигурации 1cv8 Абонемент ($m)

Иногда пользователю доставляет неудобство открывать разрозненно по спискам разных разделов внешние обработки и отчёты, и есть потребность поместить их в одно единственное окно. Данное расширение призвано решить такую задачу.

1 стартмани

12.04.2022    5203    31    Obertone    7    

22

Многопоточный режим выполнения процедуры с помощью методов БСП - примеры разработки

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

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

01.04.2022    7285    quazare    14    

117

Необычное решение для хранения настроек внешней обработки

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

При написании внешней обработки, например для импорта данных из сторонней базы данных используя HTTP-сервисы, необходимо сохранять настройки соединения с HTTP. Подсказали оригинальный способ сохранения настроек с БД. При использовании "ХранилищеОбщихНастроек" все сильно зависит от прав пользователя. Чтобы читать настройки, сохраненные другим пользователем, необходимы права: "АдминистрированиеДанных". Как-то не хочется раздавать всем пользователям права администратора. Помогает БСП.

25.03.2022    1420    AlexeyRaevsky    7    

5

Получение контактной информации из отбора

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

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

25.03.2022    1861    ixijixi    0    

12

Стандартные подсистемы БСП - параметры работы клиента и возможности диалогов

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

В данной небольшой статье рассмотрим обработку параметров работы клиента и режим диалога (выбора вопроса) модулей "стандартные подсистемы" БСП.

22.03.2022    6011    quazare    10    

81

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

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

Мы все любим 1С, не так ли? Вот дает 1С прекрасный механизм возможности модификации макетов печатных форм в БСП. А из всех рекомендаций это получение макета и заполнение параметров областей. И вы спросите: "А что не так... ты печатные формы накодить не можешь без указаний сверху?". Да вот в том то и дело, что я могу все. А вот пользователям от такого механизма пользы 0, если из всех доступных изменений остаются только шрифты, да текст произвольный накинуть. А ведь можно больше, надо только соблюдать несколько правил при подготовке печатных форм...

07.03.2022    9953    vandalsvq    0    

57