Имя: Пароль:
1C
 
С помощью БСП (подсистема печать) напечатать табличную часть обработки
0 Borteg
 
07.06.16
11:26
Добрый день. Есть обработка. В ней заполняется табличная часть. Есть команда печати, на нажатие которое происходит формирование печатной формы с помощью это табличной части. Перевожу сейчас все на бсп. Как  с помощью бсп вывести на печать табличную часть обработки? При типовом подходе передается МассивОбъектов в команду печати,но у меня объектов нету,мне надо передать  табличную часть, а в менеджере я уже сформирую из нее табличный документ и выведу на печать. Как это решается с помощью бсп?
1 luter-89
 
07.06.16
11:36
Пройдись отладчиком, далее будет код: Если ТипЗнч(Объект) = Тип("ДокументСсылка.Какой-то) Тогда, Если тип = справочник, то другое. Посмотри есть ли там условие, если тип обработка. Но скорее всего есть, так как есть обработки печати, например Счета на оплату. Передавай сам объект в МассивеОбъектов. И команду настой по примеру типовых команд
2 luter-89
 
07.06.16
11:37
У тебя же есть обработка, значит есть объект
3 Borteg
 
07.06.16
11:47
(2) При попытки печати из обработки получается, что он не может найти ссылку. Для обработки выдает ошибку.
4 Mort
 
07.06.16
12:12
Глубже надо копать. Ты полез в команды формирования печатных форм объектов, смотри ближе к открытию формы печати.
5 Borteg
 
07.06.16
12:20
(4) дорылся,а там пытается получить объекты метаданных из переданного массив объектов, а я туда то тз пихал, то пустой массив)
Я так понимаю функция печати документа вызывается всегда один раз, независимо от количества переданных ссылок, и уже кодом при формирования печатной формы надо определить какие ссылки из передаваемых надо печатать и сформировать табличный документ с разделителями для всех документа?
6 Borteg
 
07.06.16
12:24
(4) но всеравно если использовать типовые методы туда надо ссылки передавать или список, а в команде печати по этим ссылкам запросом снова получаются данные и происходит уже формирование печатной формы. Мне кажется надо просто использовать отдельные методы бсп, и не пытаться сделать все типовым способ как описано в 1с.
7 Borteg
 
07.06.16
13:20
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
    
    //УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма,МассивДляПечати);
     ТабДок = СформироватьПечатнуюФормуН();
    
    ИдентификаторПечатнойФормы = "Макет";
    МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент");    
    КоллекцияПечатныхФорм = МодульУправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(ИдентификаторПечатнойФормы);
    ПечатнаяФорма = МодульУправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, ИдентификаторПечатнойФормы);
    ПечатнаяФорма.СинонимМакета = "Привет";
    ПечатнаяФорма.ТабличныйДокумент = ТабДок;
    ПечатнаяФорма.ИмяФайлаПечатнойФормы = "Привет";
    
    ОбластиОбъектов = Новый СписокЗначений;
    МодульУправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
    
        
КонецПроцедуры
8 Borteg
 
07.06.16
13:21
(7) МодульУправлениеПечатьюКлиент.ПечатьДокументов если заполнено значение табличный документ не формирует его а сразу добавляет. Можно просто сформировать и вывести.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший