Выполнение любой дополнительной обработки в фоне

19.01.24

Разработка - Инструментарий разработчика

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

Скачать исходный код

Наименование Файл Версия Размер
Выполнение любой дополнительной обработки в фоне:
.epf 10,66Kb
16
.epf 10,66Kb 16 Скачать

Объединил две идеи и получилось вот такое развитие. (Только не спрашивайте меня, - как это работает?)

Почитать статьи предшественники можно здесь Фоновое выполнение кода и здесь Запуск процедур и функций в асинхронном режиме.

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

Перечислю по пунктам, что требуется сделать, чтобы все заработало:

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

///////////////////////////// Выполнение процедур в фоне  ///////////////////////////////////////////////////////////////////////////////////// 
///////////////////////////// почитать можно здесь //infostart.ru/1c/articles/1102674/ и здесь //infostart.ru/1c/articles/1318934/

// Суть всех стараний - теперь можно из любой внешней обработки запусть выполнение в фоне с выводом прогресса и/или сообщений  
// ниже процедура и функция как раз используют идею из первой статьи  
// 
// Пример выполнения во внешней обработке "Проведение документов в фоне"
// в обработке мы используем идею из второй статьи

Процедура ФоноваяПроцедура(ТекстМодуля,ПараметрыВыполнения) Экспорт
    ПолныйТекстМодуля = "";
    Для Каждого ТекПараметр Из ПараметрыВыполнения Цикл
        ПолныйТекстМодуля = ПолныйТекстМодуля+ТекПараметр.Ключ+"=ПараметрыВыполнения."+ТекПараметр.Ключ+";"+Символы.ПС;
    КонецЦикла;
    ПолныйТекстМодуля = ПолныйТекстМодуля + ТекстМодуля;
    Выполнить(ПолныйТекстМодуля);
КонецПроцедуры 

Функция ФоноваяФункция(ТекстМодуля,ПараметрыВыполнения) Экспорт  
	//
	ТЗ = Новый Массив;
    ПолныйТекстМодуля = "";
    Для Каждого ТекПараметр Из ПараметрыВыполнения Цикл
        ПолныйТекстМодуля = ПолныйТекстМодуля+ТекПараметр.Ключ+"=ПараметрыВыполнения."+ТекПараметр.Ключ+";"+Символы.ПС;
    КонецЦикла;
    ПолныйТекстМодуля = ПолныйТекстМодуля + ТекстМодуля;
    Выполнить(ПолныйТекстМодуля); 
	Возврат ТЗ;
КонецФункции

2. В модуле формы обработки поменять в двух местах Мой_СерверныйМодуль на имя того модуля, куда вы поместили код из первого пункта.

 

 

3. В вашей базе должен быть модули БСП с функцией ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки, 

4. Вся соль в наличии модулей ДлительныеОперацииКлиент, ДлительныеОперации

5. Для вывода сообщений используется процедура общего модуля 

ОбщегоНазначенияКлиентСервер.СообщитьПользователю

Все, теперь обработка заработает.

Теперь описание того, что внутри и как из этого сделать другую, нужную вам обработку с прогрессом.

1. На форме 2 кнопки "Запустить в фоне" и "Запустить в фоне функцию". По названию понятно, что первая запускает фоновую процедуру, а вторая функцию. Во втором случае вы можете вернуть результат выполнения.

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

 

 

3. Менять название основных процедур нельзя. Обратите внимание, что в данный момент мы используем только три параметра, но изначально зашита возможность использовать еще четыре. Текст процедуры представлен ниже

Процедура ВыполнитьФоновуюПроцедуруСПрогрессом(ДатаНачала,ДатаОкончания,Организация,П4,П5,П6,П7) Экспорт  
	//
	ОбщегоНазначенияКлиентСервер.СообщитьПользователю(П4 + П5 + П6 + П7);
	//
	ТаблицаДокументов = ЗаполнитьДокиНаСервере(ДатаНачала,ДатаОкончания,Организация); 
	//
	ВсегоДокументов = ТаблицаДокументов.Количество();
	
	ТекДок = 1;
	// 
	Для Каждого Строка ИЗ ТаблицаДокументов Цикл 
		//
		ДокОбъект = строка.Документ.ПолучитьОбъект(); 
		Попытка
			ДокОбъект.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); 
		Исключение  
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось провести " + Строка(ДокОбъект) + " по причине " + ОписаниеОшибки());
		КонецПопытки;
		//
		ПроцентВыполнения = (ТекДок/ВсегоДокументов)*100;
		ПроцентВыполнения = Окр(ПроцентВыполнения,0);
		
		//МассивВозврат.Добавить(ПроцентВыполнения);
		
		// сообщаем "процент" и "текст сообщения"
		ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения,СокрЛП(Строка.Документ)); 
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Выполнено " + Строка(ТекДок) + " из " + Строка(ВсегоДокументов));
		
		ТекДок = ТекДок + 1;

	КонецЦикла; 
	
