Формирование отчета из документа с помощью БСП

1. mark_oilbass 23.03.20 14:29 Сейчас в теме
Здравствуйте!

Разработал отчет для документа. С помощью механизмов БСП команда по формированию отчета добавляется на форму документа, но отбора по документу не происходит, т.е. в отчет вываливаются данные по всем документам. Какие процедуры необходимо определить, чтобы отчет формировался с отбором по документу?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
20. dhurricane 24.03.20 09:08 Сейчас в теме +0.16 $m
(19) Попробуйте добавить в процедуру "НастроитьВариантыОтчетов" общего модуля "ВариантыОтчетовПереопределяемый" следующие строки:
ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.М_СостояниеЗаказовНарядов);
ОписаниеОтчета.ОпределитьНастройкиФормы = Истина;

А затем обновить конфигурацию и обновить служебные данные специальной обработкой или запустив 1С в режиме предприятия с параметром "/C ЗапуститьОбновлениеИнформационнойБазы".

После этого процедура настроек формы в модуле отчета должна сработать.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
22. davealone 165 24.03.20 11:34 Сейчас в теме
(1) Посмотрите в Демо БСП отчет "_ДемоФайлы". Там при добавлении команды указывается ИмяПараметраФормы

Команда = КомандыОтчетов.Добавить();
Команда.КлючВарианта  = "ПоВерсиям";
Команда.ИмяПараметраФормы = "Отбор.Ссылка";
Команда.Представление  = НСтр("ru = 'Демо: Отчет по версиям'");
Команда.Идентификатор  = "_ДемоОтчетПоВерсиям";
Команда.Важность  = "Важное";


ИмяПараметраФормы - Строка - имя параметра формы, в который следует передать ссылку или массив ссылок
2. VmvLer 23.03.20 14:52 Сейчас в теме
тема не раскрыта.
Неплохо было прочесть от вас:
1. Я вот тут прочитал как подключать печ. формы и отчеты к доку - все классно написано, но у меня не работает.

2. Вот мой код из модуля объекта печ. формы.

Пока нет 1-2 мы можем поговорить о северном ветре - дует как трубадур на ярмарке(
3. mark_oilbass 23.03.20 14:59 Сейчас в теме
(2)в модуле менеджера документа добавил процедуру:
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	Если ПравоДоступа("Просмотр", Метаданные.Отчеты.М_СостояниеЗаказовНарядов) Тогда		
		
		КомандаОтчет = КомандыОтчетов.Добавить();
		
		КомандаОтчет.Менеджер = Метаданные.Отчеты.М_СостояниеЗаказовНарядов.ПолноеИмя();
		КомандаОтчет.Представление = НСтр("ru = 'Состояние заказов нарядов';
		|en = 'Order Status '");
		
		КомандаОтчет.МножественныйВыбор = Ложь;
		КомандаОтчет.Важность = "Обычное";
		КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды", "М_СостояниеЗаказовНарядов");		
		
	КонецЕсли;
	
КонецПроцедуры
Показать


на форме документа добавил процедуру:

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


Команда на форме документа появилась, но отчет выводит данные без отбора, хотелось чтобы отчет выводил данные с отбором по документу из которого вызывает текущий отчет.
4. user5300 1010 23.03.20 15:08 Сейчас в теме
(3)
КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды", "М_СостояниеЗаказовНарядов");
Думаю здесь надо добавить параметр "ссылку на объект"
5. mark_oilbass 23.03.20 15:13 Сейчас в теме
(4)Так написать КомандаОтчет.ДополнительныеПараметры.Вставить("Ссылка", Док); ?
7. user5300 1010 23.03.20 15:16 Сейчас в теме
(5) точно не скажу, думаю так:

массивОбъектов = новый массив;
массивОбъектов.Добавить(Ссылка)
КомандаОтчет.ДополнительныеПараметры.Вставить("массивОбъектов", массивОбъектов);
9. mark_oilbass 23.03.20 15:26 Сейчас в теме
(7)К сожалению доступа к ссылке нет в этой процедуре.
10. user5300 1010 23.03.20 15:28 Сейчас в теме
(9)посмотри отладчиком "при создании" отчета - параметры
6. dandykry 9 23.03.20 15:15 Сейчас в теме
(3)
Нужно еще обработать это открытие в модуле объекта. Как то так

UP: Модуль объекта отчета
Вместо "Док" имя поля, как в отчете называется. Например "ссылка"

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


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

	КонецЕсли;
	
КонецПроцедуры
Показать
8. mark_oilbass 23.03.20 15:24 Сейчас в теме
(6) Добавил процедуры но не помогло(
11. dandykry 9 23.03.20 15:28 Сейчас в теме
(8)
В модуле объекта отчета добавил?
Точку остановки поставь
Если Параметры.Свойство("ПараметрКоманды") Тогда

и посмотри что не так)

Напиши туда "Сообщить("В процедуру зашло но я не увидел этого.");"

Это должно работать с подключаемыми командами в БСП
12. mark_oilbass 23.03.20 15:33 Сейчас в теме
(11)Написал сообщить, сообщения не выходят(
13. dandykry 9 23.03.20 15:37 Сейчас в теме
(12) Значит это не отрабатывает

Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.События.ПриСозданииНаСервере = Истина;
КонецПроцедуры
14. user5300 1010 23.03.20 15:37 Сейчас в теме
(12) покажи процедуру модуля объекта (Отчета)
 
ПриСозданииНаСервере()
//...
КонецПроцедуры
15. mark_oilbass 23.03.20 15:44 Сейчас в теме
(14)
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
	Настройки.События.ПриСозданииНаСервере = Истина;
КонецПроцедуры


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

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

	КонецЕсли;
	
КонецПроцедуры
Показать
16. user5300 1010 23.03.20 15:49 Сейчас в теме
(15)
Параметры = ЭтаФорма.Параметры;
- это лишнее.

перед КомпоновщикНастроекФормы = ЭтаФорма.Отчет.КомпоновщикНастроек;

напиши :
Для каждого прм из Параметры цикл
    сообщить(прм.значение);
конеццикла;

посмотрим какие параметры получаем
17. dandykry 9 24.03.20 07:12 Сейчас в теме
(16) У него наверное форма отчета своя
18. mark_oilbass 24.03.20 08:15 Сейчас в теме
(17)Нет, форму отчета я не делал.
19. mark_oilbass 24.03.20 08:25 Сейчас в теме
(16)не заходит в процедуру.
20. dhurricane 24.03.20 09:08 Сейчас в теме +0.16 $m
(19) Попробуйте добавить в процедуру "НастроитьВариантыОтчетов" общего модуля "ВариантыОтчетовПереопределяемый" следующие строки:
ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.М_СостояниеЗаказовНарядов);
ОписаниеОтчета.ОпределитьНастройкиФормы = Истина;

А затем обновить конфигурацию и обновить служебные данные специальной обработкой или запустив 1С в режиме предприятия с параметром "/C ЗапуститьОбновлениеИнформационнойБазы".

После этого процедура настроек формы в модуле отчета должна сработать.
21. mark_oilbass 24.03.20 10:20 Сейчас в теме
(20)Отлично) Сейчас попробую.
23. mark_oilbass 24.03.20 12:34 Сейчас в теме
(20) Спасибо огромное получилось)
24. dhurricane 24.03.20 13:27 Сейчас в теме
(23) Поблагодарите лучше user5300. Он большую часть подсказал.
25. It-developer 24 09.02.24 18:05 Сейчас в теме
Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;

...
ПараметрыРегистрации.Вставить("ОпределитьНастройкиФормы", Истина);
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот