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

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 Бесплатно (free)

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    827    PROSTO-1C    0    

9

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

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    915    PROSTO-1C    4    

9

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

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

04.10.2024    1714    MadRave    11    

23

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

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

10.09.2024    1653    MadRave    1    

17

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

А что, если долгожданная реализация Паузы в 1С смутно напоминает старую, проверенную? А?!

06.09.2024    1176    n_mezentsev    10    

8

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

Добавим дополнительные свойства в новый документ средствами БСП

02.09.2024    4023    John_d    10    

52

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

Всё больше организаций выбирает для серверов под 1С операционные системы Linux. Одним из отличий систем Windows и Linux является отсутствие COM объектов, которые зачастую использовались для формирования печатных форм офисных документов (Word). Конечно, можно выполнять печать и на клиенте, но есть риск импортозамещения. В работе у меня случались проблемы с зависанием процесса Word, поэтому я не люблю его использовать.

29.07.2024    5218    PROSTO-1C    12    

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

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


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


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

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

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

Показать
SagittariusA; link_l; EvgeniyOlxovskiy; dsdred; John_d; +5 Ответить
12. link_l 12 24.09.24 20:50 Сейчас в теме
Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт

НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "МойОтчет");
НастройкиВарианта.Описание = НСтр("ru = 'Мой отчет'");

НастройкиОтчета.ОпределитьНастройкиФормы = Истина;

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


Добавлю что без строчки НастройкиОтчета.ОпределитьНастройкиФормы = Истина; в процедуру ПриСозданииНаСервере не заходит
13. rozer 311 25.09.24 06:27 Сейчас в теме
(12) конечно, об этом и написано в коде выше
14. link_l 12 25.09.24 09:54 Сейчас в теме
(13) Перед тем как написать несколько раз перечитал всю публикацию, после вашего комментария тоже перечитал. Не нашел, прошу ткнуть пальцем :)
Очень полезная публикация, очень помогла. Спасибо!. Но из-за этой строчки убил два дня чтобы понять почему не работало и не заходило в ПриСозданииНаСервере в модуле отчета.
15. rozer 311 25.09.24 11:35 Сейчас в теме
(14) да, просмотрел, извиняюсь. Про НастроитьВариантыОтчета написано на ИТС но 2 дня это круто)
2. John_d 5885 02.04.24 12:59 Сейчас в теме
Да, хорошее уточнение. У меня отчет был с формой.
3. karpik666 3850 02.04.24 13:12 Сейчас в теме
Тут стоит также уточнить, что подобную информацию можно получить в инструкции по внедрение БСП подсистемы "Подключаемые команды" https://its.1c.ru/db/bsp317doc#content:4:hdoc:issogl1_подключаемые_команды
И лучше указать именно версию БСП, для которой подходят данные рекомендации, так как это универсальный вариант.

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

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

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

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

Важно отметить, что в объекты должны быть добавлены в стандартную подсистему ПодключаемыеКоманды.
11. akaNastenka 10.09.24 10:58 Сейчас в теме
на ИТС написано "См. также примеры в демонстрационной базе: в объектах конфигурации и расширений, включенных в состав подсистемы ПодключаемыеОтчетыИОбработки"
Собственное самое простое развернуть базу БСП и посмотреть как там сделан отчет в расширении - копировать/вставить
Всем добра!
Оставьте свое сообщение