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

18.03.14

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ВнешняяПанельОтчетов
.epf 36,98Kb ver:1.1
17
17 Скачать (1 SM) Купить за 1 850 руб.
Внешняя панель отчетов для типовых
.epf 36,94Kb ver:1.1
16
16 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

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

5000 руб.

14.01.2016    55630    17    23    

43

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

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

6000 руб.

16.01.2015    63945    45    60    

83

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    19937    28    6    

44

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    23480    mrXoxot    44    

130

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    12028    smielka    37    

105

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

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

27.12.2023    18359    1228    elcoan    53    

125

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

10.04.2023    12890    167    acces969    31    

126

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

1 стартмани

05.07.2022    7990    kalyaka    6    

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

{ВнешняяОбработка.ВнешняяПанельОтчетов.МодульОбъекта(2,29)}: Переменная с указанным именем уже определена (ДополнительныеОтчетыИОбработки)
Перем ПараметрыРегистрации, <<?>>ДополнительныеОтчетыИОбработки, ДополнительныеОтчетыИОбработкиКлиентСервер;
{ВнешняяОбработка.ВнешняяПанельОтчетов.МодульОбъекта(2,61)}: Переменная с указанным именем уже определена (ДополнительныеОтчетыИОбработкиКлиентСервер)
Перем ПараметрыРегистрации, ДополнительныеОтчетыИОбработки, <<?>>ДополнительныеОтчетыИОбработкиКлиентСервер;
2. veretennikoff 34 30.04.14 10:20 Сейчас в теме
(1) Zord, очень странно..
я пробовал на УТ 11, БСП и нескольких самописных - такой ошибки не возникало
напишите хоть какая конфигурация у вас, чтобы я мог проверить
3. veretennikoff 34 13.11.14 17:45 Сейчас в теме
4. ray-xp 21 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 34 16.04.19 16:27 Сейчас в теме
(4) да, спасибо. Это было давно, я был молод)
наверняка есть, что-то еще, что можно оптимизировать..
6. unknown181538 159 07.08.23 08:42 Сейчас в теме
Выдавало "Окно" не доступна для записи.
Переименовал "Окно" в "Окошко", все заработало.
Спасибо!
Оставьте свое сообщение