БСП. Добавляем отчет в меню Отчеты

02.04.24

Разработка - БСП (Библиотека стандартных подсистем)

Добавим новый отчет в меню нового документа средствами БСП.

1. Общие модули

В общий модуль ВариантыОтчетовПереопределяемый или ВариантыОтчетовУТПереопределяемый в процедуру НастроитьВариантыОтчетов добавляем 

 

 

Процедура НастроитьВариантыОтчетов(Настройки) Экспорт

     ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.НовыйОтчет);

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

 

В общий модуль ВариантыОтчетовПереопределяемый в процедуру ОпределитьОбъектыСКомандамиОтчетов добавляем 

 

 

Процедура ОпределитьОбъектыСКомандамиОтчетов(Объекты) Экспорт

	Объекты.Добавить(Метаданные.Документы.НовыйДокумент); 	

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

 

2. Документ

В модуль менеджера нового документа добавляем 

 

 

Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
  Отчеты.НовыйОтчет.ДобавитьКомандыОтчетов(КомандыОтчетов);
КонецПроцедуры

 

В модуль формы нового документа добавляем

 

 

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте 
Процедура Подключаемый_ВыполнитьКоманду(Команда) 
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект); 
КонецПроцедуры 
&НаСервере 
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) 
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат); 
КонецПроцедуры 
&НаКлиенте 
Процедура Подключаемый_ОбновитьКоманды() 
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); 
КонецПроцедуры  
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды


&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	// СтандартныеПодсистемы.ПодключаемыеКоманды 
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); 
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	// СтандартныеПодсистемы.ПодключаемыеКоманды 
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); 
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды 
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	// СтандартныеПодсистемы.ПодключаемыеКоманды 
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); 
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

 

В форму списка нового документа добавляем (так же в форме списка должна быть добавлена Ссылка)

 

 

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// СтандартныеПодсистемы.ПодключаемыеКоманды


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

 

3. Отчет

В модуль менеджера отчета добавляем 

 

 

Функция ДобавитьКомандыОтчетов(КомандыОтчетов) Экспорт
  КомандаОтчет = КомандыОтчетов.Добавить();
        
  КомандаОтчет.Менеджер = Метаданные.Отчеты.НовыйОтчет.ПолноеИмя();
  КомандаОтчет.Представление = НСтр("ru = 'Новый отчет'");
        
  КомандаОтчет.Важность = "Обычное";
  КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды", "НовыйОтчет");
  КомандаОтчет.КлючВарианта = "НовыйОтчет";
        
  Возврат КомандаОтчет;

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

Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "НовыйОтчет");
	НастройкиВарианта.Описание = НСтр("ru = 'Новый отчет'");  
КонецПроцедуры

 

В модуль формы отчета добавляем.

 

 

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Если ЭтаФорма.Параметры.Свойство("ПараметрКоманды") Тогда      
		Результат = СформироватьОтчет(ЭтаФорма.Параметры.ПараметрКоманды);
    КонецЕсли; 
КонецПроцедуры

 

Свойство ПараметрКоманды содержит массив документов. Если отчет был вызван из формы документа, то там один элемент. Если отчет был вызван из формы списка и было выделено несколько документов, то там будет несколько элементов.

 

Тестировал: 

  • Библиотека стандартных подсистем, редакция 3.1 (3.1.9.337)
  • Библиотека стандартных подсистем, редакция 3.0 (3.0.3.341)
  • Библиотека стандартных подсистем, редакция 2.4 (2.4.6.241)
  • 1С:Комплексная автоматизация 2 (2.4.13.209)
  • Платформа 1С:Предприятие 8.3 (8.3.24.1342)

См. также

Шаблон многопоточного выполнения фонового задания

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

Пример шаблона для многопоточного выполнения фонового задания на основе БСП. Шаблоны сделаны для процедуры и функции.

2 стартмани

03.05.2024    756    9    Hitcher    2    

8

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    2252    dimanich70    8    

14

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    891    FilippovRI    0    

17

Расширяем возможности дополнительных обработок и настраиваем их отладку

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

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2851    YA_418728146    11    

48

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

В этой статье расскажем об архитектуре, использовании и особенностях реализации подсистемы «Свойства» из инструментария разработчика «1С:Библиотека стандартных подсистем» (1С: БСП).

19.01.2024    7712    PROSTO-1C    5    

47

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

БСП (Библиотека стандартных подсистем) Мероприятия Бесплатно (free)

Митап посвящен вопросам создания, использования и поддержке переиспользуемого кода при разработке решений на платформе 1С:Предприятие 8.

15.01.2024    4026    0    Infostart    0    

21
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. rozer 309 02.04.24 12:42 Сейчас в теме

В модуль формы отчета добавляем.


вроде как в типовых на БСП форма отчета в 99% это общая "ФормаОтчета"
может в модуле отчета такое примерно?


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

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

	Если Параметры.Свойство("ПараметрКоманды") Тогда
		ЭтаФорма.ФормаПараметры.Отбор.Вставить("ОченьНужныйОтбор", Параметры.ПараметрКоманды.ОченьНужныйОтбор);
	КонецЕсли;
	
КонецПроцедуры

Показать
EvgeniyOlxovskiy; dsdred; John_d; +3 Ответить
2. John_d 5439 02.04.24 12:59 Сейчас в теме
Да, хорошее уточнение. У меня отчет был с формой.
3. karpik666 3783 02.04.24 13:12 Сейчас в теме
Тут стоит также уточнить, что подобную информацию можно получить в инструкции по внедрение БСП подсистемы "Подключаемые команды" https://its.1c.ru/db/bsp317doc#content:4:hdoc:issogl1_подключаемые_команды
И лучше указать именно версию БСП, для которой подходят данные рекомендации, так как это универсальный вариант.

Отмечу, что подобной функциональности можно также добиться, если к новому документу подключить подсистему работы с дополнительными отчетами и обработками, а затем добавить внешний отчет с видом "Отчет".
Рамзес; EvgeniyOlxovskiy; leoxz; Дмитрий74Чел; opx; qwinter; ixijixi; dsdred; +8 Ответить
4. qwinter 673 02.04.24 14:10 Сейчас в теме
(3) ну кто в 1с читает инструкции)))
5. 3gf 02.04.24 14:18 Сейчас в теме
(4)не всегда и не у всех есть доступ на итс...
8. qwinter 673 02.04.24 16:34 Сейчас в теме
(5) сочувствую клиентам этих людей.
dhurricane; &rew; +2 Ответить
7. Дмитрий74Чел 235 02.04.24 15:33 Сейчас в теме
(3) согласен. Тоже когда-то писал такие инструкции/памятки себе. Но потом оказалось что с выходом новой редакции Бсп они все стали неактуальны. Так что лучше смотреть какая версия БСП у вас и для этой версии смотреть документацию на ИТС.
u2b; EvgeniyOlxovskiy; +2 Ответить
6. Трактор 1249 02.04.24 14:51 Сейчас в теме
9. DrAku1a 1723 04.04.24 04:49 Сейчас в теме
Полагаю, нужно уже делать каталог таких памяток - по БСП и не только. В виде отдельной статьи.
10. Nuki4 05.04.24 09:46 Сейчас в теме
Можно рассмотреть дополнительно подключение команд отчета через добавление отчета в подсистему "ПодключаемыеОтчетыИОбработки".

При добавлении все команды необходимо будет описать в модуле менеджера самого отчета:

Процедура ПриОпределенииНастроек - добавить Настройки.ДобавитьКомандыОтчетов = Истина
Процедура ДобавитьКомандыОтчетов - описать условия добавления команд.

Удобно когда объектов, в которых должен быть отчет, достаточно много и/или они находятся на поддержке.

Важно отметить, что в объекты должны быть добавлены в стандартную подсистему ПодключаемыеКоманды.
Оставьте свое сообщение