Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 22:40

Печатная форма, ошибка УправлениеПечатью

Автор Dmitrii_VVV, 03 авг 2023, 11:22

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

Dmitrii_VVV

Всем доброго!

Пытаюсь создать первую печатную форму
Конф-я учебная. Задача: через файл - открыть, открывать форму в которой будет поле для выбора документа и кнопка печать. Документ - расходная накладная



Исполнение в модуле объекта:

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

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

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

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

Процедура ПечатьОбъекта(ТабличныйДокумент, Ссылка)   
   
   
   ТабличныйДокумент = Новый ТабличныйДокумент;
   МакетОбработки = ПолучитьМакет("ПечатнаяФорма");
   
   //Заполняем шапку
   ОбластьШапка = ПечатнаяФорма.ПолучитьОбласть("Шапка");
   ОбластьШапка.Параметры.Номер = Ссылка.Номер;
   ОбластьШапка.Параметры.Дата = Формат(Ссылка.Дата, "ДЛФ=DD");
   ТабличныйДокумент.Вывести(ОбластьШапки);
   
   //Заполняем ТЧ(строки)
   Макет = ВнешниеОбработки.ПечатнаяФорма.ПолучитьМакет("ПечатнаяФорма");
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
      |   ПРЕДСТАВЛЕНИЕ(РасходнаяНакладнаяСписокНоменклатуры.Номенклатура) КАК НоменклатураПредставление,
      |   РасходнаяНакладнаяСписокНоменклатуры.Количество КАК Количество,
      |   РасходнаяНакладнаяСписокНоменклатуры.Цена КАК Цена,
      |   РасходнаяНакладнаяСписокНоменклатуры.Сумма КАК Сумма
      |ИЗ
      |   Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры";
   
   РезультатЗапроса = Запрос.Выполнить(); 
   
   //Заполняем подвал
   ОбластьПодвал = ПечатнаяФорма.ПолучитьОбласть("Подвал");
   ОбластьПодвал.Параметры.СуммаИтого = Ссылка.Товар.Итог("Сумма");
   
   ТабличныйДокумент.Вывести(ОбластьПодвал);

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



Ошибка в модуле объекта:

{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(45,2)}: Переменная не определена (УправлениеПечатью)
   <<?>>УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПечатнаяФорма", (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(58,17)}: Переменная не определена (ПечатнаяФорма)
   ОбластьШапка = <<?>>ПечатнаяФорма.ПолучитьОбласть("Шапка"); (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(79,18)}: Переменная не определена (ПечатнаяФорма)
   ОбластьПодвал = <<?>>ПечатнаяФорма.ПолучитьОбласть("Подвал"); (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(61,28)}: Переменная не определена (ОбластьШапки)
   ТабличныйДокумент.Вывести(<<?>>ОбластьШапки);  (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(46,30)}: Процедура или функция с указанным именем не определена (СформироватьПечатнуюФорму)
   "Печатная форма (внешний)", <<?>>СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати)); (Проверка: Сервер)


Ошибка при попытке открыть файл epf. в конф-и:

скрин




LexaK

Dmitrii_VVV, скорее всего, в вашей учебной базе, есть не все модули БСП
вот конкретно этого нет: УправлениеПечатью

да и в постановке задачи у вас написано создать внешнюю ПФ а не встроенную,
переделайте на использование без БСП.

просто форма, поле Документа и кнопка Печать. (именно как в задании)
если помогло нажмите: Спасибо!

fruitella

Вроде ок, перепроверил. Но у тебя косяк с названиями, пробни скобки удалить тут Печатная форма (внешний)

fruitella

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


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

функция СформироватьПечатнуюФорму(Объект, ОбъектыПечати)
ТабДок = Новый ТабличныйДокумент;
//Тут заполняй свой макет, который ты создал
Возврат ТабДок;
КонецФункции


Видимо косяк с названием и еще ты пытаешься обратиться к процедуре или функции СформироватьПечатнуюФорму, которую ты не создал.

Dmitrii_VVV

fruitella, Спасибо, но опять ругается


{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(136,2)}: Переменная не определена (УправлениеПечатью)
   <<?>>УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(150,17)}: Переменная не определена (ПечатнаяФорма)
   ОбластьШапка = <<?>>ПечатнаяФорма.ПолучитьОбласть("Шапка"); (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(171,18)}: Переменная не определена (ПечатнаяФорма)
   ОбластьПодвал = <<?>>ПечатнаяФорма.ПолучитьОбласть("Подвал"); (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(151,33)}: Переменная не определена (Ссылка)
   ОбластьШапка.Параметры.Номер = <<?>>Ссылка.Номер; (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(152,39)}: Переменная не определена (Ссылка)
   ОбластьШапка.Параметры.Дата = Формат(<<?>>Ссылка.Дата, "ДЛФ=DD"); (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(172,39)}: Переменная не определена (Ссылка)
   ОбластьПодвал.Параметры.СуммаИтого = <<?>>Ссылка.Товар.Итог("Сумма");  (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(153,2)}: Переменная не определена (ТабличныйДокумент)
   <<?>>ТабличныйДокумент.Вывести(ОбластьШапки);  (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(174,2)}: Переменная не определена (ТабличныйДокумент)
   <<?>>ТабличныйДокумент.Вывести(ОбластьПодвал);  (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФорма.МодульОбъекта(153,28)}: Переменная не определена (ОбластьШапки)
   ТабличныйДокумент.Вывести(<<?>>ОбластьШапки);  (Проверка: Сервер)

Dmitrii_VVV

Цитата: LexaK от 03 авг 2023, 11:43Dmitrii_VVV,

переделайте на использование без БСП.



Подскажите, как это реализовать ?

LexaK

Dmitrii_VVV, присоедините сюда свою обработку, посмотрим
и за одно, свою учебную базу выгрузите в файл ДТ и присоедините
если помогло нажмите: Спасибо!

Dmitrii_VVV


LexaK

Dmitrii_VVV, в общем, все уже почти было сделано, в форме изменил вызов процедуры печати, да еще чего по мелочи
немного кривая таблица получается, сами поправите
если помогло нажмите: Спасибо!

Dmitrii_VVV

LexaK, Премного благодарен за труд! Иду смотреть!

Теги:

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

Рейтинг@Mail.ru

Поиск