Имя: Пароль:
1C
1С v8
Кнопки в Печатной форме
,
0 keramik
 
09.02.15
14:41
1С 8.2, Управление торговлей 10.3
Создал печатную форму в конфигурации, добавил кнопку в документ, которая вызывает непосредственно новую форму.
Но когда открывается окно предпросмотра, то в нём не отображаются кнопки "На печать", "Сформировать PDF", "Отправить на почту". Однако у стандартных форм такие кнопки появляются.
Как добавить эти кнопки, чтобы для запуска печати не надо было всё время жать "Ctrl+P"?
1 Fish
 
09.02.15
14:42
(0) Ну так посмотри, какая форма открывает типовую печать.
2 keramik
 
09.02.15
14:46
(1) :D
Пол дня тупил, крутил формы так и этак. А решение было примитивно-простым.
Спасибо, заработало
3 keramik
 
09.02.15
16:08
Так, поторопился я кричать "Ура".
Как в языке 1С указать, что надо выбирать для печати форму с названием "Print"?
Код в обработке такой:
УниверсальныеМеханизмы.НапечататьДокументПоУмолчанию(ЭтотОбъект);
Он выводит на печать документ, который отмечен "По Умолчанию".
Но как указать свой документ?
Если вписываю УниверсальныеМеханизмы.НапечататьДокументPrint(ЭтотОбъект); то появляется ошибка Object method not found (НапечататьДокументPrint).
4 Deon
 
09.02.15
16:11
Я вот никогда не знал, как в таких случаях можно что-то объяснить
5 salvator
 
09.02.15
16:12
(3)
Ну дык передай свой табличный документ в эту процедуру.
6 salvator
 
09.02.15
16:17
+(5) Кури процедуру УниверсальныеМеханизмы.НапечататьДокумент()
7 Поpyчик-4
 
09.02.15
16:20
8 keramik
 
09.02.15
16:39
Вот процедура, которая выводит на печать документ:
Процедура НапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = "", Ссылка = Неопределено,
    ИсточникМакета = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт

    Если ПечДокумент = Неопределено тогда
        Возврат;
    КонецЕсли;

    // Получить необходимое количество копий
    Если КоличествоЭкземпляров > 0 Тогда
        ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров;
    КонецЕсли;

    Если НЕ ПечДокумент.АвтоМасштаб
       И НЕ ЗначениеЗаполнено(ПечДокумент.ИмяПринтера) Тогда
        ПечДокумент.АвтоМасштаб = Истина;
    КонецЕсли;

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

        НаПринтер.Добавить(ПечДокумент);
    КонецЕсли;

КонецПроцедуры // НапечататьДокумент()

Я не понимаю, что именно тут поменять, чтобы печаталась новая форма Print.
Добавил ИмяМакета = "Print"
Но появилось сообщение, что Object method not found (Область)
ЭлементыФормы.ПолеТабличногоДокумента.ВставитьОбласть(ПечатныйДокумент.Область());
из процедуры ПриОткрытии, которая находится в форме "ПечатьДокументов".
9 salvator
 
09.02.15
16:41
(8) Ничего в ней менять не надо. Передавать в нее надо твой табличный документ.
10 keramik
 
09.02.15
16:48
А передавать надо в Процедуре "ПриОткрытии", которая в форме "ПечатьДокументов" находится?
11 keramik
 
09.02.15
17:03
Нашёл-таки, что и где выводить. Спасибо за подсказки всем.
Добавил в конце процедуры, формарующей форму Print, строку:
УниверсальныеМеханизмы.НапечетатьДокумент(ТабДок,,,заголовок);
12 keramik
 
09.02.15
17:09
Правда теперь два окна открыавются.
Одно с кнопками, как надо и второе без них.
13 keramik
 
09.02.15
17:23
Хммм.... Получается, что у меня кнопрой запускается процедура Print и генерит печатную форму, а затем ещё процедура "НапечататьДокумент" из "УниверсальныеМеханизмы" создаёт ещё одну форму для печати.
Гррр.... мозг закипает потихоньку.
AdBlock убивает бесплатный контент. 1Сергей