Использование команд печати для запуска форм выбора.

1. IDMIRT 01.08.24 01:30 Сейчас в теме
Доброго всем времени суток!

Недавно столкнулся со следующй задачей, может многоопытные мне подскажут куда копать. Решил я активно юзать бсп, и все было хорошо и замечательно но возникло несколько вопросов. Конкретно следующий, раньше я пользовался ВПФ и все в них просто и понятно, если перед запуском отчета нужна была форма с выбором некоторых значений то в ВПФ это реализуется легко и просто, а вот как такое сделать используя команды печати в БСП. Не теоретически понятно, что нужно указать свой менеджер и обработчик в командах печати, но в документации БСП таких примеров нету, пока я для скорости работы сделал клиенту отчет на ВПФ, но хотелось бы перенести эти печатные формы в расширение для клиента и вот тут я встрял ибо решительно непонятно как это сделать, а на эксперименты нет времени ибо сроки. Есть у кого наработки или подсказки как это сделать?
По теме из базы знаний
Найденные решения
11. IDMIRT 22.08.24 07:08 Сейчас в теме
В общем закончив штопать отчетные формочки клиенту с помощью ВПФ, таки решил сесть и разобраться с вопросом как же реализовывать дополнительную форму в расширении с помощью БСП, почитав внимательно документацию нашел там следующее
В отдельных случаях для формирования некоторых печатных форм может потребоваться клиентский контекст. Например, для запроса дополнительных параметров печатной формы у пользователя непосредственно перед печатью. В таких случаях механизм формирования печатной формы необходимо размещать в клиентском модуле, а при описании команды печати в процедуре ДобавитьКомандыПечати использовать параметр Обработчик для передачи управления в этот модуль.


Решение оказалось на диво простое
	КомандаПечати = КомандыПечати.Добавить();	
	КомандаПечати.МенеджерПечати = "Отчет.МойОтчет"; //здесь указываем очет в котором находится экспортная процедура
	КомандаПечати.Идентификатор = "ТестовыйОтчет";
	КомандаПечати.Представление = НСтр("ru = 'Тестовый Отчет'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;	
	КомандаПечати.Обработчик="ОткрытьФормуМоегоОтчета"; //это экспортая функция размещенная на основной форме отчета

Ну и соответсвенно в коде основной формы отчета размещаем
Функция ОткрытьФормуМоегоОтчета(ПараметрыПечати) Экспорт	
		ПараметрыПечати= Новый Структура;
		ПараметрыПечати.Вставить("ПараметрыПечати",ПараметрыПечати);
		ОткрытьФорму("Отчет.МЭС_ОтчетТестовый.Форма.ФормаНекихПараметров",ПараметрыПечати);			
КонецФункции


Как вариант можно сделать эту функцию в общем модуле и обращаться к ней, но тут как кому удобно.

И чуть не забыл при использовании клиентского контекста передается только структура в которой и хранится все, у меня это честно выдранное из текста по БСП "ПараметрыПечати", там же мы получаем документы для печати ПараметрыПечати.ОбъектыПечати

И все заработало,спасибо тем кто захотел помочь.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user1880116 01.08.24 09:20 Сейчас в теме
(1)
Есть у кого
А ты понимаешь различия подсистем БСП "Печать" и "Подключаемые команды"? Или "на эксперименты нет времени ибо сроки" даже для понимания?
2. user2033930 01.08.24 08:50 Сейчас в теме
Года 4 назад делал для своих целей на БСП 3.1.4. Ничего особо сложного там нет, на моей памяти...
4. IDMIRT 01.08.24 09:36 Сейчас в теме
(2) Ну согласен, только если в ВПФ достаточно создать форму и в Использовании указать ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы() то вот как это задействовать в БСП мне не совсем понятно. Если бы мне нужно было просто создать открытие формы отчета по кнопке с выпадающим меню то я бы использовал подключаемые команды и все было бы прекрасно. Но мне надо встроить в уже существующий набор команд печати, а вот здесь я поплыл.
5. user2033930 01.08.24 09:38 Сейчас в теме
(4) Команда печати - точно такая же команда. И она, как и любая другая подключаемая команда, тоже умеет играть в "клиентский вызов".
6. IDMIRT 01.08.24 09:46 Сейчас в теме
(5) Ну теоретически понятно что нужно в КомандаПечати.Менеджер указать "Отчет.МойОтчет" а после в КомандаПечати.Обработчик указать экспортную процедуру менеджера отчета. Теоретически, а вот дабы не экспериментировать хотелось бы пример посмотреть:)
7. user2033930 01.08.24 09:53 Сейчас в теме
(6) Эксперименты - наше всё! Только на них и учимся...

