Создание обработки с использованием СведенияОВнешнейОбработке() в 1С

26.04.24

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

Из этой статьи вы узнаете, как создавать внешние обработки со СведенияОВнешнейОбработке() для тех или иных целей. К примеру для открытия формы, формирования печатной формы, вызов серверного метода и т.п.

Давайте подробно рассмотрим каждый из способов:

1. Открытие формы

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

	Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
	ПараметрыРегистрации.Разрешения.Добавить(Разрешение); 
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

Как мы видим, строку ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();

как раз это реализует.

2. Вызов серверного метода.

Функция СведенияОВнешнейОбработке() Экспорт
		
	
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(); 
	
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();   
	ПараметрыРегистрации.Наименование = "ВызовСерверногоМетода";
	ПараметрыРегистрации.Версия = "1.0";
	ПараметрыРегистрации.Информация = "ВызовСерверногоМетода";   
	ПараметрыРегистрации.БезопасныйРежим = ложь;  
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'ВыполнитьПроцедуруНаСервере'");
	НоваяКоманда.Идентификатор = "ВыполнитьПроцедуруНаСервере";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Ложь;

		
	Возврат ПараметрыРегистрации;

КонецФункции


Процедура ВыполнитьПроцедуруНаСервере(имяфайла,строка)
	//Текст модуля выполняемый на сервере	
КонецПроцедуры

НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); 

Этот параметр запускает команду на сервере без открытия формы.

3. Заполнение объекта.

К примеру, нам необходимо, чтобы в документе "Табель" появилась кнопка "Заполнить отсутствия"

Перем мОбъект Экспорт;
Перем мИмяТабличнойЧасти Экспорт;

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



После чего в форме обработке добавим код

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ДанныеОВремениСФормы = ВладелецФормы.Объект.ДанныеОВремени;
КонецПроцедуры

Теперь мы можем получать данные из реквизитов документа табель через ВладелецФормы.Объект

 

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

К примеру:

Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаФайловойСистемы("/usr/bin/",Истина,Истина); //на Linux
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаФайловойСистемы("c:\",Истина,Истина); //на Windows
ПараметрыРегистрации.Разрешения.Добавить(Разрешение); 
    
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима(); 
ПараметрыРегистрации.Разрешения.Добавить(Разрешение); 
    
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Истина, Истина);
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);   

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

См. также

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

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    3921    bayselonarrend    18    

142

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

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

13.03.2024    3977    dsdred    16    

74

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

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

24.01.2024    9328    YA_418728146    25    

70

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

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

11.12.2023    8766    dsdred    44    

123

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

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

06.10.2023    20982    SeiOkami    46    

129

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

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

14.09.2023    15088    human_new    27    

79

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

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

28.08.2023    11422    YA_418728146    7    

153
Отзывы
1. Fox-trot 161 26.04.24 11:12 Сейчас в теме
ни слова про функцию РазрешениеНаИспользованиеИнтернетРесурса()
почему? ни разу не пригодилось?
а вообще там много чего полезного в общих модулях РаботаВБезопасномРежиме*
Torin; Indgo; +2 Ответить
5. JOJ73 03.05.24 09:39 Сейчас в теме
Я бы рекомендовал:

ПараметрыРегистрации.Версия = Формат(ТекущаяДата(),"ДЛФ=Д");

Всегда можно узнать когда обработка добавлялась.
И если много разработчиков, то:

ПараметрыРегистрации.Информация = "by <ИмяАвтора>";
demONx7; Indgo; +2 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Fox-trot 161 26.04.24 11:12 Сейчас в теме
ни слова про функцию РазрешениеНаИспользованиеИнтернетРесурса()
почему? ни разу не пригодилось?
а вообще там много чего полезного в общих модулях РаботаВБезопасномРежиме*
Torin; Indgo; +2 Ответить
2. Indgo 410 26.04.24 22:51 Сейчас в теме
3. webester 26 27.04.24 06:49 Сейчас в теме
И вызова метода на клиенте, тоже не хватает. И хорошо бы еще ссылку на оф документацию. Где есть более подробное описание ИТС. Создание нового отчета или обработки
4. Xershi 1504 27.04.24 14:31 Сейчас в теме
Ещё стоит упомянуть, что модуль для работы в безопасном режиме раньше назывался иначе. Я у себя доработку сделал, чтобы сначала искало старый, если не нашло брало новый. Скорее всего это переход с бсп 3.0 на 3.1.
5. JOJ73 03.05.24 09:39 Сейчас в теме
Я бы рекомендовал:

ПараметрыРегистрации.Версия = Формат(ТекущаяДата(),"ДЛФ=Д");

Всегда можно узнать когда обработка добавлялась.
И если много разработчиков, то:

ПараметрыРегистрации.Информация = "by <ИмяАвтора>";
demONx7; Indgo; +2 Ответить
6. Indgo 410 03.05.24 22:48 Сейчас в теме
(5) спасибо. Очень полезно
Оставьте свое сообщение