Автоматическая регистрация внешнего отчета или обработки для управляемых форм

12.03.20

Задачи пользователя - Менеджеры внешних отчетов

Автоматическая регистрация отчёта или обработки в справочнике Дополнительные отчеты и обработки при открытии. Протестировано на: Бухгалтерия предприятия, редакция 3.0 (3.0.75.37) 1С:Предприятие 8.3 (8.3.16.1224), автоматически добавляется в раздел - "Руководителю", в быстрый доступ добавляется текущий пользователь. Поиск в интернете не дал положительных результатов. Сделал сам. Делюсь с вами. Часть кода жестко привязывает обработку к разделу / пользователи и..д. и.т.п но так и задумано. Напильником обработать под себя.

Скачать файлы

Наименование Файл Версия Размер
Автоматическая регистрация внешнего отчета или обработки:
.epf 10,73Kb
1
.epf 10,73Kb 1 Скачать

Создаем две формы.

1. ОбновитьОбработку

2. ФормаОбработки

 

Основной выставляем - первую.

Код для процедуры при открытии:


&НаСервере
Процедура ПриОткрытииНаСервере()
	ОтчетОбъект = РеквизитФормыВЗначение("Объект");
	ПутьКФайлу = Новый ДвоичныеДанные( ОтчетОбъект.ИспользуемоеИмяФайла );
	Адрес = ПоместитьВоВременноеХранилище(ПутьКФайлу, ЭтаФорма.УникальныйИдентификатор);
	ОтчетОбъект.ОбновитьВрешнююОбработку( Адрес, ПутьКФайлу );
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ПриОткрытииНаСервере();
	Отказ	= Истина;
	ОткрытьФорму("ВнешняяОбработка.АвтоРегистрацияОбработки.Форма.ФормаОбработки");
КонецПроцедуры

 

В модуле объекта пишем:

 

Перем	мВерсия;
Перем	мНаименованиеОбр;


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


