УФ печать

1. trv2001 05.03.19 14:28 Сейчас в теме
Переношу доработки с обычных форм в управляемые.
В обычных формах при печати пользователь мог выбрать тип выводимой формы

СписокВыбора = Новый СписокЗначений;
	СписокВыбора.Добавить("Перадача", "Акт передачи");
	СписокВыбора.Добавить("Возврат", "Акт возврата");
	
	ВыбСтрока = СписокВыбора.ВыбратьЭлемент("Выберите вид акта для печати");


В УФ теперь печать в модуле менеджера.
А там задать вопрос пользователю не получается.
Для вывода печатной формы используется стандартный механизм БУ для Украины,
с Командами печати и выводом через подсистему печати.

Как можно реализовать данный выбор в УФ?
Можно добавить 2 команды печати, но хотелось бы предоставить пользователю выбор.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. dhurricane 05.03.19 14:39 Сейчас в теме
(1) Прошу прощения, за возможно неуместный вопрос, но почему 2 команды печати не предоставляют пользователю должного выбора?
signum2009; +1 Ответить
7. trv2001 05.03.19 15:03 Сейчас в теме
(3) Предоставляют.
Просто интересны другие варианты решения проблемы.

Например, иногда бывает надо спросить у пользователя какое количество чего-то надо вывести.
Интересует сама возможность что-то "спросить" у пользователя при печати..
5. N0t_F0und 10 05.03.19 14:56 Сейчас в теме
(1)
А там задать вопрос пользователю не получается.

Делаем через оповещение.
Что-то вроде:
Оп = Новый ОписаниеОповещения("ВыполнитьПослеЗакрытияВопроса", ЭтотОбъект, ДополнительныеПараметры);
        ОбработкаРасшифровки.ПоказатьВыборДействия(Оп, Расшифровка,ДоступныеДействия, ДополнительныеПунктыМеню);
6. trv2001 05.03.19 15:01 Сейчас в теме
(5)
ОписаниеОповещения


Доступность:

Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).

В модуле менеджера использовать не получится...
9. user623969_dusa 05.03.19 15:09 Сейчас в теме
(6) не надо взаимодействовать с пользователем с сервера, только с клиента.. спросили пользователя - передали на сервер вариант ответа - выполнили формирование документа - вернули на клиент пользователю посмотреть
10. trv2001 05.03.19 15:12 Сейчас в теме
(9) Это я понимаю.
Но тогда не получится использовать КомандыПечати. И не будет красивого вывода ПФ.
Возможно кто-то сталкивался как обойти данный момент.
11. user623969_dusa 05.03.19 15:18 Сейчас в теме
(10) не понято - в чем проблема использовать команды печати - пользователь нажал команду, на клиенте в модуле команды вопрос пользователю, пользователь ответил передаете ответ на сервер вызываете свой модуль менеджера
12. trv2001 05.03.19 15:24 Сейчас в теме
(11) В БУ для Украины все реализовано в модуле менеджера.
Например,
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
         // Расходная накладная
         КомандаПечати = КомандыПечати.Добавить();
         КомандаПечати.Идентификатор = "АктПередачи";
         КомандаПечати.Представление = НСтр("ru='Акт приема-передачи ОС';uk='Акт приема-передачи ОС'");
         КомандаПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
         КомандаПечати.СписокФорм    = "ФормаСписка,ФормаВыбора,ФормаДокументаОбщая";
КонецПроцедуры

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

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

        .................
КонецФункции
Показать


В каком месте на клиенте задать вопрос пользователю?
18. singlych 05.03.19 18:29 Сейчас в теме
(12)
В каком месте на клиенте задать вопрос пользователю?


В этом:
КомандаПечати.Обработчик =
13. user623969_dusa 05.03.19 15:28 Сейчас в теме
(10) пример в случае выбора периода перед печатью, можно переделать под вопрос о выборе типа печатной формы и вызывать ПечататьАктПередачи или
ПечататьАктВозврата

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	Если ПараметрКоманды.Количество() > 1 Тогда
		ПоказатьПредупреждение(, "Печать нескольких документов не реализована, можно печатать только по одному документу.", , "Предупреждение");
		Возврат;
	КонецЕсли;

	//выбор стандартного периода
	Дата1 = Дата(1,1,1);
	Дата2 = Дата(1,1,1);
    Диалог = Новый ДиалогРедактированияСтандартногоПериода();                                 
    Диалог.Период = Новый СтандартныйПериод(Дата1, Дата2);        
    ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ВыполнитьПослеВыбораПериода", ЭтотОбъект, ПараметрКоманды);
    Диалог.Показать(ОписаниеОповещенияОЗакрытии);	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьПослеВыбораПериода(Результат, ПараметрКоманды) Экспорт
    Если Результат <> Неопределено Тогда
        Дата1 = Результат.ДатаНачала;
        Дата2 = Результат.ДатаОкончания;
		
		ТабДок = Новый ТабличныйДокумент;
		Печать(ТабДок, ПараметрКоманды, Дата1, Дата2);

		Если ТабДок.ВысотаТаблицы < 2 Тогда
			Возврат;
		КонецЕсли;

		ТабДок.ОтображатьСетку = Ложь;
		ТабДок.Защита = Ложь;
		ТабДок.ТолькоПросмотр = Ложь;
		ТабДок.ОтображатьЗаголовки = Ложь;
		ТабДок.Показать();

		ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
    КонецЕсли;    
КонецПроцедуры

&НаСервере
Процедура Печать(ТабДок, ПараметрКоманды, Дата1, Дата2)
	Документы.МойДокумент.ПечатьКМ(ТабДок, ПараметрКоманды, Дата1, Дата2);
КонецПроцедуры
Показать
16. trv2001 05.03.19 15:43 Сейчас в теме
(13)
ТабДок.Показать();


Варианты вида ТабДок.Показать(); не подходят.
В конфигурации есть подсистема печати которая выводит все печатные формы на просмотр.
А так получится ну очень не красиво.

Идея в том, что бы использовать СТАНДАРТНУЮ подсистему печати.
14. YannikAlx 27 05.03.19 15:32 Сейчас в теме
(10) Вы мне напоминаете , руководителей , которые ставят условие - переходим на 8 , но чтобы в ней было все как в 7!
В управляемых формах ТУЧА возможностей - самое главное это не пытаться сделать ТАК КАК В 7 (то есть так как было в обычных формах)
2. VictorRGB2 14 05.03.19 14:37 Сейчас в теме
вообще вопрос пользователю задать можно
сложность в том, что вопрос покажется после отработки кода всей процедуры, в которой этот вопрос задается
а значит надо изменить саму схему вопрос-ответ-обработка ответа

для этого нужно отделить сам вопрос от формирования пф
а результат ответа передавать в формирование ПФ как значение параметра
тогда вы легко реализуете и вопрос пользователю, и выбор, и печать выбранной ПФ
4. user633533_encantado 11 05.03.19 14:46 Сейчас в теме
Лучше сделать несколько команд печати.

Как еще один вариант: сделать внешнюю обработку печати с открытием формы, в которой уже выбирать нужный макета.

Еще один вариант, добавить свою команду печати (не в менеджер документа) в конфигурацию с параметром - ваш документ и размещением в подменю печтаи и уже в нее дать команду на открытие формы с возможность выбора макета.
8. acanta 05.03.19 15:07 Сейчас в теме
УФ предполгают что кнопка печать будет работать на список выделенных документов в журнале.
Если предполагается один общий вопрос на все выделенные объекты - тогда логично сделать выбор между разными печатными формами или реквизит (дополнительный реквизит).
15. trv2001 05.03.19 15:41 Сейчас в теме
Ну ладно, из последней похожей задачи, что вспомнилось.
Чуваки на складе пакуют товары для отгрузки на торговую сеть.
Сеть выставляет условие, на каждом поддоне должна быть бумажку определенного вида.
Ключевое условие, надо чтобы было напечатано на каждом поддоне его номер в виде
1/10, 2/10.... 10/10.
Количество поддонов разное под каждую отгрузку.
В обычных формах задаем вопрос сколько поддонов (в примере 10), ну и формируем нужное количество.
Я так понимаю тут Вы мне все предлагаете создать пару десятков команд печати, и будет безразмерное меню печати, где пользователь выберет нужное количество поддонов.
Я правильно все понимаю?
17. sergathome 4 05.03.19 16:12 Сейчас в теме
(15) Правильно. Я всем, привыкшим к обычным формам, всегда привожу одну простую аналогию, которая всё ставит на свои места - программирование на УФ больше похоже на http-программинг, чем на обычный. Как только это вкуриваешь, всё встаёт на место.
Оставьте свое сообщение

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