Переношу доработки с обычных форм в управляемые.
В обычных формах при печати пользователь мог выбрать тип выводимой формы
В УФ теперь печать в модуле менеджера.
А там задать вопрос пользователю не получается.
Для вывода печатной формы используется стандартный механизм БУ для Украины,
с Командами печати и выводом через подсистему печати.
Как можно реализовать данный выбор в УФ?
Можно добавить 2 команды печати, но хотелось бы предоставить пользователю выбор.
В обычных формах при печати пользователь мог выбрать тип выводимой формы
СписокВыбора = Новый СписокЗначений;
СписокВыбора.Добавить("Перадача", "Акт передачи");
СписокВыбора.Добавить("Возврат", "Акт возврата");
ВыбСтрока = СписокВыбора.ВыбратьЭлемент("Выберите вид акта для печати");
В УФ теперь печать в модуле менеджера.
А там задать вопрос пользователю не получается.
Для вывода печатной формы используется стандартный механизм БУ для Украины,
с Командами печати и выводом через подсистему печати.
Как можно реализовать данный выбор в УФ?
Можно добавить 2 команды печати, но хотелось бы предоставить пользователю выбор.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Делаем через оповещение.
Что-то вроде:
А там задать вопрос пользователю не получается.
Делаем через оповещение.
Что-то вроде:
Оп = Новый ОписаниеОповещения("ВыполнитьПослеЗакрытияВопроса", ЭтотОбъект, ДополнительныеПараметры);
ОбработкаРасшифровки.ПоказатьВыборДействия(Оп, Расшифровка,ДоступныеДействия, ДополнительныеПунктыМеню);
(11) В БУ для Украины все реализовано в модуле менеджера.
Например,
В каком месте на клиенте задать вопрос пользователю?
Например,
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
// Расходная накладная
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "АктПередачи";
КомандаПечати.Представление = НСтр("ru='Акт приема-передачи ОС';uk='Акт приема-передачи ОС'");
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.СписокФорм = "ФормаСписка,ФормаВыбора,ФормаДокументаОбщая";
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктПередачи") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктПередачи", НСтр("ru='Акт приема-передачи ОС';uk='Акт приема-передачи ОС'"),
ПечатьАктаПриемаПередачиОС(МассивОбъектов, ОбъектыПечати, ПараметрыВывода),,"Документ.РеализацияТоваровУслуг.АктПриемаПередачиОС", , Истина);
КонецЕсли;
КонецПроцедуры
Функция ПечатьАктаПриемаПередачиОС(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
СписокВыбора = Новый СписокЗначений;
СписокВыбора.Добавить("Перадача", "Акт передачи");
СписокВыбора.Добавить("Возврат", "Акт возврата");
ВыбСтрока = СписокВыбора.ВыбратьЭлемент("Выберите вид акта для печати");
.................
КонецФункции
ПоказатьВ каком месте на клиенте задать вопрос пользователю?
(10) пример в случае выбора периода перед печатью, можно переделать под вопрос о выборе типа печатной формы и вызывать ПечататьАктПередачи или
ПечататьАктВозврата
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Если ПараметрКоманды.Количество() > 1 Тогда
ПоказатьПредупреждение(, "Печать нескольких документов не реализована, можно печатать только по одному документу.", , "Предупреждение");
Возврат;
КонецЕсли;
//выбор стандартного периода
Дата1 = Дата(1,1,1);
Дата2 = Дата(1,1,1);
Диалог = Новый ДиалогРедактированияСтандартногоПериода();
Диалог.Период = Новый СтандартныйПериод(Дата1, Дата2);
ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ВыполнитьПослеВыбораПериода", ЭтотОбъект, ПараметрКоманды);
Диалог.Показать(ОписаниеОповещенияОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПослеВыбораПериода(Результат, ПараметрКоманды) Экспорт
Если Результат <> Неопределено Тогда
Дата1 = Результат.ДатаНачала;
Дата2 = Результат.ДатаОкончания;
ТабДок = Новый ТабличныйДокумент;
Печать(ТабДок, ПараметрКоманды, Дата1, Дата2);
Если ТабДок.ВысотаТаблицы < 2 Тогда
Возврат;
КонецЕсли;
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура Печать(ТабДок, ПараметрКоманды, Дата1, Дата2)
Документы.МойДокумент.ПечатьКМ(ТабДок, ПараметрКоманды, Дата1, Дата2);
КонецПроцедуры
Показать
вообще вопрос пользователю задать можно
сложность в том, что вопрос покажется после отработки кода всей процедуры, в которой этот вопрос задается
а значит надо изменить саму схему вопрос-ответ-обработка ответа
для этого нужно отделить сам вопрос от формирования пф
а результат ответа передавать в формирование ПФ как значение параметра
тогда вы легко реализуете и вопрос пользователю, и выбор, и печать выбранной ПФ
сложность в том, что вопрос покажется после отработки кода всей процедуры, в которой этот вопрос задается
а значит надо изменить саму схему вопрос-ответ-обработка ответа
для этого нужно отделить сам вопрос от формирования пф
а результат ответа передавать в формирование ПФ как значение параметра
тогда вы легко реализуете и вопрос пользователю, и выбор, и печать выбранной ПФ
Лучше сделать несколько команд печати.
Как еще один вариант: сделать внешнюю обработку печати с открытием формы, в которой уже выбирать нужный макета.
Еще один вариант, добавить свою команду печати (не в менеджер документа) в конфигурацию с параметром - ваш документ и размещением в подменю печтаи и уже в нее дать команду на открытие формы с возможность выбора макета.
Как еще один вариант: сделать внешнюю обработку печати с открытием формы, в которой уже выбирать нужный макета.
Еще один вариант, добавить свою команду печати (не в менеджер документа) в конфигурацию с параметром - ваш документ и размещением в подменю печтаи и уже в нее дать команду на открытие формы с возможность выбора макета.
УФ предполгают что кнопка печать будет работать на список выделенных документов в журнале.
Если предполагается один общий вопрос на все выделенные объекты - тогда логично сделать выбор между разными печатными формами или реквизит (дополнительный реквизит).
Если предполагается один общий вопрос на все выделенные объекты - тогда логично сделать выбор между разными печатными формами или реквизит (дополнительный реквизит).
Ну ладно, из последней похожей задачи, что вспомнилось.
Чуваки на складе пакуют товары для отгрузки на торговую сеть.
Сеть выставляет условие, на каждом поддоне должна быть бумажку определенного вида.
Ключевое условие, надо чтобы было напечатано на каждом поддоне его номер в виде
1/10, 2/10.... 10/10.
Количество поддонов разное под каждую отгрузку.
В обычных формах задаем вопрос сколько поддонов (в примере 10), ну и формируем нужное количество.
Я так понимаю тут Вы мне все предлагаете создать пару десятков команд печати, и будет безразмерное меню печати, где пользователь выберет нужное количество поддонов.
Я правильно все понимаю?
Чуваки на складе пакуют товары для отгрузки на торговую сеть.
Сеть выставляет условие, на каждом поддоне должна быть бумажку определенного вида.
Ключевое условие, надо чтобы было напечатано на каждом поддоне его номер в виде
1/10, 2/10.... 10/10.
Количество поддонов разное под каждую отгрузку.
В обычных формах задаем вопрос сколько поддонов (в примере 10), ну и формируем нужное количество.
Я так понимаю тут Вы мне все предлагаете создать пару десятков команд печати, и будет безразмерное меню печати, где пользователь выберет нужное количество поддонов.
Я правильно все понимаю?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот