Печатные формы 1С КА2 Нужна помощь

1. unreces 31.05.23 14:23 Сейчас в теме
Всем привет. Учусь работать с печатными формами в 1С КА2.

Создал внешнюю обработку, все процедуры и функции прописал, вроде печатает в режиме предприятия, но при печати из документа - данные не выводятся в области параметров макета.

Собственно прошу помочь решить мою проблему.

Код модуля объекта печатной формы:

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

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

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

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление; 
	НоваяКоманда.Идентификатор = Идентификатор;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;

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

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

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

КонецПроцедуры // Печать()

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

	ОбластьПодвал.Параметры.ИтогоСумма      = ИтогоСумма;
	
	
	ТабДок.Вывести(ОбластьПодвал);
	
	Возврат ТабДок;
КонецФункции     

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


КонецПроцедуры
Показать



Прошу не кидаться камнями, я не специалист
По теме из базы знаний
Найденные решения
6. lich666 01.06.23 08:40 Сейчас в теме
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

КонецПроцедуры // Печать()

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

    ОбластьПодвал.Параметры.ИтогоСумма      = ИтогоСумма;
    
    
    ТабДок.Вывести(ОбластьПодвал);
    
    Возврат ТабДок;
КонецФункции     

Показать

Держите.
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. dka80 20 31.05.23 16:19 Сейчас в теме
СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати)); заменить на СформироватьПечатнуюФорму(МассивОбъектов[0])

Функция СформироватьПечатнуюФорму(Флаг = Истина, Флаг2= Ложь) Экспорт  заменить на Функция СформироватьПечатнуюФорму(ТребованиеНакладная) Экспорт

Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект); заменить на Запрос.УстановитьПараметр("Ссылка",ТребованиеНакладная);
3. unreces 31.05.23 17:07 Сейчас в теме
(2) Благодарю! В таблицу данные вывелись, но шапка всё так же пустая
4. unreces 31.05.23 17:10 Сейчас в теме
(2) И сумма документа выводится не общая, а по последнему товару.
Прикрепленные файлы:
5. Bukaska 140 31.05.23 20:39 Сейчас в теме
(4)
 ИтогоСумма      = 0;
    ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры,Выборка);
    
    ИтогоСумма = ИтогоСумма + Выборка.Сумма;

Вы переменную сами с собой складываете? У вас одинаковое имя переменной до знака = и после. Плюс вы уже присвоили данной переменной значение =0
6. lich666 01.06.23 08:40 Сейчас в теме
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

КонецПроцедуры // Печать()

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

    ОбластьПодвал.Параметры.ИтогоСумма      = ИтогоСумма;
    
    
    ТабДок.Вывести(ОбластьПодвал);
    
    Возврат ТабДок;
КонецФункции     

Показать

Держите.
7. unreces 01.06.23 09:17 Сейчас в теме
8. unreces 01.06.23 09:18 Сейчас в теме
(6) А как вывести в заголовок не номер договора, а порядковый номер документа?

Например №25 от ******
9. lich666 01.06.23 10:17 Сейчас в теме
В представленном примере в параметр ОбластьШапки.Параметры.ТекстЗаголовка передается строка: "Требование-Накладная № " + СсылкаНаОбъект.Номер(Номер документа)+СсылкаНаОбъект.Дата(ДатаДокумента).
Если в печатной форме выводится что-то другое смотрите макет печатной формы.
10. unreces 01.06.23 10:37 Сейчас в теме
(9)

В макете указан параметр "ТекстЗаголовка"
11. unreces 01.06.23 10:38 Сейчас в теме
(10) Мне нужен номер на печать
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день