КонецПроцедуры  

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

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

Ну, вот и все.

Что надо сделать, чтобы заработала моя новая обработка? - спросите вы меня.

 

1. Скопировать мою (считаем, что  в общем модуле уже есть ФоновояПроцедура и ФоноваяФункция и вы поправили две строчки как описано в самом начале п1.и п2)

2. Заменить Наименование (название и идентификатор команды) в СведенияОВнешнейОбработке()

3. Заменить Парам1 = "Перепроведение документов в фоне"; // берем из того, что написали в пункте 2

4. Добавляем на форму свои реквизиты и присваиваем их параметрам.

5. Включаем свою логику в функцию ЗаполнитьДокиНаСервере().
 

 

Добавляем в избранное, чтобы не потерять.

Используется на ERP 2.5.12.147, платформа 8.3.23.1782.

 

Продолжает цикл полезных отчетов и обработок.

1. Анализ использования номенклатуры

2. Форма списка Заказы поставщикам с выводом состава

3. Товары на складах по срокам хранения

4. Структура подчиненности деревом

5. Загрузка из Excel (любой таблицы) в ТЧ документа

6. Панель функций

7. Поддержание запаса на складе

8. Ведомость расчетов с поставщиками расширенная

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.12.147

В фоне внешняя обработка прогресс длительные операции

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    127260    689    389    

740

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    8435    25    6    

46

Infostart УДиФ: Управление данными и формами 1С

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

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

10000 руб.

10.11.2023    4757    12    2    

38

SALE! %

PowerTools

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

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

3600 2280 руб.

14.01.2013    178961    1085    0    

863

Бустер Конвертации данных 3 (Infostart Toolkit)

Инструментарий разработчика 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    15127    3    12    

38

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99905    240    97    

298

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28435    4    10    

16

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18531    6    8    

40
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Nikola23 698 19.01.24 14:28 Сейчас в теме
Мне одному кажется, что то самое время "прошло" где-то в 2012 году. А то и раньше?
(Сарказм)
DrAku1a; Matveev_VS; sinichenko_alex; maksa2005; RocKeR_13; +5 Ответить
2. dimanich70 644 19.01.24 16:40 Сейчас в теме
3. Xershi 1486 19.01.24 19:30 Сейчас в теме
(1) на днях использовал алгоритмы тех времён+)) Спасибо тормозить!
28. DrAku1a 1718 26.01.24 09:09 Сейчас в теме
(1) На самом деле, "время прошло" - в этом году, т.к. ушла в вечность (снята с поддержки) последняя популярная типовая конфигурация - "Управление торговлей 10.3", и те, кто ещё кодил под обычные формы - переучиваются...
29. RustIG 1619 26.01.24 09:43 Сейчас в теме
(28) Андрей, привет! А есть офиц. письмо об этом?
30. DrAku1a 1718 26.01.24 11:23 Сейчас в теме
(29) Да. Есть новость тут. И есть Информационное письмо 30065 от 09.12.2022 г.

Вкратце: поддержка до 31.12.2023 года, и до апреля 2024 года - для сдачи отчетности за 2023 год. Не планируется поддержки изменений законодательства в 2024 году (и сдачи отчетности за 2024 год, в т.ч. перехода необязательных маркировок и сервисов прослеживаемости на обязательные) и после 2024 года.

Варианты - переход на УТ 11, переход на ERP и КА 2, или переход на УПП 1.3 (которая ещё будет поддерживаться до конца 2026 года). Ещё можно рассмотреть варианты перехода на УНФ или Розницу.
31. RustIG 1619 26.01.24 12:00 Сейчас в теме
4. Alexandernav 20.01.24 02:16 Сейчас в теме
Автор молодец) Но в БСП итак есть функционал, позволяющий запускать процедуры дополнительных обработок в фоне.
ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки() - Можно запускать фоновое задание с выполнением данного метода, в который завернуть метод дополнительной обработки.

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


