Имя: Пароль:
1C
1С v8
УФ Печатная форма. Вывести окно перед печатью для ввода доп параметров
0 Wefast
 
21.06.17
13:46
В общем надо переделать пф из БП 2.0 в БП 3.0

В БП 2.0 в функции Печать был код:

    СписокСтрок = Новый СписокЗначений;
    Н = 1;
    СписокСтрок.Добавить(0, "Все");
    Для каждого Стр из СсылкаНаОбъект.КА_ДляТТН Цикл
        СписокСтрок.Добавить(Н, Строка(Н)+" строка");
        Н = Н + 1;
    КОнецЦикла;    
    
    ВыбЭлемент = СписокСтрок.НайтиПоЗначению(0);
    ВыбЭлемент = СписокСтрок.ВыбратьЭлемент("Выберите номер строки", ВыбЭлемент) ;
    Если ВыбЭлемент = Неопределено Тогда
        Сообщить("Не выбран тип цен.");
    Иначе
        ВыбНомерСтроки = ВыбЭлемент.Значение;
    КонецЕсли;

Смысл такой: В документе табличная часть. На каждую строку выводится своя печатная форма .

Перед печатью пользователя спрашивают какую строку напечатать. 1 строка Все печатать.

Как это реализовать в печатной форме на УФ?

Из модуля объекта  функции Печать я же не могу ничего спросить у пользователя
1 RomaH
 
naïve
21.06.17
13:50
в крайней БСП - есть такая возможность
2 Wefast
 
21.06.17
13:53
(1) ?
3 RomaH
 
naïve
21.06.17
14:00
(2) блин - в БСП есть подсистема печати
так вот - там это реализовано
4 Cyberhawk
 
21.06.17
14:27
"Из модуля объекта  функции Печать я же не могу ничего спросить у пользователя" // Подключемую печатную форму сделай, тип команды - вызов клиентского метода, там метод "Печать" на клиенте
5 Wefast
 
21.06.17
14:50
(3) вот бы было понятно что ты имеешь ввиду. Нашел я общие модули печати(УправлениеПечатью) Но как это мне поможет правильно написать внешнюю обработку не понятно

Указываю в СведениеОВнешнейОбработки

.использование = "ОткрытиеФормы".

В форме пишу

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


Этот код формы хорошо работает для быстрой отладки.

Но вот как все это отладить после подключения не ясно. Мне же в функцию печать нужно передать не Ссылку на документ с формы, а владельца формы(документ, и какие то реквизиты.)

Или может нужно в таких случаях использвать ВызовКлиентскогоМетода?
6 Cyberhawk
 
21.06.17
14:58
"как все это отладить после подключения не ясно" // Я для этого встраиваю подсистему ИР
7 Wirtuozzz
 
21.06.17
15:01
8 Wefast
 
21.06.17
15:18
(7) там же только написано что он решил вопрос, а каким образом решил не написано
9 polosov
 
21.06.17
15:20
10 Wefast
 
21.06.17
15:28
(9) полезно, но не то что нужно

Процедура П(м)

    МояОбработка = РеквизитФормыВЗначение("Объект");
    МассивОбъектов = Новый Массив();
    МассивОбъектов.Добавить();
    
    ОбъектыПечати = Новый СписокЗначений;
    ОбъектыПечати.Добавить(м[0]);
    
    КоллекцияПечатныхФорм = Новый ТаблицаЗначений;
    КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
    КоллекцияПечатныхФорм.Колонки.Добавить("ИмяМакета");
    КоллекцияПечатныхФорм.Колонки.Добавить("Картинка");
    КоллекцияПечатныхФорм.Колонки.Добавить("ПолныйПутьКМакету");
    КоллекцияПечатныхФорм.Колонки.Добавить("СинонимМакета");
    КоллекцияПечатныхФорм.Колонки.Добавить("ТабличныйДокумент");
    КоллекцияПечатныхФорм.Колонки.Добавить("Экземпляров");
    КоллекцияПечатныхФорм.Колонки.Добавить("ИмяФайлаПечатнойФормы");
        
    НоваяСтрока =  КоллекцияПечатныхФорм.Добавить();
    НоваяСтрока.ИмяВРЕГ = "ТРАНСПОРТНАЯНАКЛАДНАЯ";       
    
    МояОбработка.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, Новый Структура(""));
    
    
КонецПроцедуры

&НаКлиенте
Процедура Печать(ИдентификаторКоманды,ОбъектыНазначения) Экспорт
    Сообщить(ОбъектыНазначения);
    П(ОбъектыНазначения);    
КонецПроцедуры


Сделал так. Теперь нужно сделать КоллекцияПечатныхФорм[0].ТабличныйДокумент.Показать(); Но он выведет обычный табличный документ в окно. А не как печатную форму в какую то стандартную форму для этого. Не рисовать же мне теперь форму для вывода.
11 TormozIT
 
гуру
01.07.17
20:35
(6) + А теперь и встраивать подсистему ИР не нужно, если режим совместимости 8.3.9+, т.к. есть расширение ИР.