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

Печатная форма

Автор Ивашка, 03 мар 2020, 07:56

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

Ивашка

Добрый день!!Необходимо, чтобы если у меня не влезет на страницу , тогда был разрыв и переходил на новую страницу, сделал вот так, но впишет ошибка: Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (ПроверитьВывод): Ошибка получения информации о принтере, хотя принтер подключен
ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    РезультатЗапроса = СсылкаНаОбъект.ПолучитьОбъект().СформироватьЗапросЗаказНарядов();
    СтрокаТЧ = РезультатЗапроса.Выбрать();
    Колонка = 0;
    МассивОбластей = Новый Массив;
    Пока СтрокаТЧ.Следующий() Цикл
        Область = Макет.ПолучитьОбласть("Область|Колонка");
        Область.Параметры.Номер = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаТЧ.ЗаказНаряд);
        НомерЗаказа=?(ОбщегоНазначения.ЗначениеНеЗаполнено(СтрокаТЧ.ЗаказНаряд.НомерВходящегоЗаказа),"","№:"+СтрокаТЧ.ЗаказНаряд.НомерВходящегоЗаказа+" ");
        Область.Параметры.Номер = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаТЧ.ЗаказНаряд);
        Область.Параметры.Контрагент = СтрокаТЧ.ЗаказНаряд.Контрагент.НаименованиеПолное;
        Область.Параметры.ПодразделениеКонтрагента = СтрокаТЧ.ЗаказНаряд.ПодразделениеКонтрагента;
        Область.Параметры.ТипРаботы = СтрокаТЧ.ЗаказНаряд.ТипРаботы;
        Область.Параметры.Модель = СтрокаТЧ.ЗаказНаряд.Модель;
        Область.Параметры.СерийныйНомер = СтрокаТЧ.ЗаказНаряд.СерийныйНомер;
        Область.Параметры.Комплектность = СтрокаТЧ.ЗаказНаряд.Комплектность;   
        Область.Параметры.ВнешнийВид = СтрокаТЧ.ЗаказНаряд.ВнешнийВид;
        Область.Параметры.ПродавецИзделия = СтрокаТЧ.ЗаказНаряд.ПродавецИзделия;
        Область.Параметры.Дата = Формат(СтрокаТЧ.ЗаказНаряд.Дата,"ДФ=dd.MM.yy");
        Область.Параметры.ЗаявленныйДефект = СтрокаТЧ.ЗаказНаряд.ЗаявленныйДефект;
        Если Колонка = 0 Тогда
            ТабДок.Вывести(Область);
            Колонка = 1;
        Иначе
            ТабДок.Присоединить(Область);
            Колонка = 0;
        КонецЕсли;
        МассивОбластей.Очистить();
        МассивОбластей.Добавить(Область);
        Если НЕ ТабДок.ПроверитьВывод(МассивОбластей) Тогда   
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
            МассивОбластей.Очистить();
        КонецЕсли;
    КонецЦикла;
    Возврат ТабДок;


Ивашка

Может код не корректен?

ef0din

"ПроверитьВывод() - это метод табличного документа, который проверяет, умещаются ли переданные табличные документы на страницу при печати. В примечании у этого метода разработчики платформы 1С сразу написали, что при возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.

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

Ошибка решилась следующими действиями (выполнять под пользователем, у которого возникла ошибка):
1) Создал пустой документ, что бы при формировании печатной формы не был задействован метод ПроверитьВывод(). Если же этот метод в любом случае вызывается, то придется его найти в конфигурации и закомментировать, или же поместить в конструкцию Попытка-Исключение-КонецПопытки.
3) Для текущей печатной формы открыл параметры страницы и установил правильные параметры.
Ошибка возникала из-за неправильных параметров страницы, которые платформа сохранила ранее при выводе на печать печатной формы, например: платформа сохранила в параметрах страницы принтер, который в дальнейшем удалили и установили новый. Параметры страницы печатной формы хранятся в свойстве табличного документа КлючПараметровПечати. Это свойство содержит ключ значения, в котором сохраняются параметры печати таблицы. Параметры печати, настроенные и сохраненные с данным ключом, впоследствии восстанавливаются при следующем показе таблицы.

Что бы данная ошибка не возникала из-за неправильных параметров страницы, свойство КлючПараметровПечати следует устанавливать не в начале процедуры вывода на печать, а в конце, так как при установке данного свойства параметры печати тут же восстанавливаются."

мб поможет.

Ивашка

Цитата: ef0din от 05 мар 2020, 11:52мб поможет.
не помогло к сожалению, может как то по другому можно сделать, чтобы проверить, умещается ли таблица на страницу, (циклом?)

LexaK

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

Теги:

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

Рейтинг@Mail.ru

Поиск