Кнопка печати 8.3

1. user916115 23.08.18 09:59 Сейчас в теме
8.3 управляемое приложение БП
Пытаюсь просто добавить кнопку.
Пишу в модуле менеджера!
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

	// <Описание процедуры>
	//
	// Параметры:
	//  <Параметр1>  - <Тип.Вид> - <описание параметра>
	//                 <продолжение описания параметра>
	//  <Параметр2>  - <Тип.Вид> - <описание параметра>
	//                 <продолжение описания параметра>
	//
	Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	//Накладная
	КомандыПечати = КомандыПечати.Добавить();
	КомандыПечати.Идентификатор = "Накладная";
	КомандыПечати.Представление = НСтр("ru = 'Накладная'");
	КомандыПечати.Обработчик	= "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";	
	
	КонецПроцедуры // ДобавитьКомандыПечати(КомандыПечати)()
	

	
	
#КонецЕсли
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 302 23.08.18 10:03 Сейчас в теме
(1) и.... в чем вопрос ?
Документ типовой, нетиповой ?
3. user916115 23.08.18 10:08 Сейчас в теме
(2) вопрос в том что не фига не работает:(
этот код я взяла с типового документа, пишу в НЕ типовом, не понимаю эту строчку
КомандыПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
,
 "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати"
это ссылка на процедуру в общем модуле..а как нужно у меня? не понимаю...
5. Boneman 302 23.08.18 10:23 Сейчас в теме
(3) И у тебя также.
Только в менеджере там 2 процедуры надо делать
пример из перемещения товаров
мне кажется все прозрачно и понятно. По идентификатору определяется какая функция заполнения ТАБдока вызывается
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ПЕЧАТИ

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

	// Перемещение товаров
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "Накладная";
	КомандаПечати.Представление = НСтр("ru = 'Перемещение товаров'");
	КомандаПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
	
	// Накладная на внутреннее перемещение (ТОРГ-13)
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "ТОРГ13";
	КомандаПечати.Представление = НСтр("ru = 'Накладная на внутреннее перемещение (ТОРГ-13)'");
	КомандаПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
	


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

// Функция формирует табличный документ с печатной формой накладной,
// разработанной методистами
//
// Возвращаемое значение:
//  Табличный документ - печатная форма накладной
//
Функция ПечатьПеремещениеТоваров(МассивОбъектов, ОбъектыПечати)


	Возврат ТабличныйДокумент;

КонецФункции // ПечатьПеремещениеТоваров()

// Формирует табличный документ по унифицированной форме ТОРГ-13
// 
// Возвращаемое значение
//  Табличный документ - унифицированная форма ТОРГ-13
//
Функция ПечатьТОРГ13(МассивОбъектов, ОбъектыПечати)
	

	
	Возврат ТабличныйДокумент;

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

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

	// Проверяем, нужно ли для макета Накладная формировать табличный документ.
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Накладная") Тогда
		// Формируем табличный документ и добавляем его в коллекцию печатных форм.
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Накладная", "Перемещение товаров", 
			ПечатьПеремещениеТоваров(МассивОбъектов, ОбъектыПечати), , "Документ.ПеремещениеТоваров.ПФ_MXL_Накладная");
	КонецЕсли;
	
	// Проверяем, нужно ли для макета ТОРГ13 формировать табличный документ.
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ13") Тогда
		// Формируем табличный документ и добавляем его в коллекцию печатных форм.
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТОРГ13", "ТОРГ-13 (Накладная на внутреннее перемещение)", 
			ПечатьТОРГ13(МассивОбъектов, ОбъектыПечати), , "ОбщийМакет.ПФ_MXL_ТОРГ13");
	КонецЕсли;
	
	ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);	
		
КонецПроцедуры
Показать
7. user916115 23.08.18 10:31 Сейчас в теме
(5) это, извиняюсь, всё нужно сделать для того чтобы добавить одну кнопку программно ????????
9. Boneman 302 23.08.18 10:36 Сейчас в теме
(7) да :) Просто документы обычно когда новые запиливают, сразу делают по стандартам, чтобы потом проблем не было.
Там ведь правила есть и структуру подчиненности смотреть, и движения документов, и команды печати, и доп реквизиты, и подключаемые обработки заполнения табличных частей.
Все должно быть изначально грамотно сделано, чтобы потом просто пользовать все стандартные фишки подсистем.
Serg243; user1644200; user916115; config; +4 Ответить
4. Boneman 302 23.08.18 10:13 Сейчас в теме
в нетиповом надо еще документ сделать в соответствии с подсистемами.
Там в зависимости от подсистем, надо сначала в модуле формы причесать в соответствии с текущими подсистемами. А именно, там надо процедуры подключаемых команд скопипастить,
В процедурах при открытии и при создании на сервере вызвать обработчики из общих модулей.
И еще на форме элементы формы надо повторить, и обозвать также как в типовом документе. Там по имени ищется - например в комендной панели "ПодменюПечать".

А уж потом в менеджере добавлять
user916115; azali; +2 Ответить
8. user916115 23.08.18 10:36 Сейчас в теме
(4) вот это совсем не поняла:( какой еще документ нужно делать?
10. Boneman 302 23.08.18 10:37 Сейчас в теме
(8) документ нетиповой ? К которому кнопку печати прикручиваешь ?
Значит его создали с нуля ?
11. user916115 23.08.18 10:44 Сейчас в теме
12. config 204 24.08.18 16:17 Сейчас в теме
(11)
) да!

