Консультация № 160362
13.02.2009, 11:07
0.00 руб.
0 2 1
Добрый день.
Господа, подскажите, малознающему, в чём моя ошибка?
В стандартной ТиС 7.7 создал новый документ и пробую подключить внешние отчёты через кнопку выбор печатной формы. Код скопировал из документа "ЗаявкаПокупателя", поключил внешний отчёт через меню "Сервис/Регистрация внешних печатных форм". Но в документе по кнопке выбора печатной формы выдется сообщение, что для документа зарегистрирована только одна печатная форма (внутренняя).
Если смотреть в отладчике ТаблицаПечФорм содержит одну запись с названием "Печатная форма"
Код следующий (синтаксических ошибок нет):

Процедура ПоКнопкеВыборПечатнойФормы()
ВыбНомер = глВыборПечатнойФормы("Документ." + Вид(), ТаблицаПечФорм);
Если ВыбНомер > 0 Тогда
НомерТекущейФормы = ВыбНомер;
Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
ПоКнопкеПечать();
КонецЕсли;
КонецПроцедуры // ПоКнопкеВыборПечатнойФормы()

НомерТекущейФормы = 0;
ТаблицаПечФорм = СоздатьОбъект("ТаблицаЗначений");
ТаблицаПечФорм.НоваяКолонка("Название","Строка",,,,30);
ТаблицаПечФорм.НоваяКолонка("Файл","Строка",,,"Файл",10);
ТаблицаПечФорм.НоваяКолонка("Кнопка","Строка",,,,10);
ТаблицаПечФорм.НоваяКолонка("ФайлОписания","Строка");

// добавим информацию о встроенной форме
ТаблицаПечФорм.НоваяСтрока();
ТаблицаПечФорм.Название = "Печатная форма";
ТаблицаПечФорм.Кнопка = "Печать";


Обсуждение

Неизвестный
13.02.2009, 12:37
общий
это ответ
Здравствуйте, Igor Maevsky!

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

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

Кроме того, раз вы добавляете информацию о встроенной форме, не забудьте епренести и процедуру встроенной формы. Т.е. в процедуре ПоКнопкеПечать есть вызов встроенной формы:
....
Если номерТекущейФормы=1 тогда
Печать(СразуНаПринтер, КолЭкс);
...
Либо вы создаете процедуру Печать, либо, если не нужна встроенная печатная форма, удаляете все что идет в вашем коде после
// добавим информацию о встроенной форме

Неизвестный
13.02.2009, 14:02
общий
Спасибо большое.
Так оно и есть из процедуры ПриОткрытии взялк кусок кода и всё заработало.
Форма ответа