Это запустит метод модуля объекта дополнительной обработки:
Процедура ИмяПроцедурыДополнительнойОбработки(ПараметрыОбработки, АдресРезультата) Экспорт
	
	Параметр1 = ПараметрыОбработки.Параметр1;
	Параметр2 = ПараметрыОбработки.Параметр2;
	
	//Какой-то код тела метода
	
КонецПроцедуры
Показать
onsi; JohnyDeath; mrChOP93; mvxyz; ubnkfl; skeptik2105; burni4; fancy; Dmitrij-2; sinichenko_alex; sandr13; PowerBoy; Serg2000mr; baracuda; JinAir7460; bulpi; cheshirshik; artbear; mip128; +19 1 Ответить
5. dimanich70 644 20.01.24 07:11 Сейчас в теме
(4)Спасибо. Не знал. Буду смотреть. Теперь есть выбор.
6. user792443 20.01.24 12:32 Сейчас в теме
ОбщегоНазначенияКлиентСервер.СообщитьПользователю устаревшая, нельзя использовать
7. sapervodichka 6812 20.01.24 13:06 Сейчас в теме
(6) Она вроде работает, в конфе в общих модулях есть, а надписи, что она устаревшая уже лет 5. Нельзя использовать из-за надписи в комментарии или есть технический момент?
user792443; +1 Ответить
8. user792443 20.01.24 13:30 Сейчас в теме
(7)Есть стандарты разработки. В них описано, экспортные методы общих модулей можно использовать только включенные в программный интерфейс
sapervodichka; +1 Ответить
9. user792443 20.01.24 13:32 Сейчас в теме
(8)плюс, если у вас на проекте есть проверка кода, она сделает замечания за вызов такого метода
10. sapervodichka 6812 20.01.24 14:35 Сейчас в теме
(9) Мину снова заложили 1С ки. Хоть метод и рабочий, и в состав типовых конфигураций входит, и в типовых модулях используется. Уже как писал 5 лет на него смотрю, всё устарел, да, устарел написано. Надеюсь в 1С ещё работает разраб, который его хотел отключить, а то как-то затянулось и можно и нельзя.
Прикрепленные файлы:
dimanich70; ixijixi; sandr13; +3 Ответить
15. dimanich70 644 20.01.24 17:59 Сейчас в теме
17. user792443 20.01.24 18:31 Сейчас в теме
(15) ОбщегоНазначения.СообщитьПользователю
Вообще возле устаревших можно почитать всю информацию от разработчиков БСП
21. Bassgood 1429 22.01.24 15:55 Сейчас в теме
(17) Получается вызывается только на сервере (модуль же серверный)?
А если нужно выдать сообщение с клиентской части - переходить на сервер только для того, чтобы вызвать этот метод?
25. Teplotrassamen 23.01.24 18:55 Сейчас в теме
(21)Нет, для клиента аналогично ОбщегоНазначенияКлиент.СообщитьПользователю
26. Bassgood 1429 23.01.24 18:59 Сейчас в теме
(25) Тогда не понимаю зачем убрали вызов этого метода из более подходящего для обоих контекстов (клиента и сервера) общего модуля "ОбщегоНазначенияКлиентСервер", вместо этого разнесли его по двум модулям, в чем прикол?
27. Teplotrassamen 23.01.24 19:03 Сейчас в теме
(26) Пути 1С не исповедимы) У меня в основной базе старое бсп и там есть только метод НаКлиентеНаСервере, не так давно начал допиливать ЗУП и БУХ (актуальные версии) и там с удивлением обнаружил что СообщитьПользователю разнесено. Ну запомнил и в ЗУП с БУХом стал писать когда нужно в зависимости от контекста.
11. quazare 3611 20.01.24 15:26 Сейчас в теме
Ребята, все можно сделать гораздо проще, через «выполнить команду»

«Вся соль», как пишет автор - заключается в том, внешняя обработка должна быть написана исключительно для использования «на сервере», иначе у вас она не будет работать


