1. mark_oilbass 23.03.20 14:29 Сейчас в теме

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

Здравствуйте!

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

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

После этого процедура настроек формы в модуле отчета должна сработать.
Остальные ответы
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
22. davealone 141 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 374 23.03.20 15:08 Сейчас в теме
(3)
КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды", "М_СостояниеЗаказовНарядов");
Думаю здесь надо добавить параметр "ссылку на объект"
5. mark_oilbass 23.03.20 15:13 Сейчас в теме
(4)Так написать КомандаОтчет.ДополнительныеПараметры.Вставить("Ссылка", Док); ?
7. user5300 374 23.03.20 15:16 Сейчас в теме
(5) точно не скажу, думаю так:

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

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

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


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

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

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

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

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

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


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

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

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

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

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

посмотрим какие параметры получаем
17. dandykry 5 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. Он большую часть подсказал.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Product Owner (Менеджер по продукту 1С)
Москва
зарплата от 100 000 руб. до 170 000 руб.
Полный день

Тим лид по разработке 1С (Team Lead 1С)
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Новосибирск
зарплата от 30 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 100 000 руб. до 150 000 руб.
Полный день