Внешняя универсальная панель отчетов для управляемых форм (открытый код)

18.03.14

Разработка - Работа с интерфейсом

Внешняя универсальная панель отчетов для управляемых форм (открытый код)

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

Наименование Файл Версия Размер
ВнешняяПанельОтчетов
.epf 36,98Kb
16
.epf 1.1 36,98Kb 16 Скачать
Внешняя панель отчетов для типовых
.epf 36,94Kb
15
.epf 1.1 36,94Kb 15 Скачать

Сколько раз уже пользователи жаловались на то, что неудобно искать отчеты в стандартных конфигурациях на управляемых формах, а также на самописных.
Решено было взять за основу панель отчетов, представленную в УТ 11.1
Сделал внешнюю обработку, все процедуры из общих модулей разместил в модуле объекта обработки и модуле формы (серверные и клиентские соответственно)
Запускается в любой конфигурации под управляемыми формами

Порядок действий:
0. При запуске появляется окно со всеми подсистемами, имеющимися в конфигурации
1. Выбираем подсистему и нажимаем "Отобразить отчеты по подсистеме"
2. Отображаются отчеты соответствующей подсистемы, сгруппированные по вложенным подсистемам в соответствии с правами доступа текущего пользователя
3. Можно отобразить или скрыть сразу все варианты отчетов в этом списке. Для этого служит переключатель в верхней части формы. Настройка индивидуальна для каждого пользователя

P.S.: можно легко внедрить в конфигурацию или подключить как внешнюю обработку.

буду рад замечаниям и предложениям

универсальная панель отчетов внешняя панель отчетов

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61797    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54403    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    16698    21    4    

35

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    10738    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

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

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    9615    151    acces969    31    

118

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3666    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12082    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Zord 15.04.14 15:47 Сейчас в теме
При открытии выдает