&НаСервере
Процедура ОбновитьВрешнююОбработку( Адрес, ПутьКФайлу ) Экспорт
	
	ИмяФайла	= Новый Файл(ПутьКФайлу);
	ИмяФайла	= ИмяФайла.Имя;
	СведенияОбр	= СведенияОВнешнейОбработке();
	
	//Наищем нужный нам раздел
	ИспользуемыеРазделы = Новый Массив;
	//Если ВидОбр	= Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка Тогда
		ИспользуемыеРазделы = ДополнительныеОтчетыИОбработки.РазделыДополнительныхОбработок();
	//Иначе
	//	ИспользуемыеРазделы = ДополнительныеОтчетыИОбработки.РазделыДополнительныхОтчетов();
	//КонецЕсли;
	
	РабочийСтол = ДополнительныеОтчетыИОбработкиКлиентСервер.ИмяНачальнойСтраницы();
	Раздел = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка();
	Для Каждого Раздел Из ИспользуемыеРазделы Цикл
		ПредстРаздела 	= ДополнительныеОтчетыИОбработки.ПредставлениеРаздела(	Раздел	);
		Если ПредстРаздела = "Руководителю" ТОгда
			Раздел = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Раздел);
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	
	СпрВО	=	Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию( мНаименованиеОбр );
	
	Если СпрВО.Пустая()	Тогда
		СпрВО_О	= Справочники.ДополнительныеОтчетыИОбработки.СоздатьЭлемент();
		СпрВО_О.Наименование	= мНаименованиеОбр;
		СпрВО_О.БезопасныйРежим	= Ложь;
		СпрВО_О.Версия			= мВерсия;
		СпрВО_О.Вид				= Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка;
		СпрВО_О.ИмяОбъекта		= ЭтотОбъект.Метаданные().ПолноеИмя();
		СпрВО_О.ИмяФайла		= ЭтотОбъект.ИспользуемоеИмяФайла; // "SendMessage.epf";
		СпрВО_О.Информация		= мНаименованиеОбр;
		СпрВО_О.ИспользоватьДляФормыОбъекта	= Истина;
		СпрВО_О.ИспользоватьДляФормыСписка	= Истина;
		СпрВО_О.Ответственный	= ПараметрыСеанса.ТекущийПользователь;
		СпрВО_О.Публикация		= Истина;
		СпрВО_О.РежимСовместимостиРазрешений	= Перечисления.РежимыСовместимостиРазрешенийДополнительныхОтчетовИОбработок.Версия_2_1_3;
		
		СпрВО_О.ОбменДанными.Загрузка	= Истина;
		СпрВО_О.Записать();
	Иначе
			СпрВО_О	= СпрВО.ПолучитьОбъект();
			Если 	СпрВО.Версия < мВерсия Тогда
				Возврат;
		КонецЕсли;
	КонецЕсли;
	
	ДвоичныеДанные = ПолучитьИзВременногоХранилища( Адрес );
	//ВремФайл	= ПолучитьИмяВременногоФайла("tmp");
	//ДвоичныеДанные.Записать( ВремФайл );	
	ХранилищеОбр				= Новый ХранилищеЗначения( ДвоичныеДанные );
	СпрВО_О.ХранилищеОбработки	= ХранилищеОбр;
	
	//Добавим раздел доступа для каждой команды - Руководителю
	СпрВО_О.Команды.Очистить();
	Для Каждого ИнфОбОбр	из СведенияОбр.Команды Цикл
		//Добавим команды
		Ком		= СпрВО_О.Команды.Добавить();
		Ком.Идентификатор	= ИнфОбОбр.Идентификатор;
		Ком.ВариантЗапуска	= Перечисления.СпособыВызоваДополнительныхОбработок[ИнфОбОбр.Использование];
		Ком.Представление	= ИнфОбОбр.Представление;
		Ком.ПоказыватьОповещение	= Ложь;
		
		
		//Добавим раздел доступа  - Руководителю
		РегДоступа = РегистрыСведений.ПользовательскиеНастройкиДоступаКОбработкам;
		НаборДост = РегДоступа.СоздатьНаборЗаписей();
		
		НаборДост.Отбор.ДополнительныйОтчетИлиОбработка.Установить(СпрВО_О.Ссылка);
		НаборДост.Отбор.ИдентификаторКоманды.Установить( ИнфОбОбр.Идентификатор );
		НаборДост.Отбор.Пользователь.Установить( ПараметрыСеанса.ТекущийПользователь );
		НаборДост.Прочитать();
		
		Если НаборДост.Количество() = 0 Тогда
			ДовыйДоступ = НаборДост.Добавить();
		ИначеЕсли НаборДост.Количество() = 1 Тогда
			ДовыйДоступ = НаборДост[0];
		КонецЕсли;
		ДовыйДоступ.ДополнительныйОтчетИлиОбработка		= СпрВО_О.Ссылка;
		ДовыйДоступ.ИдентификаторКоманды				= ИнфОбОбр.Идентификатор ;
		ДовыйДоступ.Пользователь						= ПараметрыСеанса.ТекущийПользователь;
		ДовыйДоступ.Доступно							= Истина;
		НаборДост.Записать();   	
		
	КонецЦикла;
	СпрВО_О.ОбменДанными.Загрузка	= Истина;
	СпрВО_О.Записать();
	
КонецПроцедуры



мВерсия				= "1.1";
мНаименованиеОбр	= "Авто регистрация обработки";

 

Автоматическая регистрация во внешних отчётах обработках

См. также

Добавление отчета в расширение и вывод в меню отчетов на БСП на примере УТ 11.5

Менеджеры внешних отчетов Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Пример добавления отчета в расширение в типовые конфигурации на БСП на примере УТ 11.5, с добавлением в типовые меню отчетов.

1 стартмани

31.01.2024    852    DarkPinch222    0    

9

СКД, пример выбора варианта в обработке

Менеджеры внешних отчетов СКД Платформа 1С v8.3 Управляемые формы Система компоновки данных 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Абонемент ($m)

Пример выбора варианта отчета СКД в обработке. Варианты отчета хранятся в Макетах обработки.

1 стартмани

29.12.2023    819    4    vladimir_korshun    0    

6

Менеджер отчетов

Менеджеры внешних отчетов Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

5 стартмани

04.09.2023    699    3    serg1234    0    

3

Расширение «Контрольные отчеты» для автоматизации проверки ведения учета в 1С:ERP 2х, 1С:КА 2.х

Менеджеры внешних отчетов Анализ учета Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Платные (руб)

