Одна обработка, чтобы править всеми
Задачи пользователя - Рабочее место
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Предлагаю вашему вниманию обработку Дополнительные возможности. Она может быть полезна, если у вас много однотипных баз, в которых используется много ваших внешних обработок, которые к тому же часто меняются. В данной обработке вы указываете каталог, в котором лежат все ваши *.epf и *.erf файлы, и обработка строит деревья с иерархией подкаталогов как в файловой системе:

При двойном щелчке по любой из обработок она программно откроется в вашей базе (обработка Дополнительные возможности при этом закроется). Это скромная альтернатива подсистеме "Дополнительные отчеты и обработки" в БСП. При изменении/доработке какой-либо из ваших внешних обработок вам не нужно будет распространять ее по всем вашим базам, повторно регистрировать в справочнике "Дополнительные обработки" или совершать какие-либо другие действия.
Внешние отчеты вынесены на отдельную закладку:

Для того, чтобы у всех пользователей обработка сразу "смотрела" на один и тот же каталог, зайдите в функцию МестоРасположенияПоУмолчанию() в модуле объекта и укажите там расположение по умолчанию. Вот как выглядит сам каталог, который обработка Дополнительные возможности сканирует для построения деревьев на скриншотах выше:

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

Но самый большой спектр возможностей вы получите, если включите ее в свою конфигурацию. Это даст вам возможность буквально одной строчкой программно вызывать методы внешних обработок, располагающихся в каталоге по умолчанию. Для этого вам нужно добавить обработку Дополнительные возможности в дерево метаданных, а также скопировать в модуль менеджера (по умолчанию он будет пустой) следующий код. Обратите внимание, что вам также потребуется создать небольшую процедуру ЗапускФоновогоМетода в своем общем модуле (это связано с тем, что в фоне можно выполнять только процедуры общих модулей).

Функция ПодключитьДополнительнуюОбработку(Знач ИмяОбработки, БезопасныйРежим = Ложь) Экспорт
ДополнительныеВозможности = Обработки.ДополнительныеВозможности.Создать();
Возврат ДополнительныеВозможности.ПодключитьДополнительнуюОбработку(ИмяОбработки, БезопасныйРежим);
КонецФункции
Функция ВыполнитьФункцию(ИмяОбработки, ИмяФункции, МассивПараметров = Неопределено) Экспорт
ДополнительныеВозможности = Обработки.ДополнительныеВозможности.Создать();
Возврат ДополнительныеВозможности.ВыполнитьФункцию(ИмяОбработки, ИмяФункции, МассивПараметров)
КонецФункции
Процедура ВыполнитьПроцедуру(ИмяОбработки, ИмяПроцедуры, МассивПараметров = Неопределено) Экспорт
ДополнительныеВозможности = Обработки.ДополнительныеВозможности.Создать();
ДополнительныеВозможности.ВыполнитьПроцедуру(ИмяОбработки, ИмяПроцедуры, МассивПараметров);
КонецПроцедуры
Функция ЗапуститьПроцедуруВФоне(ИмяОбработки, ИмяПроцедуры, МассивПараметров = Неопределено, Ключ = Неопределено) Экспорт
НовыйМассив = Новый Массив;
НовыйМассив.Добавить(ИмяОбработки);
НовыйМассив.Добавить(ИмяПроцедуры);
НовыйМассив.Добавить(МассивПараметров);
Если Ключ = Неопределено Тогда
Ключ = Строка(Новый УникальныйИдентификатор())
КонецЕсли;
АдресФоновогоМетода = АдресФоновогоМетода();
Описание = "Фоновое выполнение процедуры """ + ИмяПроцедуры + """ внешней обработки """ + ИмяОбработки + """";
Попытка
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Ключ", Ключ);
ПараметрыОтбора.Вставить("ИмяМетода", АдресФоновогоМетода);
ПараметрыОтбора.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
НайденныеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(ПараметрыОтбора);
Если НайденныеЗадания.Количество() > 0 Тогда
Сообщить("Уже существуют активные фоновые задания с такими параметрами", СтатусСообщения.Важное);
Возврат Ложь
КонецЕсли;
ФоновоеЗадание = ФоновыеЗадания.Выполнить(АдресФоновогоМетода, НовыйМассив, Ключ, Описание)
Исключение
Сообщить(ОписаниеОшибки());
Возврат Ложь
КонецПопытки;
Возврат Истина
КонецФункции
Функция АдресФоновогоМетода()
// необходимо указать адрес экспортной процедуры в общем
// неглобальном модуле, имеющей следующее тело:
//
// Процедура ЗапускФоновогоМетода(ИмяОбработки, ИмяПроцедуры, МассивПараметров = Неопределено) Экспорт
//
// Обработки.ДополнительныеВозможности.ВыполнитьПроцедуру(ИмяОбработки, ИмяПроцедуры, МассивПараметров)
//
// КонецПроцедуры
Возврат "МойОбщийМодуль.ЗапускФоновогоМетода"
КонецФункции
Пример вызова метода внешней обработки выглядит так:
Обработки.ДополнительныеВозможности.ВыполнитьПроцедуру("Синхронизация с доменом", "Синхронизировать");
Пример вызова метода внешней обработки в фоновом режиме:
Обработки.ДополнительныеВозможности.ЗапуститьПроцедуруВФоне("Служебные\Обмен данными с узлами", "ВыполнитьОбмен");
Можно и нужно использовать относительное расположение обработки в каталоге по умолчанию. Обработка "Обмен данными с узлами.epf" находится в каталоге \\FileStore\Public\1C\Служебные
P.S. Все файлы и каталоги, имя которых начинается на нижнее подчеркивание, игнорируются (не выводятся в дерево). Также возможны два метода сортировки дерева, подробнее можно посмотреть в конце процедуры ДобавитьСтрокиКДереву в модуле объекта.
Вступайте в нашу телеграмм-группу Инфостарт