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

19.01.24

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

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

Скачать файл

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

Наименование SM По подписке [?] Купить один файл
Выполнение любой дополнительной обработки в фоне:
.epf 10,66Kb
18
18
3 SM
Скачать Купить за 2 450 руб.

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

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

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

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

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

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

См. также

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

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

10000 руб.

02.09.2020    139741    767    391    

800

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

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

18000 руб.

06.10.2023    11405    30    6    

60

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

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

10000 руб.

10.11.2023    7174    26    4    

50

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

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

5400 руб.

17.05.2024    13269    29    27    

74

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

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

3600 руб.

14.01.2013    181683    1103    0    

876

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

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

15000 руб.

07.10.2021    15950    3    12    

38

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

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

5000 руб.

07.02.2018    101069    242    97    

302

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

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

2400 руб.

24.09.2019    24461    17    15    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Nikola23 700 19.01.24 14:28 Сейчас в теме
Мне одному кажется, что то самое время "прошло" где-то в 2012 году. А то и раньше?
(Сарказм)
DrAku1a; Matveev_VS; sinichenko_alex; maksa2005; RocKeR_13; +5 Ответить
2. dimanich70 834 19.01.24 16:40 Сейчас в теме
3. Xershi 1504 19.01.24 19:30 Сейчас в теме
(1) на днях использовал алгоритмы тех времён+)) Спасибо тормозить!
28. DrAku1a 1730 26.01.24 09:09 Сейчас в теме
(1) На самом деле, "время прошло" - в этом году, т.к. ушла в вечность (снята с поддержки) последняя популярная типовая конфигурация - "Управление торговлей 10.3", и те, кто ещё кодил под обычные формы - переучиваются...
29. RustIG 1719 26.01.24 09:43 Сейчас в теме
(28) Андрей, привет! А есть офиц. письмо об этом?
30. DrAku1a 1730 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 1719 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 834 20.01.24 07:11 Сейчас в теме
(4)Спасибо. Не знал. Буду смотреть. Теперь есть выбор.
6. user792443 20.01.24 12:32 Сейчас в теме
ОбщегоНазначенияКлиентСервер.СообщитьПользователю устаревшая, нельзя использовать
7. sapervodichka 6860 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 6860 20.01.24 14:35 Сейчас в теме
(9) Мину снова заложили 1С ки. Хоть метод и рабочий, и в состав типовых конфигураций входит, и в типовых модулях используется. Уже как писал 5 лет на него смотрю, всё устарел, да, устарел написано. Надеюсь в 1С ещё работает разраб, который его хотел отключить, а то как-то затянулось и можно и нельзя.
Прикрепленные файлы:
dimanich70; ixijixi; sandr13; +3 Ответить
15. dimanich70 834 20.01.24 17:59 Сейчас в теме
17. user792443 20.01.24 18:31 Сейчас в теме
(15) ОбщегоНазначения.СообщитьПользователю
Вообще возле устаревших можно почитать всю информацию от разработчиков БСП
21. Bassgood 1437 22.01.24 15:55 Сейчас в теме
(17) Получается вызывается только на сервере (модуль же серверный)?
А если нужно выдать сообщение с клиентской части - переходить на сервер только для того, чтобы вызвать этот метод?
25. Teplotrassamen 23.01.24 18:55 Сейчас в теме
(21)Нет, для клиента аналогично ОбщегоНазначенияКлиент.СообщитьПользователю
26. Bassgood 1437 23.01.24 18:59 Сейчас в теме
(25) Тогда не понимаю зачем убрали вызов этого метода из более подходящего для обоих контекстов (клиента и сервера) общего модуля "ОбщегоНазначенияКлиентСервер", вместо этого разнесли его по двум модулям, в чем прикол?
27. Teplotrassamen 23.01.24 19:03 Сейчас в теме
(26) Пути 1С не исповедимы) У меня в основной базе старое бсп и там есть только метод НаКлиентеНаСервере, не так давно начал допиливать ЗУП и БУХ (актуальные версии) и там с удивлением обнаружил что СообщитьПользователю разнесено. Ну запомнил и в ЗУП с БУХом стал писать когда нужно в зависимости от контекста.
11. quazare 3727 20.01.24 15:26 Сейчас в теме
Ребята, все можно сделать гораздо проще, через «выполнить команду»

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


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