PS. Менеджер отчета тут вообще ни при чём.
9. IDMIRT 01.08.24 09:58 Сейчас в теме
(7) А вот тут не понял, то есть экспортную процедуру вызова надо размещать в модуле формы отчета? Если это так, тогда понятно где я ошибся.
10. IDMIRT 01.08.24 10:10 Сейчас в теме
(7) Ну в общем то да, пробежался глазами по описанию параметров команд печати, там ясно указано что можно вызывать обработчик из модуля основной формы. Как то я пропустил сей момент.
8. user1880116 01.08.24 09:57 Сейчас в теме
(6)
теоретически понятно
Я, пожалуй, еще раз спрошу про понимание отличий работы подсистем "Печать" и "Подключаемые команды"
11. IDMIRT 22.08.24 07:08 Сейчас в теме
В общем закончив штопать отчетные формочки клиенту с помощью ВПФ, таки решил сесть и разобраться с вопросом как же реализовывать дополнительную форму в расширении с помощью БСП, почитав внимательно документацию нашел там следующее
В отдельных случаях для формирования некоторых печатных форм может потребоваться клиентский контекст. Например, для запроса дополнительных параметров печатной формы у пользователя непосредственно перед печатью. В таких случаях механизм формирования печатной формы необходимо размещать в клиентском модуле, а при описании команды печати в процедуре ДобавитьКомандыПечати использовать параметр Обработчик для передачи управления в этот модуль.


Решение оказалось на диво простое
	КомандаПечати = КомандыПечати.Добавить();	
	КомандаПечати.МенеджерПечати = "Отчет.МойОтчет"; //здесь указываем очет в котором находится экспортная процедура
	КомандаПечати.Идентификатор = "ТестовыйОтчет";
	КомандаПечати.Представление = НСтр("ru = 'Тестовый Отчет'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;	
	КомандаПечати.Обработчик="ОткрытьФормуМоегоОтчета"; //это экспортая функция размещенная на основной форме отчета

Ну и соответсвенно в коде основной формы отчета размещаем
Функция ОткрытьФормуМоегоОтчета(ПараметрыПечати) Экспорт	
		ПараметрыПечати= Новый Структура;
		ПараметрыПечати.Вставить("ПараметрыПечати",ПараметрыПечати);
		ОткрытьФорму("Отчет.МЭС_ОтчетТестовый.Форма.ФормаНекихПараметров",ПараметрыПечати);			
КонецФункции


Как вариант можно сделать эту функцию в общем модуле и обращаться к ней, но тут как кому удобно.

И чуть не забыл при использовании клиентского контекста передается только структура в которой и хранится все, у меня это честно выдранное из текста по БСП "ПараметрыПечати", там же мы получаем документы для печати ПараметрыПечати.ОбъектыПечати

И все заработало,спасибо тем кто захотел помочь.
12. user2033930 22.08.24 07:41 Сейчас в теме
(11) Сам себя не похвалишь - никто не похвалит! ))

Да, именно так это и работает в принципе.
Молодец, конечно, что самостоятельно до этого допёр! Сейчас на форуме редко кто хочет самостоятельно шевелить мозгами, даже ему указали доскональное направление (в хорошем смысле).
13. IDMIRT 22.08.24 07:56 Сейчас в теме
Решение оказалось неожиданно простым, подобных примеров в демке БСП я не нашел, даже странно. В ВПФ там легко и просто все делается, а тут несколько перемудрили. А ответ сюда поместил я для других программистов, поскольку в документации, скажем честно об этом сказано вскользь, в демке БСП пример на который ссылается документация вообще не связан с формой просто показана возможность. Так что вдруг кому еще пригодится.
И да, нигде не сказано что в Команда.МенеджерПечати можно размещать ссылку на объект, где нет процедуры Печать об этом можно догадаться только изучив демку с БСП :) Ну или очень внимательно читая документацию, там есть этот пример, но без пояснений.
user2033930; +1 Ответить
14. user2033930 22.08.24 08:17 Сейчас в теме
(13) Да, баловался я как-то этими печатными формами основательно...
Прикрепленные файлы:
Руководство пользователя НПФ 1.0.docx
Оставьте свое сообщение

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