Собственные кнопки в отчетах на СКД, конфигурациях на БСП

02.04.23

Разработка - Инструментарий разработчика

Расширение, которое позволит добавлять свои собственные кнопки в отчеты СКД и обрабатывать результат отчета, своими собственными алгоритмами.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Собственные кнопки в отчетах на СКД, конфигурациях на БСП:
.cfe 9,08Kb
16
16 Скачать (1 SM) Купить за 1 850 руб.

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

1. Добавляем расширение в базу

2. Заимствуем в него общие модули "ОтчетыПереопределяемый" и "ОтчетыКлиентПереопределяемый", и создаем свой модуль для написания своих процедур обработки (у меня называется АУ_Сервер)  

3. В модуле ОтчетыПереопределяемый идет инициализация формы отчета - тут считываем какой отчет открывается и добавляем свою кнопку на форме. Соответственно для разных отчетов можно создать разные команды.

&После("ПриСозданииНаСервере")
Процедура АУ_ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт   
	ИмяОтчета="";
	Если Форма.Параметры.Свойство("ИмяОтчета",ИмяОтчета) тогда 
	Иначе  
		ИмяОтчета=Форма.КлючТекущегоВарианта;
	КонецЕсли;	
	Если ИмяОтчета="ВедомостьПоТоварамНаСкладах" тогда 
		ТвояКоманда = Форма.Команды.Добавить("ПерепровестиДокументы");  
		ТвояКоманда.Действие  = "Подключаемый_Команда";
		ТвояКоманда.заголовок = "Перепровести документы";
		Форма.ПостоянныеКоманды.Добавить(ТвояКоманда.Имя);
		
		ТвояКнопка= Форма.Элементы.Добавить(ТвояКоманда .Имя, Тип("КнопкаФормы"), Форма.Элементы.ГруппаПрограммныйИнтерфейс);
         //При добавлении элемента на форму, надо убедиться что на ней есть такая группа ГруппаПрограммныйИнтерфейс - в зависимости от версии БСП она может отсутствовать или называться иначе
		ТвояКнопка.ИмяКоманды = ТвояКоманда .Имя;
		ТвояКнопка.ТолькоВоВсехДействиях = Ложь;
		
	КонецЕсли;	
		
КонецПроцедуры

4. В модуле ОтчетыКлиентПереопределяемый перехватываем процедуру ОбработчикКоманды, и если все таки нажата наша кнопка вызываем процедуру из нашего модуля. 
 

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

5. Собственно в нашем модуле пишем обработчик нашей команды, в моем случае процедура ищет все документы в результате отчета и перепроводит их.

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

6. Готово

Результат работы на скрине, пример готового расширения прилагается.

Разработка велась на платформе 8.3.22, УТ 11.4.14 

СКД отчет кнопка

См. также

SALE! 15%

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159364    872    399    

861

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7759    55    22    

66

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

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

9360 руб.

17.05.2024    23422    68    45    

117

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10409    36    20    

61

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 19980 руб.

06.10.2023    15387    35    7    

70

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    187968    1138    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17298    6    32    

42

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

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

6000 руб.

16.01.2015    62984    44    59    

82
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. glek 120 03.04.23 07:36 Сейчас в теме
Имя отчета как ключ текущего варианта наверное лучше обработать: может возвращать, например
Отчет.ВыручкаИСебестоимостьПродаж/КлючВарианта.efda2283-7b13-4c15-a1b1-992d8de4db87
или
Отчет.УсловияПродаж2_5/КлючВарианта.ОбщиеПараметры
Светлый ум; +1 Ответить
2. KVIKS 425 03.04.23 11:54 Сейчас в теме
(1)Это лучше в отладке смотреть как форма или имя отчета называется, если отчет внешний там имя формы другое может быть.
3. ixijixi 1913 03.04.23 12:17 Сейчас в теме
Всё это и даже больше доступно без расширений в функционале БСП
#Область ПрограммныйИнтерфейс

// Для общей формы "Форма отчета" подсистемы "Варианты отчетов".
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
	
	
КонецПроцедуры