{ВнешняяОбработка.ВнешняяПанельОтчетов.МодульОбъекта(2,29)}: Переменная с указанным именем уже определена (ДополнительныеОтчетыИОбработки)
Перем ПараметрыРегистрации, <<?>>ДополнительныеОтчетыИОбработки, ДополнительныеОтчетыИОбработкиКлиентСервер;
{ВнешняяОбработка.ВнешняяПанельОтчетов.МодульОбъекта(2,61)}: Переменная с указанным именем уже определена (ДополнительныеОтчетыИОбработкиКлиентСервер)
Перем ПараметрыРегистрации, ДополнительныеОтчетыИОбработки, <<?>>ДополнительныеОтчетыИОбработкиКлиентСервер;
2. veretennikoff 33 30.04.14 10:20 Сейчас в теме
(1) Zord, очень странно..
я пробовал на УТ 11, БСП и нескольких самописных - такой ошибки не возникало
напишите хоть какая конфигурация у вас, чтобы я мог проверить
3. veretennikoff 33 13.11.14 17:45 Сейчас в теме
4. ray-xp 20 01.04.19 13:45 Сейчас в теме
Замечательная панель.Однако обнаружил, если отчетов в конфигурации много, например в УПП, то строится медленно из-за перебора всех отчетов конфигурации и проверки вхождения в подсистему, и так для каждой подсистемы .
Подправил процедуру ОбновитьПанельОтчетов
Так работает быстрее
&НаСервере
Процедура ОбновитьПанельОтчетов(Отказ = ложь, ИмяПодсистемы)
	
	Если Элементы.ГруппаОсновная.ПодчиненныеЭлементы.Количество() Тогда
		//Удаляем все вложенные в нее элементы
		ПодчиненныеЭлементыОсновнойГруппы = Элементы.ГруппаОсновная.ПодчиненныеЭлементы;
		КолвоЭлементов = ПодчиненныеЭлементыОсновнойГруппы.Количество();
		Для Сч=1 По КолвоЭлементов Цикл
			Элементы.Удалить(ПодчиненныеЭлементыОсновнойГруппы.Получить(КолвоЭлементов-Сч));
		КонецЦикла;
	КонецЕсли;
	
	ТекущаяПодсистема = Неопределено;
	Найдена = Ложь;
	
	Для Каждого Подсистема Из Метаданные.Подсистемы Цикл		
		Найдена = ПроверитьПодсистему(Подсистема, ИмяПодсистемы);
		Если Найдена Тогда 
			ТекущаяПодсистема = Подсистема;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	МассивПодсистем = Новый Массив;
	НайтиВложенныеПодсистемы(МассивПодсистем,ТекущаяПодсистема);
	МассивПодсистем.Добавить(ТекущаяПодсистема);
	
	СделатьИменаУникальными(МассивПодсистем);
	
	МассивЭлементов = Новый Массив;
	
	Для каждого ЭлементГруппыСсылка из Элементы.ГруппаОсновная.ПодчиненныеЭлементы Цикл
		Если ЭлементГруппыСсылка.Имя = "КартинкаОтчета" тогда
			Продолжить;
		КонецЕсли;
		МассивЭлементов.Добавить(ЭлементГруппыСсылка);
	КонецЦикла;
	
	Для каждого ЭлементГруппыСсылка из Элементы.ГруппаСмТакжеСпискиОтчетов.ПодчиненныеЭлементы Цикл
		МассивЭлементов.Добавить(ЭлементГруппыСсылка);
	КонецЦикла;
	
	Для каждого ЭлементГруппыСсылка из МассивЭлементов Цикл
		Элементы.Удалить(ЭлементГруппыСсылка);		
	КонецЦикла;
	
	МассивКоманд = Новый Массив;
	
	Для каждого Команда из Команды Цикл
		Если Команда.Имя = "ОбщийСписокВариантовОтчетов" тогда
			Продолжить;
		КонецЕсли;
		МассивКоманд.Добавить(Команда);
	КонецЦикла;
	
	Для каждого Команда из МассивКоманд Цикл
		Если Команда.Имя = "ИзменитьВариантОтображения" ИЛИ Команда.Имя = "Назад" Тогда
			Продолжить;
		КонецЕсли;
		Команды.Удалить(Команда);
	КонецЦикла;
	
	СгруппированныйСписокВариантовОтчетов = Новый ДеревоЗначений;
	СгруппированныйСписокВариантовОтчетов.Колонки.Добавить("Ключ");
	СгруппированныйСписокВариантовОтчетов.Колонки.Добавить("Представление");
	СгруппированныйСписокВариантовОтчетов.Колонки.Добавить("Описание");
	СгруппированныйСписокВариантовОтчетов.Колонки.Добавить("Группировка");
	СгруппированныйСписокВариантовОтчетов.Колонки.Добавить("ГруппировкаПредставление");
	СгруппированныйСписокВариантовОтчетов.Колонки.Добавить("Сортировка");
	СгруппированныйСписокВариантовОтчетов.Колонки.Добавить("БыстрыйДоступ");
	
	ТекПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();	
	
	Для Каждого ПодсистемаИзМассива Из МассивПодсистем Цикл
		
		// уровень 0	
		СтрокаГруппировкиОтчета = СгруппированныйСписокВариантовОтчетов.Строки.Добавить();
		СтрокаГруппировкиОтчета.Группировка = Строка(ПодсистемаИзМассива.ПолноеИмя());
		СтрокаГруппировкиОтчета.ГруппировкаПредставление = Строка(ПодсистемаИзМассива.Синоним);
		
		// уровень 1
		Запрос = Новый Запрос;
		Сч = 1;
		ТекстЗапроса = "";
		УстановитьПривилегированныйРежим(Истина);
		//{{ ray
		лСостав = ПодсистемаИзМассива.Состав;
		//Для Каждого Отчет Из Отчеты Цикл
		Для Каждого лОобъектМД Из лСостав Цикл
			Если Лев(лОобъектМД.ПолноеИмя(),3)<>"Отч" Тогда
				Продолжить;
			КонецЕсли;		
			Отчет = Отчеты[лОобъектМД.Имя];
		//}} ray		
			ОтчетОбъект = Отчет.Создать();
			ПредставлениеОтчета = ОтчетОбъект.Метаданные().Синоним;
			ИмяОтчета = СтрЗаменить(Отчет,"ОтчетМенеджер.","");
			
			Если Не ПравоДоступа("Просмотр", ОтчетОбъект.Метаданные(), ТекПользователь) Тогда
				Продолжить;
			КонецЕсли;
			//{{ ray
			////отобразим отчеты только входящие в данную подсистему
			//Если Не ПодсистемаИзМассива.Состав.Содержит(ОтчетОбъект.Метаданные()) Тогда
			//	Продолжить;
			//КонецЕсли;
			//}} ray
			
			Если ОтчетОбъект.СхемаКомпоновкиДанных=Неопределено ИЛИ Не ОтображатьВариантыОтчетов Тогда
				ТекстЗапроса = ТекстЗапроса + ?(Сч=1,"ВЫБРАТЬ","ОБЪЕДИНИТЬ ВЫБРАТЬ")+Символы.ПС
				+ "#П1"
				+ПредставлениеОтчета
				+ "#П1"
				+?(Сч=1," КАК НаименованиеВарианта,",",")
				+Символы.ПС
				+ "#П1"
				+"Отчет." + ИмяОтчета
				+ "#П1"
				+?(Сч=1," КАК ПутьКВарианту","")
				+Символы.ПС;
			Иначе 
				Для Каждого Вариант Из ОтчетОбъект.СхемаКомпоновкиДанных.ВариантыНастроек Цикл
					ТекстЗапроса = ТекстЗапроса + ?(Сч=1,"ВЫБРАТЬ","ОБЪЕДИНИТЬ ВЫБРАТЬ")+Символы.ПС
					+ "#П1"
					+ПредставлениеОтчета+": " + Вариант.Представление
					+ "#П1"
					+?(Сч=1," КАК НаименованиеВарианта,",",")
					+Символы.ПС
					+ "#П1"
					+"Отчет." + ИмяОтчета + "\" + Вариант.Имя
					+ "#П1"
					+?(Сч=1," КАК ПутьКВарианту","")
					+Символы.ПС;
					Сч = Сч+1;
				КонецЦикла;
			КонецЕсли;
			
			Сч = Сч+1;
			
		КонецЦикла;
		УстановитьПривилегированныйРежим(Ложь);
		
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, """", """""");
		ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#П1", """");
		Запрос.Текст = ТекстЗапроса;
		Если Запрос.Текст="" Тогда
			Продолжить;
		КонецЕсли;
		
		Выборка = Запрос.Выполнить().Выбрать();
		
		Пока Выборка.Следующий() Цикл
			ПодСтрокаГруппировкиОтчета = СтрокаГруппировкиОтчета.Строки.Добавить();
			ПодСтрокаГруппировкиОтчета.БыстрыйДоступ = Истина;
			ПодСтрокаГруппировкиОтчета.Группировка = Выборка.НаименованиеВарианта;
			ПодСтрокаГруппировкиОтчета.Ключ = Выборка.ПутьКВарианту;
			ПодСтрокаГруппировкиОтчета.Описание = "";
			ПодСтрокаГруппировкиОтчета.Представление = Выборка.НаименованиеВарианта;
			ПодСтрокаГруппировкиОтчета.Сортировка = Выборка.НаименованиеВарианта;
		КонецЦикла;
	КонецЦикла;
	
	
	//// пока не надо
	//// на уровень 0 добавим еще одну кнопку
	//СтрокаГруппировкиОтчета = СгруппированныйСписокВариантовОтчетов.Строки.Добавить();
	//СтрокаГруппировкиОтчета.Группировка = "СмТакже";
	//СтрокаГруппировкиОтчета.ГруппировкаПредставление = "См. также";
	//СтрокаГруппировкиОтчета.БыстрыйДоступ = Истина;
	//СтрокаГруппировкаСмТакже = СтрокаГруппировкиОтчета;
	
	Элементы.ГруппаОсновная.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
	Для Каждого СтрокаГруппировки из СгруппированныйСписокВариантовОтчетов.Строки Цикл
		
		//// Пропустить группу "См. также"
		//Если Найти(СтрокаГруппировки.Группировка, "СмТакже") > 0 тогда
		//	Продолжить;
		//КонецЕсли;
		//
		УИ = "ГруппаРаздела_" + СтрокаГруппировки.Группировка;
		Группа = ДобавитьГруппу(УИ, Элементы.ГруппаОсновная, СтрокаГруппировки.ГруппировкаПредставление, Истина);
		ВывестиСслыкиНаВариантыОтчетов(СтрокаГруппировки, Группа);
	КонецЦикла;
	
	//Если СгруппированныйСписокВариантовОтчетов.Строки.Найти("СмТакже", "Группировка") <>  Неопределено Тогда
	//	//Элементы.ГруппаСмТакже.БыстрыйДоступ = Истина;
	//	СтрокаГруппировки = СтрокаГруппировкаСмТакже;
	//	Элементы.ГруппаСмТакжеСпискиОтчетов.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
	//	ВывестиСслыкиНаВариантыОтчетов(СтрокаГруппировки, Элементы.ГруппаСмТакжеСпискиОтчетов);
	//КонецЕсли;
	
КонецПроцедуры           
Показать
5. veretennikoff 33 16.04.19 16:27 Сейчас в теме
(4) да, спасибо. Это было давно, я был молод)
наверняка есть, что-то еще, что можно оптимизировать..
6. unknown181538 151 07.08.23 08:42 Сейчас в теме
Выдавало "Окно" не доступна для записи.
Переименовал "Окно" в "Окошко", все заработало.
Спасибо!
Оставьте свое сообщение