Выгрузка новых стандартных обработок

24.04.20

Разработка - Механизмы платформы 1С

Описывается способ определить адрес ресурса, по которому стандартная обработка хранится в платформе 8.3, с последующим сохранением обработки в файл внешней обработки.

Тема выгрузки стандартных обработок не новая, предыдущие публикации:

1. //infostart.ru/public/369487/ 

2. //infostart.ru/public/400102/

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

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

Решение оказалось простым: 

1. Открываем стандартную обработку через "Все функции..."

2. Своей обработкой перебираем открытые окна, определяем окно открытой обработки и получаем ее имя

3. На основании этого имени определяем адрес ресурса

4. Копируем файл, как это было описано в //infostart.ru/public/369487/ 

Процедура для определения адреса ресурса:

&НаКлиенте
Процедура ОпределитьАдресРесурса(Команда)
	ОкнаПриложения = ПолучитьОкна();
	Для каждого ОкноПриложения Из ОкнаПриложения Цикл
		Если ОкноПриложения.Содержимое.Количество() Тогда
			ИмяОбъекта = Новый Структура("MetaPath,ИмяФормы");
			ЗаполнитьЗначенияСвойств(ИмяОбъекта, ОкноПриложения.Содержимое[0]);
			Если СтрНачинаетсяС(ИмяОбъекта.MetaPath, "ВнешняяОбработка.Stand") Тогда
				ЭтотОбъект.АдресРесурса = СтрШаблон("v8res://mngbase/%1.epf", СтрРазделить(ИмяОбъекта.MetaPath, ".")[1]);
				Прервать;
			ИначеЕсли СтрНачинаетсяС(ИмяОбъекта.ИмяФормы, "ВнешняяОбработка.Stand") Тогда
				ЭтотОбъект.АдресРесурса = СтрШаблон("v8res://mngbase/%1.epf", СтрРазделить(ИмяОбъекта.ИмяФормы, ".")[1]);
				Прервать;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

Процедура для сохранения файла:

&НаКлиенте
Процедура СохранитьОбработку(Команда)
	ИмяОбработки = Сред(ЭтотОбъект.АдресРесурса, СтрНайти(ЭтотОбъект.АдресРесурса, "/", НаправлениеПоиска.СКонца) + 1);
	ИмяФайлаНазначения = ЭтотОбъект.КаталогНазначения + "\" + ИмяОбработки;
	КопироватьФайл(ЭтотОбъект.АдресРесурса, ИмяФайлаНазначения);
КонецПроцедуры

Проверено на платформе 8.3.16.

update: внес изменения для получения обработки "Активные пользователи"

стандартные обработки

См. также

Сервисы интеграции без Шины и интеграции

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

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    2568    dsdred    16    

59

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    5928    dsdred    55    

83

Как готовить и есть массивы

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

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5878    YA_418728146    25    

68

Планы обмена VS История данных

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

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6981    dsdred    36    

113

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    19077    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

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

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

14.09.2023    12786    human_new    27    

76

Валидация JSON через XDTO (включая массивы)

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

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

28.08.2023    9412    YA_418728146    6    

143

Внешние компоненты Native API на языке Rust - Просто!

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

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

20.08.2023    6531    sebekerga    54    

95
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 750 24.04.20 15:16 Сейчас в теме
Только вот остальные встроенные формы (например сама форма выбора Стандартных Обработок) ваш механизм не определит. Да и "Активные пользователи" тоже не видит.
2. anddro 84 24.04.20 16:07 Сейчас в теме
(1) Саму формы выбора - нет, не сохранит, т.к. она открытвается с блокированием интерфейса. С активными пользователями метод (перебор окон) тоже сработает, но в этом случае имя надо брать из свойства "ИмяФормы":

			ИмяОбъекта = Новый Структура("MetaPath,ИмяФормы");
			ЗаполнитьЗначенияСвойств(ИмяОбъекта, ОкноПриложения.Содержимое[0]);
			Если СтрНачинаетсяС(ИмяОбъекта.MetaPath, "ВнешняяОбработка.Stand") Тогда
				ЭтотОбъект.АдресРесурса = СтрШаблон("v8res://mngbase/%1.epf", СтрРазделить(ИмяОбъекта.MetaPath, ".")[1]);
				Прервать;
			ИначеЕсли СтрНачинаетсяС(ИмяОбъекта.ИмяФормы, "ВнешняяОбработка.Stand") Тогда
				ЭтотОбъект.АдресРесурса = СтрШаблон("v8res://mngbase/%1.epf", СтрРазделить(ИмяОбъекта.ИмяФормы, ".")[1]);
				Прервать;
			КонецЕсли;
Показать
3. json 3306 24.04.20 16:38 Сейчас в теме
(2) если форма открывается с блокированием интерфейса, то можно использовать обработчик ожидания. В момент, когда интерфейс заблокирован окном, обработчик все равно отрабатывает. В нем можно перебрать окна и потом, скажем, вывести всплывающее сообщение.
4. ixijixi 1796 23.11.20 22:15 Сейчас в теме
А как справиться со всплывающими окнами типа Избранное, История? Есть какой-нибудь действенный метод?
5. Obertone 74 08.10.21 07:40 Сейчас в теме
Кстати, как получить встроенные в предприятие редакторы файлов HTML и географических схем?
Оставьте свое сообщение