// В данной процедуре следует описать дополнительные зависимости объектов метаданных
//   конфигурации, которые будут использоваться для связи настроек отчетов.
//
// Параметры:
//   СвязиОбъектовМетаданных - ТаблицаЗначений - таблица связей.
//       * ПодчиненныйРеквизит - Строка - имя реквизита подчиненного объекта метаданных.
//       * ПодчиненныйТип      - Тип    - тип подчиненного объекта метаданных.
//       * ВедущийТип          - Тип    - тип ведущего объекта метаданных.
//
Процедура ДополнитьСвязиОбъектовМетаданных(СвязиОбъектовМетаданных) Экспорт
	
КонецПроцедуры

// Вызывается в обработчике одноименного события формы отчета и формы настройки отчета.
// См. "Расширение управляемой формы для отчета.ПередЗагрузкойВариантаНаСервере" в синтакс-помощнике.
//
// Параметры:
//   Форма - УправляемаяФорма - форма отчета или настроек отчета.
//   НовыеНастройкиКД - НастройкиКомпоновкиДанных - настройки для загрузки в компоновщик настроек.
//
Процедура ПередЗагрузкойВариантаНаСервере(Форма, Настройки) Экспорт
	
КонецПроцедуры

// Вызывается перед загрузкой новых настроек. Используется для изменения схемы компоновки.
//   Например, если схема отчета зависит от ключа варианта или параметров отчета.
//   Чтобы изменения схемы вступили в силу следует вызывать метод ОтчетыСервер.ПодключитьСхему().
//
// Параметры:
//   Контекст - Произвольный - 
//       Параметры контекста, в котором используется отчет.
//       Используется для передачи в параметрах метода ОтчетыСервер.ПодключитьСхему().
//   КлючСхемы - Строка -
//       Идентификатор текущей схемы компоновщика настроек.
//       По умолчанию не заполнен (это означает что компоновщик инициализирован на основании основной схемы).
//       Используется для оптимизации, чтобы переинициализировать компоновщик как можно реже.
//       Может не использоваться если переинициализация выполняется безусловно.
//   КлючВарианта - Строка, Неопределено -
//       Имя предопределенного или уникальный идентификатор пользовательского варианта отчета.
//       Неопределено когда вызов для варианта расшифровки или без контекста.
//   НовыеНастройкиКД - НастройкиКомпоновкиДанных, Неопределено -
//       Настройки варианта отчета, которые будут загружены в компоновщик настроек после его инициализации.
//       Неопределено когда настройки варианта не надо загружать (уже загружены ранее).
//   НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных, Неопределено -
//       Пользовательские настройки, которые будут загружены в компоновщик настроек после его инициализации.
//       Неопределено когда пользовательские настройки не надо загружать (уже загружены ранее).
//
// Примеры:
// 1. Компоновщик отчета инициализируется на основании схемы из общих макетов:
//	Если КлючСхемы <> "1" Тогда
//		КлючСхемы = "1";
//		СхемаКД = ПолучитьОбщийМакет("МояОбщаяСхемаКомпоновки");
//		ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКД, КлючСхемы);
//	КонецЕсли;
//
// 2. Схема зависит от значения параметра, выведенного в пользовательские настройки отчета:
//	Если ТипЗнч(НовыеПользовательскиеНастройкиКД) = Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда
//		ПолноеИмяОбъектаМетаданных = "";
//		Для Каждого ЭлементКД Из НовыеПользовательскиеНастройкиКД.Элементы Цикл
//			Если ТипЗнч(ЭлементКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
//				ИмяПараметра = Строка(ЭлементКД.Параметр);
//				Если ИмяПараметра = "ОбъектМетаданных" Тогда
//					ПолноеИмяОбъектаМетаданных = ЭлементКД.Значение;
//				КонецЕсли;
//			КонецЕсли;
//		КонецЦикла;
//		Если КлючСхемы <> ПолноеИмяОбъектаМетаданных Тогда
//			КлючСхемы = ПолноеИмяОбъектаМетаданных;
//			СхемаКД = Новый СхемаКомпоновкиДанных;
//			// Наполнение схемы...
//			ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКД, КлючСхемы);
//		КонецЕсли;
//	КонецЕсли;
//
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, Настройки, ПользовательскиеНастройки) Экспорт
	
КонецПроцедуры

// Вызывается до перезаполнения панели настроек формы отчета.
//
// Параметры:
//   Форма - УправляемаяФорма - форма отчета.
//   ПараметрыЗаполнения - Структура - параметры, которые будут загружены в отчет.
//
Процедура ПередЗаполнениемПанелиБыстрыхНастроек(ОтчетОбъект, ПараметрыЗаполнения) Экспорт
	
КонецПроцедуры

// Вызывается после перезаполнения панели настроек формы отчета.
//
// Параметры:
//   Форма - УправляемаяФорма - Форма отчета.
//   ПараметрыЗаполнения - Структура - параметры, которые будут загружены в отчет.
//
Процедура ПослеЗаполненияПанелиБыстрыхНастроек(Форма, ПараметрыОбновления) Экспорт
	
КонецПроцедуры

// Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
//
// Параметры:
//   Форма - УправляемаяФорма - форма отчета.
//   НовыеНастройкиКД - НастройкиКомпоновкиДанных - настройки для загрузки в компоновщик настроек.
//
// См. синтакс-помощник "Расширение управляемой формы для отчета.ПриЗагрузкеВариантаНаСервере" в синтакс-помощнике.
//
Процедура ПриЗагрузкеВариантаНаСервере(Форма, Настройки) Экспорт
	
КонецПроцедуры

// Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
//
// Параметры:
//   Форма - УправляемаяФорма - форма отчета.
//   НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных -
//       Пользовательские настройки для загрузки в компоновщик настроек.
//
// См. синтакс-помощник "Расширение управляемой формы для отчета.ПриЗагрузкеПользовательскихНастроекНаСервере"
//    в синтакс-помощнике.
//
Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Форма, ПользовательскиеНастройки) Экспорт
	
КонецПроцедуры

// Список регистров и других объектов метаданных, по которым формируется отчет.
//   Используется для проверки что отчет может содержать не обновленные данные.
//
// Параметры:
//   КлючВарианта - Строка, Неопределено -
//       Имя предопределенного или уникальный идентификатор пользовательского варианта отчета.
//       Неопределено когда вызов для варианта расшифровки или без контекста.
//   ИспользуемыеТаблицы - Массив из Строка -
//       Полные имена объектов метаданных (регистров, документов и других таблиц),
//       данные которых выводятся в отчете.
//
// Пример:
//	ИспользуемыеТаблицы.Добавить(Метаданные.Документы.<ИмяДокумента>.ПолноеИмя());
//
Процедура ПриОпределенииИспользуемыхТаблиц(КлючТекущегоВарианта, ИспользуемыеТаблицы) Экспорт
	
КонецПроцедуры

// Вызывается в форме отчета и в форме настройки отчета перед выводом настройки 
// для указания дополнительных параметров выбора.
//
// Параметры:
//  Форма - УправляемаяФорма, Неопределено - форма отчета.
//  СвойстваНастройки - Структура - описание настройки отчета, которая будет выведена в форме отчета.
//      * ПолеКД - ПолеКомпоновкиДанных - выводимая настройка.
//      * ОписаниеТипов - ОписаниеТипов - тип выводимой настройки.
//      * ЗначенияДляВыбора - СписокЗначений - указать объекты, которые будут предложены пользователю в списке выбора.
//                            Дополняет список объектов, уже выбранных пользователем ранее.
//                            При этом не следует присваивать в этот параметр новый список значений.
//      * ЗапросЗначенийВыбора - Запрос - указать запрос для выборки объектов, которыми необходимо дополнить 
//                               ЗначенияДляВыбора. Первой колонкой (с индексом 0) должен выбираться объект,
//                               который следует добавить в ЗначенияДляВыбора.Значение.
//                               Для отключения автозаполнения в свойство ЗапросЗначенийВыбора.Текст следует записать пустую строку.
//      * ОграничиватьВыборУказаннымиЗначениями - Булево - указать Истина, чтобы ограничить выбор пользователя
//                                                значениями, указанными в ЗначенияДляВыбора (его конечным состоянием).
//      * Тип - Строка - краткий идентификатор типа свойства настроек компоновщика настроек компоновки данных.
//              См. ОтчетыСервер.ТипНастройкиСтрокой.
//
// Пример:
//   1. Для всех настроек типа СправочникСсылка.Пользователи скрыть и не разрешать выбирать помеченных на удаление, 
//   недействительных и служебных пользователей.
//
//   Если СвойстваНастройки.ОписаниеТипов.СодержитТип(Тип("СправочникСсылка.Пользователи")) Тогда
//     СвойстваНастройки.ОграничиватьВыборУказаннымиЗначениями = Истина;
//     СвойстваНастройки.ЗначенияДляВыбора.Очистить();
//     СвойстваНастройки.ЗапросЗначенийВыбора.Текст =
//       "ВЫБРАТЬ Ссылка ИЗ Справочник.Пользователи
//       |ГДЕ НЕ ПометкаУдаления И НЕ Недействителен И НЕ Служебный";
//   КонецЕсли;
//
//   2. Для настройки "Размер" предусмотреть дополнительное значение для выбора.
//
//   Если СвойстваНастройки.ПолеКД = Новый ПолеКомпоновкиДанных("ПараметрыДанных.Размер") Тогда
//     СвойстваНастройки.ЗначенияДляВыбора.Добавить(10000000, НСтр("ru = 'Больше 10 Мб'"));
//   КонецЕсли;
//
Процедура ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки) Экспорт
	
