Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
01 фев 2023, 15:37

Кнопка внешней печатной формы word не появляется

Автор rabalegq, 11 авг 2022, 10:27

0 Пользователей и 1 гость просматривают эту тему.

rabalegq

В модуле менеджера документа написал следующее

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

В ФормаДокумента в Модуль, в процедуру "ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)" написал

УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма);
у меня в модуле формы в ФормаДокумента

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)



есть

ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);

на типовых документах я уже делал и всё было хорошо. Просто в модуль менеджер документа добавлял "Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт", а уже потом в общем модуле "УправлнениеПечатьюКлиент" и "УправлениеПечатьюСервер" прописывал весь код печати.

Но сейчас это самописный документ другого автора, в котором у меня не появляется кнопка печати, хоть и сделал всё по аналогии с другими документами

А кнопка в Предприятии так и не появилась, в чем проблема?

wise

(0) посмотрите:
https://infostart.ru/1c/articles/237013/

Добавление команд печати в свои документы в Бухгалтерии 3.0

Данная публикация может быть вам полезна, если вы хотите сделать своим нетиповым документам в Бухгалтерии 3.0 универсализированную печать (не затрагивая типовые объекты). Эта статья подойдет для любой конфигурации на основе БСП, так как использует возможности ее подсистемы "Печать"

В Бухгалтерии 2.0 была очень удобная типовая процедура


УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер,
Заголовок, НепосредственнаяПечать, Ссылка, ИмяМакета)

Она помогала вывести ваш печатный документ в универсальное окно печати, где вы выбирали количество копий, вариант сохранения и тому подобное

Сейчас, переходя с 2.0 на 3.0, я стал искать аналог этой процедуры и не нашел. Но это к лучшему, потому что я нашел еще более универсальный механизм. Он опирается на механизмы подсистемы "Печать" БСП (БСП - это основа всех современных конфигураций фирмы 1С). Нужно добавить несколько функций в два модуля: Модуль менеджера и Модуль формы. Пусть у нас есть нетиповой документ Приказ, и у него есть два макета и две формы.

Для каждого из двух макетов у нас подготовлены функции СформироватьАкт(Ссылка) и СформироватьПриказ(Ссылка), возвращающие табличные документы, которые нам нужно будет красиво выводить на печать. Хочется, не прилагая больших усилий, добиться следующего результата: чтобы в каждой из двух форм этого документа в командной панели была кнопка-подменю Печать, в которой был бы список из наших печатных форм.

Откроем форму ФормаДокумента, и создадим обработчик ПриСозданииНаСервере. Скопируем в модуль формы следующий код:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма)

КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)

УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект)

КонецПроцедуры

Теперь откроем Модуль менеджера и скопируем туда следующий код:


Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Акт";
КомандаПечати.Представление = "Дополнительный акт";
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента";

КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Приказ";
КомандаПечати.Представление = "Приказ";
КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента";

КонецПроцедуры

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;

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


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

КонецПроцедуры

Функция СформироватьНесколькоАктов(МассивОбъектов)

ТабДокумент = Новый ТабличныйДокумент;
Для каждого Ссылка из МассивОбъектов Цикл
ТабДокументОбъекта = СформироватьАкт(Ссылка);
Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц()
КонецЕсли;
ТабДокумент.Вывести(ТабДокументОбъекта)
КонецЦикла;

Возврат ТабДокумент

КонецФункции

Функция СформироватьНесколькоПриказов(МассивОбъектов)

ТабДокумент = Новый ТабличныйДокумент;
Для каждого Ссылка из МассивОбъектов Цикл
ТабДокументОбъекта = СформироватьПриказ(Ссылка);
Если ТабДокумент.ВысотаТаблицы > 0 И ТабДокументОбъекта.ВысотаТаблицы > 0 Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц()
КонецЕсли;
ТабДокумент.Вывести(ТабДокументОбъекта)
КонецЦикла;

Возврат ТабДокумент

КонецФункции

Функция СформироватьАкт(Ссылка)

ТабДокумент = Новый ТабличныйДокумент;
// подготовка ТабДокумента
Возврат ТабДокумент

КонецФункции

Функция СформироватьПриказ(Ссылка)

ТабДокумент = Новый ТабличныйДокумент;
// подготовка ТабДокумента
Возврат ТабДокумент

КонецФункции


Все готово, в форме документа у нас теперь программно будут добавляться кнопки печати. Чтобы они появились и в форме списка, проделайте с ней тоже самое (создайте обработчик ПриСозданииНаСервере и скопируйте код в Модуль формы ФормаСписка, в Модуле менеджера уже ничего менять не надо). Единственное отличие в третьем параметре функции ВыполнитьПодключаемуюКомандуПечати: вместо Объект нужно написать Элементы.Список. Также у этого списка обязательно должна быть колонка Ссылка, пусть даже невидимая.

Результат всего этого выглядит так:

Форма документа

Форма списка

Универсальное окно печати в Бухгалтерии 3.0

P.S. Если при открытии информационной базы появится такое окно, то просто выполните то, что там написано, это нормально

подробнее о подсистеме "Печать" на ИТС: https://its.1c.ru/db/bspdoc#content:219:hdoc

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

rabalegq

wise, это конечно замечательно, но я о другом спрашивал. Мне нужна печатная форма ворд как минимум

Теги: 1c 1cv8 Word 

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск