Имя: Пароль:
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 и генерит печатную форму, а затем ещё процедура "НапечататьДокумент" из "УниверсальныеМеханизмы" создаёт ещё одну форму для печати.
Гррр.... мозг закипает потихоньку.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший