Имя: Пароль:
1C
1С v8
Печать макета документа на управляемых формах
,
0 art93
 
03.08.15
07:36
Нужно напечатать макет документа https://cloud.mail.ru/public/99cx/CWVTkbi3W
Пробую по аналогии с расходной накладной сделать

Вот два метода сделал, вроде правильно:

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.Идентификатор = "ПФ_ЗаказНаСопровождение";
        КомандаПечати.Представление = НСтр("ru = 'Заказ на сопровождение'");
        КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
        КомандаПечати.Порядок = 10;
        
КонецПроцедуры

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

Или ошибки есть?

Теперь реализовать метод СформироватьПечатнуюФормуЗаказНаСопровождение и всё?
1 zak555
 
03.08.15
07:43
ага
2 zak555
 
03.08.15
07:43
не метод, а функции, которая вернёт табличный документ
3 art93
 
03.08.15
08:31
Функция СформироватьПечатнуюФормуЗаказНаСопровождение(МассивОбъектов, ОбъектыПечати, КомплектыПечати)
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказНаСопровождение_ПФ_ЗаказНаСопровождение";        
    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаказНаСопровождение.ПФ_ЗаказНаСопровождение");
    НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
    
    Область = Макет.ПолучитьОбласть("Шапка");
    СтруктураДанныхШапка = Новый Структура;
    // Код из старой программы, помогите реализовать на управляемых формах
    Область.Параметры.Номер = Объект.Номер;
    Область.Параметры.Дата  = Формат(Дата,"ДФ=dd.MM.yyyy");
    Область.Параметры.Контрагент = Контрагент;
    Область.Параметры.КонтЛицо = СокрЛП(КонтактноеЛицоКонтрагента.Наименование) + ПолучитьТелефонКО(КонтактноеЛицоКонтрагента);//zor(100706)
    Область.Параметры.Телефон = Телефон;
    Область.Параметры.Факс    = Факс;
    Область.Параметры.Адрес   = Адрес;
    Область.Параметры.Автор   = Ответственный.Наименование;
    Область.Параметры.ДатаПередачи = Формат(ДатаПередачиИсполнителю,"ДФ=dd.MM.yyyy");
    //
    Область.Параметры.Заполнить(СтруктураДанныхШапка);
    ТабличныйДокумент.Вывести(Область);
    
    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,);
    
    ТабличныйДокумент.АвтоМасштаб = Истина;
    
    Если ПривилегированныйРежим() Тогда
        УстановитьПривилегированныйРежим(Ложь);
    КонецЕсли;
    
    Возврат ТабличныйДокумент;
    
КонецФункции
4 art93
 
03.08.15
08:33
В коде есть вставка из старой программы, помогите пожалуйста понять, как это реализуется на управляемых формах.
5 1Сергей
 
03.08.15
08:37
это надо перебрать массив объектов в цикле
6 zak555
 
03.08.15
08:40
сслыкаНаДок = МассивОбъектов[0];

Контрагент= сслыкаНаДок.Контрагент;
КонтактноеЛицоКонтрагента= сслыкаНаДок .КонтактноеЛицоКонтрагента;

//...
//потом реализуешь через метод заполнить у параметров ТД
7 art93
 
03.08.15
08:48
сслыкаНаДок = Документы.ЗаказНаСопровождение;
    Контрагент= сслыкаНаДок.Контрагент;
    КонтактноеЛицоКонтрагента= сслыкаНаДок.КонтактноеЛицоКонтрагента;

То есть вот так? и так далее?
8 zak555
 
03.08.15
08:50
синтаксический контроль подскажет какие переменные не определены
9 art93
 
03.08.15
09:00
он ничего не показал, но и никаких действий не сделал похоже
10 art93
 
03.08.15
09:01
Вот что на данный момент у меня написано для печати, что не так, помогите поправить пожалуйста

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.Идентификатор = "ПФ_ЗаказНаСопровождение";
        КомандаПечати.Представление = НСтр("ru = 'Заказ на сопровождение'");
        КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
        КомандаПечати.Порядок = 10;
        
КонецПроцедуры

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

Функция СформироватьПечатнуюФормуЗаказНаСопровождение(МассивОбъектов, ОбъектыПечати, КомплектыПечати)
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказНаСопровождение_ПФ_ЗаказНаСопровождение";        
    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаказНаСопровождение.ПФ_ЗаказНаСопровождение");
    НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
    
    Область = Макет.ПолучитьОбласть("Шапка");
    СтруктураДанныхШапка = Новый Структура;
    сслыкаНаДок = Документы.ЗаказНаСопровождение;
    Контрагент= сслыкаНаДок.Контрагент;
    КонтактноеЛицоКонтрагента= сслыкаНаДок.КонтактноеЛицоКонтрагента;
    Номер = сслыкаНаДок.Номер;
    Дата  = Формат(Дата,"ДФ=dd.MM.yyyy");
    Автор   = сслыкаНаДок.Ответственный.Наименование;
    ДатаПередачи = Формат(сслыкаНаДок.ДатаПередачиИсполнителю,"ДФ=dd.MM.yyyy");
    Область.Параметры.Заполнить(СтруктураДанныхШапка);
    ТабличныйДокумент.Вывести(Область);
    
    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,);
    
    ТабличныйДокумент.АвтоМасштаб = Истина;
    
    Если ПривилегированныйРежим() Тогда
        УстановитьПривилегированныйРежим(Ложь);
    КонецЕсли;
    
    Возврат ТабличныйДокумент;
    
КонецФункции
11 1Сергей
 
03.08.15
09:01
(7) трудно было первую строчку в (6) прочитать?
12 art93
 
03.08.15
09:08
Я просто не понял, как это? Мы обращаемся к пустому массиву и хотим взять оттуда Контрагента?
Простите за глупые вопросы, просто не могу понять
13 1Сергей
 
03.08.15
09:10
(12) чего это у тебя пустой?
14 art93
 
03.08.15
09:12
сслыкаНаДок = МассивОбъектов[0];
15 art93
 
03.08.15
09:18
Напишите пожалуйста, как должно быть реализовано, начало, в мой код, а дальше я по аналогии
16 1Сергей
 
03.08.15
09:18
МассивОбъектов не пустой
17 art93
 
03.08.15
09:23
Понял, заменил на сслыкаНаДок = МассивОбъектов[0];
А нужно ли на форму что то добавлять или программно кнопка должна добавиться?
18 art93
 
03.08.15
12:53
Код для печати.Прописанный в Модуле менеджера. Подскажите ещё что нужно прописать и где?
Заранее спасибо

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.Идентификатор = "ПФ_ЗаказНаСопровождение";
        КомандаПечати.Представление = НСтр("ru = 'Заказ на сопровождение'");
        КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
        КомандаПечати.Порядок = 10;
        
КонецПроцедуры

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

Функция СформироватьПечатнуюФормуЗаказНаСопровождение(МассивОбъектов, ОбъектыПечати, КомплектыПечати)
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказНаСопровождение_ПФ_ЗаказНаСопровождение";        
    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаказНаСопровождение.ПФ_ЗаказНаСопровождение");
    НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
    
    Область = Макет.ПолучитьОбласть("Шапка");
    сслыкаНаДок = МассивОбъектов[0];
    Контрагент= сслыкаНаДок.Контрагент;
    КонтактноеЛицоКонтрагента= сслыкаНаДок.КонтактноеЛицоКонтрагента;
    Номер = сслыкаНаДок.Номер;
    Дата  = Формат(Дата,"ДФ=dd.MM.yyyy");
    Автор   = сслыкаНаДок.Ответственный.Наименование;
    ДатаПередачи = Формат(сслыкаНаДок.ДатаПередачиИсполнителю,"ДФ=dd.MM.yyyy");
    ТабличныйДокумент.Вывести(Область);

    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,);
    
    ТабличныйДокумент.АвтоМасштаб = Истина;
    
    Если ПривилегированныйРежим() Тогда
        УстановитьПривилегированныйРежим(Ложь);
    КонецЕсли;
    
    Возврат ТабличныйДокумент;
    
КонецФункции
19 art93
 
03.08.15
13:08
Кто нибудь подскажет хотя бы направление?
2 + 2 = 3.9999999999999999999999999999999...