Печатая форма документа в управляемой форме, Метод объекта не обнаружен (Печать)

1. FKLDOZ 7 16.08.17 10:21 Сейчас в теме
Коллеги, прошу помощи!
Переписываю печатные формы с 8.2 на 8.3 и идет ошибка по печатной форме к док. "Реализация товаров и услуг" при печати документа:

{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(412)}: Метод объекта не обнаружен (Печать)
ФормаОбработки.Печать(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения);


Бухгалтерия предприятия, редакция 3.0 (3.0.49.21)

Вот по сути и вся печать в модуле объекта:


Функция Печать() Экспорт
	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.ИмяПараметровПечати = "АктПриемаПередачи";
	Макет = ПолучитьМакет("Макет");
	Шапка = Макет.ПолучитьОбласть("Шапка");
	Шапка.Параметры.Продавец = СсылкаНаОбъект.Организация.НаименованиеПолное;
	Шапка.Параметры.ИННПродавца = СсылкаНаОбъект.Организация.ИНН;
	Шапка.Параметры.Покупатель = СсылкаНаОбъект.Контрагент.НаименованиеПолное;
	Шапка.Параметры.ИННПокупателя = СсылкаНаОбъект.Контрагент.ИНН;
	ТабДокумент.Вывести(Шапка);
	ГенДир = ОбщегоНазначения.ОтветственныеЛица(СсылкаНаОбъект.Организация, СсылкаНаОбъект.Дата);
	ОсновнойТекст = МАкет.ПолучитьОбласть("ОсновнойТекст");
	ОсновнойТекст.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=Д");
	ОсновнойТекст.Параметры.Номер = ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект);
	ОсновнойТекст.Параметры.ДатаДоговора = Формат(СсылкаНаОбъект.ДоговорКонтрагента.Дата, "ДЛФ=Д");
	ОсновнойТекст.Параметры.НомерДоговора = СсылкаНаОбъект.ДоговорКонтрагента.Наименование;
	//ОсновнойТекст.Параметры.ГенДир = ГенДир.Руководитель;
	ОсновнойТекст.Параметры.НачалоПериода = Формат(НачалоМесяца(СсылкаНаОбъект.Дата), "ДЛФ=Д");
	ОсновнойТекст.Параметры.КонецПериода = Формат(КонецМесяца(СсылкаНаОбъект.Дата), "ДЛФ=Д");
	ТабДокумент.Вывести(ОсновнойТекст);
	ШапкаСтрока = Макет.ПолучитьОбласть("ШапкаСтрока");
	ТабДокумент.Вывести(ШапкаСтрока);	

	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
	Запрос.Текст = "ВЫБРАТЬ
	               |	РеализацияТоваровУслугТовары.Номенклатура,
	               |	РеализацияТоваровУслугТовары.Количество,
	               |	РеализацияТоваровУслугТовары.СуммаНДС,
	               |	ВЫБОР
	               |		КОГДА РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
	               |			ТОГДА РеализацияТоваровУслугТовары.Сумма - ЕСТЬNULL(РеализацияТоваровУслугТовары.СуммаНДС, 0)
	               |		ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
	               |	КОНЕЦ КАК Сумма,
	               |	РеализацияТоваровУслугТовары.Цена,
	               |	ВЫБОР
	               |		КОГДА РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
	               |			ТОГДА РеализацияТоваровУслугТовары.Сумма
	               |		ИНАЧЕ РеализацияТоваровУслугТовары.Сумма + РеализацияТоваровУслугТовары.СуммаНДС
	               |	КОНЕЦ КАК СуммаСНДС
	               |ИЗ
	               |	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
	               |ГДЕ
	               |	РеализацияТоваровУслугТовары.Ссылка = &Ссылка";
	РЕзультат = Запрос.Выполнить().Выбрать();
	ИтогоСумма = 0;
	ИтогоСуммаНДС = 0;
	ИтогоСуммаСНДС = 0;
	НомерСтроки = 0;
	Пока Результат.Следующий() Цикл
		Строка = Макет.ПолучитьОбласть("Строка");
		НомерСтроки = НомерСтроки + 1;
		Строка.Параметры.Заполнить(Результат);
		Строка.Параметры.НомерСтроки = НомерСтроки;
		Строка.Параметры.Номенклатура = Результат.Номенклатура.Наименование +" за " + УказатьМесяц(Месяц(СсылкаНаОбъект.Дата))+ " " +Формат(Год(СсылкаНаОбъект.Дата), "ЧГ=0")+ "г.";
		ИтогоСумма = ИтогоСумма + Результат.Сумма;
		ИтогоСуммаНДС = ИтогоСуммаНДС + Результат.СуммаНДС;
		ИтогоСуммаСНДС = ИтогоСуммаСНДС + Результат.СуммаСНДС;
		
		ТабДокумент.Вывести(Строка);
				
	КонецЦикла;
	ИтогоСтрока = МАкет.ПолучитьОбласть("ИтогоСтрока");
	ИтогоСтрока.Параметры.ИтогоСумма = ИтогоСумма;
	ИтогоСтрока.Параметры.ИтогоСуммаНДС = ИтогоСуммаНДС;
	ИтогоСтрока.Параметры.ИтогоСуммаСНДС = ИтогоСуммаСНДС;
	ТабДокумент.Вывести(ИтогоСтрока);

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