У меня кнопка печати в нетиповом документе выводится так:

В модуле менеджера прописать ЭТО:

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

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

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

// Сформировать печатные формы объектов
//
// ВХОДЯЩИЕ:
//   ИменаМакетов    - Строка    - Имена макетов, перечисленные через запятую
//   МассивОбъектов  - Массив    - Массив ссылок на объекты которые нужно распечатать
//   ПараметрыПечати - Структура - Структура дополнительных параметров печати
//
// ИСХОДЯЩИЕ:
//   КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
//   ПараметрыВывода       - Структура        - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

// Заполняет список команд отправки по электронной почте.
// 
// Параметры:
//   КомандыОтправки - ТаблицаЗначений - состав полей см. в функции ОтправкаПочтовыхСообщений.КомандыОтправки
//
Процедура ДобавитьКомандыОтправки(КомандыОтправки) Экспорт
	
	// Счет на оплату
	КомандаОтправки = КомандыОтправки.Добавить();
	КомандаОтправки.Идентификатор               = "ЗаявкаДоговорКлиентаСПеч";
	КомандаОтправки.Представление               = НСтр("ru='Заявка-дог. клиента (с печатью и подписью)'");
	КомандаОтправки.Порядок                     = 10;

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

Показать


В модуле Формы прописать ЭТО:

// Хранит дерево макетов печатных форм
Перем мДеревоМакетов;

// Хранит элемент управления подменю печати
Перем мПодменюПечати;

// Хранит элемент управления кнопку печать по умолчанию
Перем мПечатьПоУмолчанию;

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
		// СтандартныеПодсистемы.Печать
		//Размещает команды печати на форме
	УправлениеПечатью.ПриСозданииНаСервере(ЭтотОбъект, );
	// Конец СтандартныеПодсистемы.Печать
	
	// ДополнительныеОтчетыИОбработки
	ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец ДополнительныеОтчетыИОбработки

	// СтандартныеПодсистемы.ВерсионированиеОбъектов
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

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

// СтандартныеПодсистемы.Печать
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
	
	УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект);
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.Печать
Показать





(7)
это, извиняюсь, всё нужно сделать для того чтобы добавить одну кнопку программно ????????

Да.


(8)
вот это совсем не поняла:( какой еще документ нужно делать?

ВАШ документ надо делать по шаблону, который используется в типовой конфигурации.
6. NatalkaBal 29 23.08.18 10:26 Сейчас в теме
В нетиповом документе добавляла в модуль формы
#Область ПодключениеСтандартныхПодсистемДополнительныеОтчетыИОбработк­иПечать
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
#КонецОбласти

Показать

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

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


в общий модуль УправлениеПечатьюПереопределяемый в процедуру Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт созданный документ

Да, и еще, как отмечено выше на форму документа вывести Группу кнопок ГруппаКнопкиКоманднойПанели и подменю ГруппаПечать. Это лучше посмотреть у типовых докуметах

SQV0; Dmitri93; config; +3 Ответить
13. config 204 27.08.18 14:49 Сейчас в теме
Выше код приведён для устаревшего БСП.

В БСП 2.4.3 + нужны другие процедуры в модуле формы документа и в модуле формы списка. А самое главное теперь нужно вносить изменения в Общий модуль "УправлениеПечатьюПереопределяемый"

Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
               ....
               СписокОбъектов.Добавить(Документы.ФормированиеЗаписейРаздела7ДекларацииНДС);
               //Добавим свои документы
               СписокОбъектов.Добавить(Документы.Документ1);
               СписокОбъектов.Добавить(Документы.Документ2);
               ....
КонецПроцедуры 


В модуле формы документа:

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

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте 
Процедура Подключаемый_ВыполнитьКоманду(Команда)
          ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры 

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
          ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры 

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
          ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры 
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
Показать


В модуле формы списка:

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
         УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Элементы.Список)
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте 
Процедура Подключаемый_ВыполнитьКоманду(Команда)
         Если Команда.Имя = "ПодменюПечатьОбычное_Реестр" Тогда 
             НастройкиДинамическогоСписка();
         КонецЕсли;
         ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
          ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
          ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
Показать


В форме списка может всплывать ошибка "Команда не может быть выполнена для указанного объекта". Вам надо в форму списка вывести реквизит "Ссылка" и сделать его видимым, тогда ошибка пропадёт.

В модуле менеджера нужно вносить такие же изменения, как в предыдущем сообщении
NFC; _7445_; AnKonAlm; dante; mi13; mlv84; wms; asvizts; Tommy82; +9 Ответить
15. Пользователь 1С 3 18.11.19 09:45 Сейчас в теме
(13) добавлю на счет реквизита "Ссылка". Можно сделать его невидимым, но установить свойство Использовать всегда=Истина в настройке реквизитов формы.
dante; mlv84; config; +3 Ответить
16. user1530636 15.12.21 11:52 Сейчас в теме
(13)
"Команда не может быть выполнена для указанного объекта"


на всякий случай напишу, сам столкнулся и ссылку очень не хотелось добавлять. у реквизита списка есть св-во использовать всегда.
Прикрепленные файлы:
14. wms 8 12.11.19 11:58 Сейчас в теме
Спасибо! Выручили!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот