Сведения о внешней обработке: Дополнительный отчет

22 Sep
Published by Nicholas

Универсальные функции для модуля дополнительных внешних отчетов (1С 8.3, управляемые формы).

Вариант № 1

Функция СведенияОВнешнейОбработке() Экспорт

   
ИмяОтчета = ЭтотОбъект.Метаданные().Имя;
   
Синоним = ЭтотОбъект.Метаданные().Синоним;
   
Синоним = ?(ЗначениеЗаполнено(Синоним), Синоним, ИмяОтчета);

   
РегистрационныеДанные = Новый Структура;
   
РегистрационныеДанные.Вставить("Вид", "ДополнительныйОтчет");
   
РегистрационныеДанные.Вставить("Наименование", Синоним);
   
РегистрационныеДанные.Вставить("Версия", "1.1");
   
РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
   
РегистрационныеДанные.Вставить("Информация", "Отчет " + Синоним);

   
ТаблицаКоманд = ПолучитьТаблицуКоманд();

   
ДобавитьКоманду(ТаблицаКоманд, Синоним, "СформироватьОтчет", "ОткрытиеФормы", Истина);

   
РегистрационныеДанные.Вставить("Команды", ТаблицаКоманд);

    Возврат
РегистрационныеДанные;

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

Функция
ПолучитьТаблицуКоманд()

   
Команды = Новый ТаблицаЗначений;
   
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
   
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
   
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
   
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
   
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));

    Возврат
Команды;

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

Процедура
ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ОткрытиеФормы", ПоказыватьОповещение = Ложь, Модификатор = "ПечатьMXL")

   
НоваяКоманда = ТаблицаКоманд.Добавить();
   
НоваяКоманда.Представление = Представление;
   
НоваяКоманда.Идентификатор = Идентификатор;
   
НоваяКоманда.Использование = Использование;
   
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
   
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры

Вариант № 2

// Возвращает сведения о внешней обработке.
//
// Возвращаемое значение:
// Структура - Подробнее см. ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке().
//
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
	
	ПараметрыЭтойОбработки = ПолучитьПараметрыЭтойОбработки(Ложь);
	
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Информация = ПараметрыЭтойОбработки.Комментарий
	+ ?(ЗначениеЗаполнено(ПараметрыЭтойОбработки.Комментарий), Символы.ПС, "")
	+ "Дата создания: 01.01.2020." + Символы.ПС
	+ "Дата последнего редактирования: 01.02.2020.";
	ПараметрыРегистрации.Версия = "1.0.0.1";
	ПараметрыРегистрации.БезопасныйРежим = Истина; // отключаем безопасный режим только при необходимости
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = ПараметрыЭтойОбработки.Синоним + " (настройки)";
	НоваяКоманда.Идентификатор = ПараметрыЭтойОбработки.Имя + "_Настройка";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = ПараметрыЭтойОбработки.Синоним + " (регламентное задание)";
	НоваяКоманда.Идентификатор = ПараметрыЭтойОбработки.Имя + "_РегламентноеЗадание";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

Функция ПолучитьПараметрыЭтойОбработки(ВызыватьИсключение = Истина) Экспорт
	
	ИмяОбработки = ЭтотОбъект.Метаданные().Имя;
	СинонимОбработки = ЭтотОбъект.Метаданные().Синоним;
	КомментарийОбработки = ЭтотОбъект.Метаданные().Комментарий;
	
	Ссылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", ИмяОбработки);
	Если Ссылка.Пустая() Тогда
		Если ВызыватьИсключение Тогда
			ВызватьИсключение "Данная обработка не зарегистрирована в справочнике внешних обработок!";
		КонецЕсли;
	КонецЕсли;
	
	ПараметрыЭтойОбработки = Новый Структура;
	ПараметрыЭтойОбработки.Вставить("Ссылка", Ссылка);
	ПараметрыЭтойОбработки.Вставить("Имя", ИмяОбработки);
	ПараметрыЭтойОбработки.Вставить("Синоним", ?(ЗначениеЗаполнено(СинонимОбработки), СинонимОбработки, ИмяОбработки));
	ПараметрыЭтойОбработки.Вставить("Комментарий", КомментарийОбработки);
	
	Возврат ПараметрыЭтойОбработки;
	
КонецФункции

Тэги 

1С 8

Комментарии

Аватар пользователя Александр

Спасибо тебе добрый человек!

Аватар пользователя Максим

Спасибо вам, второй пример просто замечательный

Аватар пользователя Nicholas

Пользуйтесь на здоровье)

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Вы человек или автоматическая спам-рассылка?
Target Image