КонецПроцедуры

// Вызывается после определения свойств элементов формы, связанных с пользовательскими настройками.
// См. ОтчетыСервер.СвойстваЭлементовФормыНастроек()
// Позволяет переопределить свойства, для целей персонализации отчета.
//
// Параметры:
//  ТипФормы - ТипФормыОтчета - см. Синтакс-помощник.
//  СвойстваЭлементов - Структура - см. ОтчетыСервер.СвойстваЭлементовФормыНастроек().
//  ПользовательскиеНастройки - КоллекцияЭлементовПользовательскихНастроекКомпоновкиДанных - элементы актуальных
//                              пользовательских настроек, влияющих на создание связанных элементов формы.
//
Процедура ПриОпределенииСвойствЭлементовФормыНастроек(ТипФормы, СвойстваЭлементов, ПользовательскиеНастройки) Экспорт
	
КонецПроцедуры

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

#КонецОбласти

Показать
Kawarimi; DmitryKSL; user1050439; Andreyyy; SagittariusA; ONLYTILT; starponyx; chernoff; JohnyDeath; creatermc; FuJluH; Dach; unichkin; ZOMI; KVIKS; Sodrugestvo; 0x00; siamagic; G.Shatrov; SP2000; +20 Ответить
4. 0x00 03.04.23 14:09 Сейчас в теме
(3)
в функционале БСП
Этот код где надо разместить?
5. ixijixi 1913 03.04.23 14:17 Сейчас в теме
(4) В модуле объекта внешнего отчета, к нему Подсистема "Варианты отчетов" обращается.
12. mikl79 119 05.04.23 06:52 Сейчас в теме
(3), не подскажите - где можно примеры посмотреть?
14. ixijixi 1913 10.04.23 12:04 Сейчас в теме
6. KVIKS 425 03.04.23 14:21 Сейчас в теме
(3) Говорила мне мама: "Учи БСП" )))
SagittariusA; starponyx; neyasytyf; Efimoff; +4 1 Ответить
7. unichkin 1579 03.04.23 19:11 Сейчас в теме
(3) Хочется дополнить - это будет работать только для встроенных. Но можно сделать небольшой бесшовный допил в ОтчетыКлиентПереопределяемый.ОбработчикКоманды:

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


Дальше в любом отчете - внешнем или встроенном в модуле объекта:


// Настройки общей формы отчета подсистемы "Варианты отчетов".
//
// Параметры:
//   Форма - Форма, Неопределено - Форма отчета или форма настроек отчета.
//       Неопределено когда вызов без контекста.
//   КлючВарианта - Строка, Неопределено - Имя предопределенного
//       или уникальный идентификатор пользовательского варианта отчета.
//       Неопределено когда вызов без контекста.
//   Настройки - Структура - см. возвращаемое значение
//       ОтчетыКлиентСервер.ПолучитьНастройкиОтчетаПоУмолчанию().
//
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт

	Настройки = ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию();
	Настройки.События.ПриСозданииНаСервере = Истина;

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

// Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
//
// Параметры:
//   Форма - ФормаКлиентскогоПриложения - форма отчета.
//   Отказ - Булево - признак отказа от создания формы.
//      См. описание одноименного параметра "ФормаКлиентскогоПриложения.ПриСозданииНаСервере" в синтакс-помощнике.
//   СтандартнаяОбработка - Булево - признак выполнения стандартной (системной) обработки события.
//      См. описание одноименного параметра "ФормаКлиентскогоПриложения.ПриСозданииНаСервере" в синтакс-помощнике.
//
// См. также:
//   Процедура для вывода добавленных команд в форму: ОтчетыСервер.ВывестиКоманду().
//   Глобальный обработчик этого события: ОтчетыПереопределяемый.ПриСозданииНаСервере().
//
// Пример добавления команды:
//	Команда = Форма.Команды.Добавить("<ИмяКоманды>");
//	Команда.Действие  = "Подключаемый_Команда";
//	Команда.Заголовок = НСтр("ru = '<Представление команды...>'");
//	ОтчетыСервер.ВывестиКоманду(Форма, Команда, "<ВидГруппы>");
// Обработчик команды пишется в см. ОтчетыКлиентПереопределяемый.ОбработчикКоманды
//
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт

	Форма.ФормаПараметры.Вставить("ИмяФормыОбработчикаКоманд", "ОбработчикКоманд");

	Команда = Форма.Команды.Добавить("ВыгрузитьВXLSX");
	Команда.Действие  = "Подключаемый_Команда";
	Команда.Заголовок = "Выгрузить в XLSX...";
	Команда.Картинка = БиблиотекаКартинок.ФорматExcel2007;
	Команда.Отображение = ОтображениеКнопки.КартинкаИТекст;

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

Показать


И в отчет добавляем произвольную форму, называем ее "ОбработчикКоманд". В ней экспортный метод "ВыполнитьКоманду":


#Область СлужебныйПрограммныйИнтерфейс

&НаКлиенте
Процедура ВыполнитьКоманду(ФормаОтчета, Команда, Результат) Экспорт
        
// здесь команда одна, поэтому нет условия. Иначе - проверить если Команда.Имя = "ВыгрузитьВXLSX"...

	Результат = Истина;

	ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	ВыборФайла.МножественныйВыбор = Ложь;
	ВыборФайла.Заголовок = "Укажите файл выгрузки";
	ВыборФайла.Фильтр = "xlsx|*.xlsx";

	Оповещение = Новый ОписаниеОповещения("ПослеВыбораФайлаXLSX", ЭтотОбъект, Неопределено);
	ФайловаяСистемаКлиент.ПоказатьДиалогВыбора(Оповещение, ВыборФайла);

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

#КонецОбласти

Показать
DmitryKSL; twiny; Созинов; busy1; TimkoNzt; starponyx; JohnyDeath; СергейК; rozer; Dach; +10 Ответить
8. ixijixi 1913 03.04.23 22:10 Сейчас в теме
(7)
будет работать только для встроенных
Прекрасной работает и для внешних безо всяких допилов
starponyx; +1 Ответить
9. unichkin 1579 04.04.23 12:44 Сейчас в теме
(8)
Прекрасной работает и для внешних безо всяких допилов


Для внешних - где пишется обработчик команды, можно пример? Я не победил, возможно упустил что-то.
11. unichkin 1579 04.04.23 14:43 Сейчас в теме
(10) Так обработчик команды на клиенте должен быть. При чем тут модуль объекта? Надо к примеру пересохранить данные отчета в какой-нибудь иной формат, в dbf к примеру. Надо сначала на клиенте выбрать папку, или файл куда оно будет записано.

На всякий, уточню вопрос - где во внешнем отчете разместить клиентский обработчик команды, при программном добавлении кнопки?
13. ixijixi 1913 06.04.23 22:02 Сейчас в теме
(11) Сорян за долгий ответ, почему-то не всегда уведомления приходят в колокольчик =(

Да, тут мой косяк, невнимательно прочел. Клиентский обработчик из модуля отчета конечно не вызвать.
Как вариант в отчет скопировать общую форму и там шаманить с клиентскими методами, но это не то уже конечно, Ваш метод интереснее.
Оставьте свое сообщение