Обычно, я делаю спец обработку для фона с работой в северном режиме, ставлю в расписание и все работает…. Кому интересно- у меня куча описаний в профиле здесь и на моем канале
sapervodichka; +1 Ответить
18. sandr13 34 21.01.24 18:02 Сейчас в теме
(11) Иногда фоновые не хотят работать. Был случай в ЗУП. Лечится переходом на новую версию.
12. acsent 1200 20.01.24 16:45 Сейчас в теме
Готовый шаблон. И прогресс там тоже есть
https://infostart.ru/1c/tools/943888/
Sam13; sandr13; +2 Ответить
14. dimanich70 644 20.01.24 17:36 Сейчас в теме
(12)Вот за это я и люблю Инфостарт. Можно получить советы и выбрать разные варианты.
13. quazare 3611 20.01.24 17:25 Сейчас в теме
А вот актуальный еще примерчик для работы в фоне https://infostart.ru/1c/tools/1874539/
Matveev_VS; sandr13; +2 Ответить
16. PerlAmutor 129 20.01.24 18:31 Сейчас в теме
Вот задачка на обдумывание на досуге. Во вложении простая обработка, которая при её открытии выводит сообщение "Тест". Вместо сообщения необходимо написать код, который запустит фоновое задание на конфигурации где нет БСП и нет возможности редактировать общие модули и создавать расширения. Добавлять формы в обработку запрещено.
Должна работать в Управляемом Приложении (обычное не рассматривается)
Прикрепленные файлы:
ВнешняяОбработкаВызовНаСервере.zip
sapervodichka; +1 1 Ответить
19. starik-2005 3039 22.01.24 06:52 Сейчас в теме
(16)
необходимо написать код, который запустит фоновое задание на конфигурации где нет БСП и нет возможности редактировать общие модули и создавать расширения
|Ну с учетом того, что фоновое задание 1С может быть запущено только как процедура общего серверного модуля, то для каждой "конфигурации без БСП" это будет по всей видимости разный код - в зависимости от склада мозга тех, кто вообще решил написать что-то без БСП. А если в такой вот "без БСП" конфигурации нет никакой функции, которая запускает что-то типа "Выполнить(Код)", которое можно выполнить в фоне, то, боюсь, задача невыполнима.
20. PerlAmutor 129 22.01.24 07:15 Сейчас в теме
(19) Непонятно почему в платформе 1С нет возможности добавлять свои частные модули к объектам конфигурации с такими же свойствами как "Клиент", "Сервер", "Вызов сервера". Нет единой "точки входа" в обработках. Например код в модуле объекта обработки вызывается автоматически лишь при создании обработки программно, при открытии формы, в толстом клиенте. Но если в обработке нет форм и это управляемое приложение, то при открытии внешней обработки из файла вообще никакого кода не вызывается, но появляется пустая форма (зачем она вообще нужна?). Я например хочу иметь возможность при открытии внешней обработки без форм - на стороне сервера получить двоичные данные самой обработки, создать второй экземпляр и запустить его в фоновом задании. В пустой или чужой конфигурации на поддержке такой сценарий не выполним.
22. SlavaKron 22.01.24 19:02 Сейчас в теме
(20)
Но если в обработке нет форм
Какое-то надуманное ограничение, тем более для внешней обработки. "Единой точкой входа" для внешней обработки в тонком клиенте является событие формы ПриОткрытии. Дальше делайте что угодно, хоть на клиенте, хоть на сервере. По поводу выполнения модуля внешней обработки в фоне уже написали в 19. Вы там через /Execute что ли запускаете epf?
24. RocKeR_13 1325 23.01.24 17:56 Сейчас в теме
(20) Открытие обработки в понимании 1С - это интерфейсная операция, соответственно, открытие обработки подразумевает открытие её основной формы: если форма не назначена, то 1С генерит ее автоматически и открывает. Программный интерфейс обработки определяется модулем объекта: если вам нужно обратиться к программному интерфейсу обработки - пишите в модуле обработки экспортные процедуры/функции и обращайтесь к ним из нужного кода. В БСП уже предусмотрен программный интерфейс для регламентного запуска команды из модуля внешней обработки в фоне или вручную по кнопке. Опять же, можно добавить свою форму и в событии ПриСозданииНаСервере прописать необходимые алгоритмы, после чего установить параметр Отказ в Истина, чтобы форма не открылась. Но таким извратом, конечно, не приходилось заниматься: всё-таки самописки делал на основе БСП, проблем с его внедрением благо нет. Тут надо исходить из того, почему вообще открывать внешнюю обработку - это можно, а написать расширение - это плохо и нельзя. С точки зрения безопасности как раз-таки вариант с расширением будет лучше, чем открытие обработки из проводника, где ее в любой момент могут подменить или она вообще может исчезнуть. Ну и в принципе 1С не рекомендует открывать внешние обработки)
23. PerlAmutor 129 22.01.24 21:09 Сейчас в теме
(22) Если в каком-нибудь внешнем отчете используется уже общая ФормаОтчета и она прописана в качестве основной формы, то никак ты "ПриОткрытии" не задействуешь, форма может быть чужой.
Оставьте свое сообщение