Расширение «Контрольные отчеты» для автоматизации процесса проверки ведения учета в ПП. Со списком ошибок могут работать ответственные пользователи. Помогает в процессе внедрения ПП находить нарушения в бизнес-процессах. 

12000 руб.

08.08.2023    1458    1    1    

4

Менеджер внешних обработок и отчетов

Инструментарий разработчика Менеджеры внешних отчетов Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

При изменении и отладке внешней обработки приходится десятки раз заходить в Файл-Открыть и переоткрывать обработку. Данное решение значительно упрощает данную задачу.

1 стартмани

28.07.2023    4395    47    Serg2000mr    30    

58

[Расширение] Открытие варианта отчета из формы отчета

Менеджеры внешних отчетов Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Добавление кнопки "Показать в списке" в формах отчетов для открытия соответствующего элемента справочника "Варианты отчетов".

1 стартмани

12.12.2022    1363    0    RocKeR_13    2    

4

Раздел меню внешних отчетов и обработок (расширение конфигурации на БСП)

Рабочее место Менеджеры внешних отчетов 8.3.14 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Абонемент ($m)

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

2 стартмани

12.04.2022    6053    36    Obertone    7    

25

Поиск варианта отчетов

Менеджеры внешних отчетов Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Управляемые формы. Обработка - поиск варианта отчета по ссылке на вариант. Полезно для конфигураций, имеющих справочник Варианты отчетов.

1 стартмани

02.03.2022    3595    6    Topmuk    0    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. platonov.e 158 12.03.20 16:11 Сейчас в теме
А при открытии этой же обработки потом из справочника? Что будет? Она опять попытается себя загрузить? Не выдаст ли ошибку на то что в ИспользуемоеИмяФайла не путь к обработки лежит?)
А что будет в двоичных данных, когда открываете вы файл на локальном компе, а база лежит на сервере? Вы ведь ДД загружаете на сервере...
3. agent00mouse 253 13.03.20 10:22 Сейчас в теме
(1) сравнивается версия. при равной ни чего не происходит и открывается форма обработки
7. platonov.e 158 13.03.20 10:53 Сейчас в теме
(3) так может на клиенте проверить?
И что с двоичными данными на сервере то? ок отрабатывает?
8. agent00mouse 253 13.03.20 13:06 Сейчас в теме
(7)Таки не только можно но и нужно. Спасибки. В Рефакторинг.
2. VmvLer 12.03.20 16:11 Сейчас в теме
не понял, для чего этой велик со сломанным рулем(
4. agent00mouse 253 13.03.20 10:24 Сейчас в теме
(2)Где сломано?
Облегчена жизнь рядовому пользователю. йуЗверь скачивает обработки и запускает оную. Вопрос интеграции закрыт не открывшись.
Понятно, что дыра в виде прав на запуск внешних отчётов и обработок присутствует.
Можно добавить вообще cmd для автоматического засасывания обработки в базу с командной строки. А в коде реализовать подбор правильных пользователей и нужных разделов.
5. VmvLer 13.03.20 10:28 Сейчас в теме
(4) не-а.
обычный юзер приобретет приключения на 5-ю точку и все, а спец будет терять время на понимание вашей уникальной логики.
6. agent00mouse 253 13.03.20 10:32 Сейчас в теме
(5) ...Каждый выбирает для себя... как и какие кактусы ему грызть
9. SlavaKron 16.06.20 08:44 Сейчас в теме
Сильно не вникал, но код:
&НаСервере
Процедура ПриОткрытииНаСервере()
	ОтчетОбъект = РеквизитФормыВЗначение("Объект");
	ПутьКФайлу = Новый ДвоичныеДанные( ОтчетОбъект.ИспользуемоеИмяФайла );
	Адрес = ПоместитьВоВременноеХранилище(ПутьКФайлу, ЭтаФорма.УникальныйИдентификатор);
	ОтчетОбъект.ОбновитьВрешнююОбработку( Адрес, ПутьКФайлу );
КонецПроцедуры
будет работать только в том случае, если у вас файловая база или 1С Предприятие вы открываете на сервере, в остальных случаях ИспользуемоеИмяФайла имеет смысл только на клиенте.
Оставьте свое сообщение