Функция УказатьМесяц(НомерМесяца)
	Если НомерМесяца = 1 Тогда
		Возврат "январь";
	ИначеЕсли НомерМесяца = 2 Тогда
		Возврат "февраль";
	ИначеЕсли НомерМесяца = 3 Тогда
		Возврат "март"
	ИначеЕсли НомерМесяца = 4 Тогда 
		Возврат "апрель";
	ИначеЕсли НомерМесяца = 5 Тогда
		Возврат "май";
	ИначеЕсли НомерМесяца = 6 Тогда
		Возврат "июнь";
	ИначеЕсли НомерМЕсяца = 7 Тогда
		Возврат "июль";
	ИначеЕсли НомерМесяца = 8 Тогда
		Возврат "август";
	ИначеЕсли НомерМесяца = 9 Тогда
		Возврат "сентябрь";
	ИначеЕсли НомерМесяца = 10 Тогда
		Возврат "октябрь";
	ИначеЕсли НомерМесяца = 11 Тогда
		Возврат "ноябрь";
	ИначеЕсли НомерМесяца = 12 Тогда
		Возврат "декабрь";
	КонецЕсли;
КонецФункции



Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;

МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");

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

//команды
ТаблицаКоманд = Новый ТаблицаЗначений;
ТаблицаКоманд.Колонки.Добавить("Представление"); //как будет выглядеть описание печ.формы для пользователя
ТаблицаКоманд.Колонки.Добавить("Идентификатор"); //имя нашего макета
ТаблицаКоманд.Колонки.Добавить("Использование"); //ВызовСерверногоМетода
ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение"); //Истина
ТаблицаКоманд.Колонки.Добавить("Модификатор"); //ПечатьМХL

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = "Акт приема-передачи КОМ";
НоваяКоманда.Идентификатор = "Макет"; //Внешняя печатная форма
НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; //здесь можно прописать использование как серверного так и клиентского, отличие в том, что серверный метод будет обращаться к экспортной процедуре из модуля объекта, клиентский - к экспортной процедуре из модуля формы объекта
НоваяКоманда.ПоказыватьОповещение = Истина;
НоваяКоманда.Модификатор = "ПечатьMXL";

ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;

КонецФункции
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. Alexey_ 27 16.08.17 10:32 Сейчас в теме
(1)
Функция УказатьМесяц(НомерМесяца)
что за дичь?
поменяй
УказатьМесяц(Месяц(СсылкаНаОбъект.Дата))

на
Формат(СсылкаНаОбъект.Дата, "ДФ=MMMM")
10. FKLDOZ 7 16.08.17 10:35 Сейчас в теме
(8)Спасибо, исправлю. Печатная форма древняя, даже не до дат.
2. Артано 762 16.08.17 10:24 Сейчас в теме
Вероятно, переменная "ФормаОбработки" откуда вызывается метод "Печать" не была инициализирована. Отладчик в помощь
3. FKLDOZ 7 16.08.17 10:28 Сейчас в теме
(2) Где ее инициализировать? Попробую с отладчиком.
4. user633533_encantado 11 16.08.17 10:29 Сейчас в теме
Код описания внешней обработки в студию.
5. FKLDOZ 7 16.08.17 10:30 Сейчас в теме
Выше есть функция:

Функция СведенияОВнешнейОбработке() Экспорт
7. user633533_encantado 11 16.08.17 10:32 Сейчас в теме
(5) "ВызовКлиентскогоМетода" означате , что у обработки должна быть форма с процедурой печать с определенными параметрами. Она есть ?
9. FKLDOZ 7 16.08.17 10:34 Сейчас в теме
11. FKLDOZ 7 16.08.17 10:39 Сейчас в теме
(7) Александр, подскажите, как правильно прописать печатную форму?

У меня печатная форма стандартно должна запускаться из 8.3 док "Реализация ТиУ". В 8.3 пока "плаваю".
12. user633533_encantado 11 16.08.17 10:40 Сейчас в теме
(11) Вызов серверного метода.

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

Вызов клиентского метода нужен только если нужен для открытия форм дополнительных обработок. Не ваш случай.
13. AlexeyPapanov 460 16.08.17 10:41 Сейчас в теме
(11) ну вот например статья, если можно так назвать: https://infostart.ru/public/431523/
я думаю принцип понять сможете.
14. user633533_encantado 11 16.08.17 10:43 Сейчас в теме
(13) Она устарела, весь тот код излишен. Нужно знать и уметь пользоваться БСП.
15. FKLDOZ 7 16.08.17 10:54 Сейчас в теме
(13)Спасибо, конечно почитаю.

