Имя: Пароль:
1C
1С v8
Печать макета документа на управляемых формах в менеджере объекта
0 art93
 
30.07.15
08:35
Подскажите пожалуйста как реализовать? На какой типовой документ глянуть можно?
Вот картинка макета https://cloud.mail.ru/public/9qKD/fLdvMEHqt
1 asady
 
30.07.15
08:37
(0) франчи начали наконец внутреннюю автоматизацию на 8.3???
2 art93
 
30.07.15
08:38
да
В октябре переходим полностью
3 shpioleg
 
30.07.15
08:45
(0) А что за трудности? Делаешь экспортную процедуру и в нее ссылку на док передаешь.
4 ДенисЧ
 
30.07.15
08:47
В любом типовом документе из уг11 или бп3
5 art93
 
30.07.15
09:14
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    
    Если ПравоДоступа("Изменение", Метаданные.Документы.ИнвентаризацияНаличныхДенежныхСредств) Тогда
        
        // Акт инвентаризации
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.Идентификатор = "ИНВ15";
        КомандаПечати.Представление = НСтр("ru = 'ИНВ-15'");
        КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
        
    КонецЕсли;
    
КонецПроцедуры

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

Функция СформироватьПечатнуюАктаИнвентаризацииНаличныхДенежныхСредств(МассивОбъектов, ОбъектыПечати)
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ИНВ15";
    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ИнвентаризацияНаличныхДенежныхСредств.ПФ_MXL_ИНВ15");
    
    ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
    
    МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(МассивОбъектов, МенеджерВременныхТаблиц);
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ДанныеДокумента.Ссылка КАК Ссылка,
    |    ДанныеДокумента.Номер КАК Номер,
    |    ДанныеДокумента.Организация.Префикс КАК Префикс,
    |    ДанныеДокумента.Дата КАК ДатаДокумента,
    |    ДанныеДокумента.Организация КАК Организация,
    |    ДанныеДокумента.Организация.НаименованиеСокращенное КАК ПредставлениеОрганизации,
    |    ДанныеДокумента.Организация.КодПоОКПО КАК ОрганизацияПоОКПО,
    |    ДанныеДокумента.ПоследнийНомерПКО КАК НомерПКО,
    |    ДанныеДокумента.ПоследнийНомерРКО КАК НомерРКО,
    |    ДанныеДокумента.КассоваяКнига.СтруктурноеПодразделение КАК Подразделение,
    |    ТаблицаОтветственныеЛица.КассирНаименование КАК ФИОКассира,
    |    ТаблицаОтветственныеЛица.КассирДолжность КАК КассирДолжность,
    |    ТаблицаОтветственныеЛица.РуководительНаименование КАК ФИОРуководителя,
    |    ТаблицаОтветственныеЛица.РуководительДолжность КАК РуководительДолжность
    |ИЗ
    |    Документ.ИнвентаризацияНаличныхДенежныхСредств КАК ДанныеДокумента
    |        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОтветственныеЛица КАК ТаблицаОтветственныеЛица
    |        ПО ДанныеДокумента.Ссылка = ТаблицаОтветственныеЛица.Ссылка
    |ГДЕ
    |    ДанныеДокумента.Ссылка В(&МассивДокументов)
    |
    |УПОРЯДОЧИТЬ ПО
    |    ДатаДокумента,
    |    Номер
    |;
    |///////////////////////////////////////////////////////////
    |
    |ВЫБРАТЬ
    |    ТаблицаДокумента.Ссылка КАК Ссылка,
    |    ТаблицаДокумента.Касса.ВалютаДенежныхСредств КАК Валюта,
    |    СУММА(ТаблицаДокумента.СуммаПоФакту) КАК СуммаПоФакту
    |    
    |ИЗ
    |    Документ.ИнвентаризацияНаличныхДенежныхСредств.Кассы КАК ТаблицаДокумента
    |    
    |ГДЕ
    |    ТаблицаДокумента.Ссылка В(&МассивДокументов)
    |    
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаДокумента.Ссылка,
    |    ТаблицаДокумента.Касса.ВалютаДенежныхСредств
    |;
    |///////////////////////////////////////////////////////////
    |
    |ВЫБРАТЬ
    |    ТаблицаДокумента.Ссылка                       КАК Ссылка,
    |    ТаблицаДокумента.Ссылка.СуммаПоФактуВсего     КАК СуммаПоФактуРегл,
    |    ТаблицаДокумента.Ссылка.СуммаПоУчетуВсего     КАК СуммаПоУчетуРегл,
    |    ЕСТЬNULL(ДенежныеСредства.СуммаРеглПриход, 0) КАК СуммаИзлишекРегл,
    |    ЕСТЬNULL(ДенежныеСредства.СуммаРеглРасход, 0) КАК СуммаНедостачаРегл
    |    
    |ИЗ
    |    Документ.ИнвентаризацияНаличныхДенежныхСредств.Кассы КАК ТаблицаДокумента
    |    
    |    ЛЕВОЕ СОЕДИНЕНИЕ
    |        РегистрНакопления.ДенежныеСредстваНаличные.Обороты(,, Регистратор) КАК ДенежныеСредства
    |    ПО
    |        ДенежныеСредства.Регистратор = ТаблицаДокумента.Ссылка
    |    
    |ГДЕ
    |    ТаблицаДокумента.Ссылка В(&МассивДокументов)
    |;";
    
    Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
    Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", ВалютаРегламентированногоУчета);
    МассивРезультатов = Запрос.ВыполнитьПакет();
    
    ВыборкаДокументов = МассивРезультатов[0].Выбрать();
    ВыборкаРасхождений = МассивРезультатов[1].Выбрать();
    ВыборкаИтогов = МассивРезультатов[2].Выбрать();
    
    ПервыйДокумент = Истина;
    Пока ВыборкаДокументов.Следующий() Цикл
        
        Если ПервыйДокумент Тогда
            ПервыйДокумент = Ложь;
        Иначе
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
        ОбластьМакета.Параметры.Заполнить(ВыборкаДокументов);
        ОбластьМакета.Параметры.НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ВыборкаДокументов.Номер);
        ОбластьМакета.Параметры.ДатаДокумента = Формат(ВыборкаДокументов.ДатаДокумента, "ДФ=dd.MM.yyyy");
        ТабличныйДокумент.Вывести(ОбластьМакета);
        
        СтруктураПоиска = Новый Структура("Ссылка", ВыборкаДокументов.Ссылка);
        НомерПоПорядку = 1;
        Пока ВыборкаРасхождений.НайтиСледующий(СтруктураПоиска) Цикл
            ОбластьМакета = Макет.ПолучитьОбласть("СтрокаНаличныхДенег");
            ОбластьМакета.Параметры.Заполнить(ВыборкаРасхождений);
            ОбластьМакета.Параметры.НомерПоПорядку = НомерПоПорядку;
            ОбластьМакета.Параметры.НаименованиеЦенности = НСтр("ru = 'наличных денег'");
            ТабличныйДокумент.Вывести(ОбластьМакета);
            НомерПоПорядку = НомерПоПорядку + 1;
        КонецЦикла;
        Для Инд = НомерПоПорядку По 5 Цикл
            ОбластьМакета = Макет.ПолучитьОбласть("СтрокаНаличныхДенег");
            ОбластьМакета.Параметры.НомерПоПорядку = Инд;
            ТабличныйДокумент.Вывести(ОбластьМакета);
        КонецЦикла;
        
        ВыборкаРасхождений.Сбросить();
        
        ОбластьМакета = Макет.ПолучитьОбласть("Итоги");
        ВыборкаИтогов.НайтиСледующий(СтруктураПоиска);
        
        ОбластьМакета.Параметры.СуммаПоФактуРубли = Формат(ВыборкаИтогов.СуммаПоФактуРегл, "ЧЦ=15; ЧДЦ=0; ЧН='0'");
        КопеекПоФакту = (ВыборкаИтогов.СуммаПоФактуРегл - Цел(ВыборкаИтогов.СуммаПоФактуРегл)) * 100;
        ОбластьМакета.Параметры.СуммаПоФактуКопейки = Формат(КопеекПоФакту, "ЧЦ=2; ЧДЦ=0; ЧН='00'");
        
        ОбластьМакета.Параметры.СуммаПоУчетуРубли = Формат(ВыборкаИтогов.СуммаПоУчетуРегл, "ЧЦ=15; ЧДЦ=0; ЧН='0'");
        КопеекПоУчету = (ВыборкаИтогов.СуммаПоУчетуРегл - Цел(ВыборкаИтогов.СуммаПоУчетуРегл)) * 100;
        ОбластьМакета.Параметры.СуммаПоУчетуКопейки = Формат(КопеекПоУчету, "ЧЦ=2; ЧДЦ=0; ЧН='00'");
        
        ОбластьМакета.Параметры.СуммаИзлишекРубли = Формат(ВыборкаИтогов.СуммаИзлишекРегл, "ЧЦ=15; ЧДЦ=0; ЧН='0'");
        КопеекИзлишек = (ВыборкаИтогов.СуммаИзлишекРегл - Цел(ВыборкаИтогов.СуммаИзлишекРегл)) * 100;
        ОбластьМакета.Параметры.СуммаИзлишекКопейки = Формат(КопеекИзлишек, "ЧЦ=2; ЧДЦ=0; ЧН='00'");
        
        ОбластьМакета.Параметры.СуммаНедостачаРубли = Формат(ВыборкаИтогов.СуммаНедостачаРегл, "ЧЦ=15; ЧДЦ=0; ЧН='0'");
        КопеекНедостача = (ВыборкаИтогов.СуммаНедостачаРегл - Цел(ВыборкаИтогов.СуммаНедостачаРегл)) * 100;
        ОбластьМакета.Параметры.СуммаНедостачаКопейки = Формат(КопеекНедостача, "ЧЦ=2; ЧДЦ=0; ЧН='00'");
        
        ОбластьМакета.Параметры.СуммаПоФактуРеглПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(
            ВыборкаИтогов.СуммаПоФактуРегл,
            ВалютаРегламентированногоУчета,
            Ложь);
        ОбластьМакета.Параметры.СуммаПоУчетуРеглПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(
            ВыборкаИтогов.СуммаПоУчетуРегл,
            ВалютаРегламентированногоУчета,
            Ложь);
        
        ТабличныйДокумент.Вывести(ОбластьМакета);
        ВыборкаИтогов.Сбросить();
        
        ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
        ОбластьМакета.Параметры.Заполнить(ВыборкаДокументов);
        ОбластьМакета.Параметры.НомерПКО = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ВыборкаДокументов.НомерПКО);
        ОбластьМакета.Параметры.НомерРКО = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ВыборкаДокументов.НомерРКО);
        ТабличныйДокумент.Вывести(ОбластьМакета);
        
        ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        
        ОбластьМакета = Макет.ПолучитьОбласть("Страница2");
        ОбластьМакета.Параметры.Заполнить(ВыборкаДокументов);
        ТабличныйДокумент.Вывести(ОбластьМакета);
    КонецЦикла;
    
    Возврат ТабличныйДокумент;
    
КонецФункции
6 art93
 
30.07.15
09:17
Такой пример подойдёт?
в старой проге всё понятно было в модуле объекта:

Процедура Печать(ТабДок) Экспорт
    
    Если ЭтотОбъект.ЭтоНовый() Тогда
        ЭтотОбъект.Записать();
    КонецЕсли;
    
    Телефон = ПолучитьТелефонИзКонтактнойИнформации( Контрагент);
    Факс    = ПолучитьФаксИзКонтактнойИнформации( Контрагент);

    Адрес   = ПолучитьАдресИзКонтактнойИнформации( Контрагент, "Доставки");
    Если НЕ ЗначениеЗаполнено(Адрес) Тогда
        Адрес= ПолучитьАдресИзКонтактнойИнформации(Контрагент,"Фактический");
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(Адрес) Тогда
        Адрес= ПолучитьАдресИзКонтактнойИнформации(Контрагент,"Юридический");
    КонецЕсли;
        
        Макет = Документы.ЗаказНаСопровождение.ПолучитьМакет("Макет");
        // Заголовок
        Область = Макет.ПолучитьОбласть("_1");
        Область.Параметры.Номер = Номер;
        Область.Параметры.Дата  = Формат(Дата,"ДФ=dd.MM.yyyy");
        Область.Параметры.Контрагент = Контрагент;
        Область.Параметры.КонтЛицо = СокрЛП(КонтактноеЛицоКонтрагента.Наименование) + ПолучитьТелефонКО(КонтактноеЛицоКонтрагента);        Область.Параметры.Телефон = Телефон;
        Область.Параметры.Факс    = Факс;
        Область.Параметры.Адрес   = Адрес;
        Область.Параметры.Автор   = Ответственный.Наименование;
        Область.Параметры.ДатаПередачи = Формат(ДатаПередачиИсполнителю,"ДФ=dd.MM.yyyy");
        
        Область.Параметры.Исполнитель = Исполнитель;
        Область.Параметры.СодержаниеЗаказа = СокрЛП(Программа.Наименование)+" "+СодержаниеЗаказа;
        ТабДок.Вывести(Область);
        
        Область = Макет.ПолучитьОбласть("_2");
        Область.Параметры.Номер = Номер;
        Область.Параметры.Дата  = Формат(Дата,"ДФ=dd.MM.yyyy");
        Область.Параметры.АвторФамилия = Лев(Строка(Ответственный),Найти(Строка(Ответственный)," ")-1);
        Область.Параметры.Контрагент = Контрагент;
        Область.Параметры.КонтЛицо = КонтактноеЛицоКонтрагента;
        Область.Параметры.ТелефонФакс = Телефон+", "+Факс;
        Область.Параметры.Адрес = Адрес;
        Область.Параметры.СодержаниеЗаказа = СодержаниеЗаказа;
        Область.Параметры.Программа = СокрЛП(Программа.Наименование);
        Область.Параметры.Серия= "";
        Область.Параметры.Конфигурация= "";
        Область.Параметры.Релиз= "";
        Область.Параметры.ПечПоКурсам= "";
        Поз= Найти(Исполнитель.Наименование," ");
        Если Поз > 0 Тогда
            Область.Параметры.Исполнитель = Сред(Исполнитель.Наименование,1,Поз);
        Иначе
            Область.Параметры.Исполнитель = СокрЛП(Исполнитель.Наименование);
        КонецЕсли;
        ТабДок.Вывести(Область);
        
        ТабДок.ОтображатьСетку = Ложь;
        ТабДок.Защита = Ложь;
        ТабДок.ТолькоПросмотр = Ложь;
        ТабДок.ОтображатьЗаголовки = Ложь;
        ТабДок.Показать();
    
КонецПроцедуры