Но у меня не получается , ошибка та же:
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(412)}: Метод объекта не обнаружен (Печать)
ФормаОбработки.Печать(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения);

Что не так?
6. FKLDOZ 7 16.08.17 10:31 Сейчас в теме
Вообще, выше приведен весь код печатной формы из модуля объекта.
16. user633533_encantado 11 16.08.17 11:20 Сейчас в теме
ФормаОбработки.Печать( - вызов клиентского метода
17. FKLDOZ 7 16.08.17 11:30 Сейчас в теме
(16)Александр, что-то не догоняю, убираю ВызовКлиентскогоМетода, ошибка:

{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(3326)}: Получение элемента по индексу для значения не определено
КомандаОписание.ВариантЗапуска = Перечисления.СпособыВызоваДополнительныхОбработок[КомандаОписание.Использование];
18. user633533_encantado 11 16.08.17 11:32 Сейчас в теме
(17) не убрать, а поменять.
19. FKLDOZ 7 16.08.17 11:54 Сейчас в теме
(18)Александр, что прошу прощения, не сердитесь, что на что поменять?
22. FKLDOZ 7 16.08.17 15:22 Сейчас в теме
(19)Александр, спасибо, уже лучше!
Но ругается на:


{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(247)}: В обработчике печати не был сформирован табличный документ для: Макет
ВызватьИсключение(ТекстСообщенияОбОшибке);

Почему ругается?
23. ipoloskov 162 16.08.17 15:41 Сейчас в теме
(22) Посмотрите, как должно быть сделано. У вас неправильно.
&НаСервере
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.1.4.32");
	
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
	ПараметрыРегистрации.Версия = "1.0.0.1";
	ПараметрыРегистрации.БезопасныйРежим = ИСТИНА;
	ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг");
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = "Товарная накладная (ТОРГ-12)";
	НоваяКоманда.Идентификатор = "ТоварнаяНакладная_ТОРГ12";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	НоваяКоманда.Модификатор = "ПечатьMXL";
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = "Товарная накладная без услуг (ТОРГ-12)";
	НоваяКоманда.Идентификатор = ИмяМакетаУсловное_БезУслуг();
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	НоваяКоманда.Модификатор = "ПечатьMXL";
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = "Товарная накладная с номерами ГТД (ТОРГ-12)";
	НоваяКоманда.Идентификатор = ИмяМакетаУсловное_СНомерамиГТД();
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	НоваяКоманда.Модификатор = "ПечатьMXL";
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

&НаСервере
Функция ИмяМакетаУсловное_БезУслуг()
	
	возврат "ТоварнаяНакладная_ТОРГ12_Без_Услуг";
	
КонецФункции

&НаСервере
Функция ИмяМакетаУсловное_СНомерамиГТД()
	
	возврат "ТоварнаяНакладная_ТОРГ12_С_Номерами_ГТД";
	
КонецФункции

&НаСервере
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	ПараметрыВывода.ДоступнаПечатьПоКомплектно = Ложь;
	
	ИмяМакетаУсловное = "ТоварнаяНакладная_ТОРГ12";
	ЭтоВнешняяПечатнаяФорма = Истина;
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ИмяМакетаУсловное) Тогда
		ПечатьУсловногоМакета(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода, ИмяМакетаУсловное, ЭтоВнешняяПечатнаяФорма)
	КонецЕсли;

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

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

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

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

Функция СформироватьПечатнуюФормуТОРГ12(МассивОбъектов, ОбъектыПечати, ПараметрыПечати) Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.ПолеСлева = 5;
	ТабличныйДокумент.ПолеСправа = 5;
	ТабличныйДокумент.РазмерКолонтитулаСверху = 0;
	ТабличныйДокумент.РазмерКолонтитулаСнизу = 0;
	ТабличныйДокумент.АвтоМасштаб = Истина;
	ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	
	ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТОРГ12_2";
	
	НомерТипаДокумента = 0;
	
		
	ДанныеДляПечати = ПолучитьДанныеДляПечатнойФормыТОРГ12(ПараметрыПечати, МассивОбъектов);
		
	ЗаполнитьТабличныйДокументТОРГ12(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыПечати, Неопределено);//КомплектыПечати);
		
	Возврат ТабличныйДокумент;
	
КонецФункции



Показать
24. FKLDOZ 7 16.08.17 15:46 Сейчас в теме
(23)Спасибо огромное, взяла, разбираюсь.
20. user633533_encantado 11 16.08.17 14:20 Сейчас в теме
НоваяКоманда.Использование = "ВызовСерверногоМетода";
21. FKLDOZ 7 16.08.17 14:32 Сейчас в теме
(20) Спасибо огромное, сейчас исправлю!
Оставьте свое сообщение

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