Ошибка хитрого метода ПроверитьВывод() табличного документа

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

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

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

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

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

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

UPD 04/10/2015: Если устанавливать свойство КлючПараметровПечати в конце формирования табличного документа, то метод ПроверитьВывод будет использовать параметры печати установленные по-умолчанию, а не пользовательские. Что бы избежать данной ситуации, необходимо устанавливать свойство КлючПараметровСистемы в начале формирования табличного документа, а метод ПроверитьВывод поместить в конструкцию Попытка-Исключение-КонецПопытки.

Комментарии

  1. Спасибо большое. Нам помогло Ваше решение.

    ОтветитьУдалить
  2. мда. надо было на програмиста учитса))))))) у меня такая проблема тока я не разбираюс в програмированиии. купил печатную форму с накладная с долгом в подвале. выдает ошибку. незнаю что делать

    ОтветитьУдалить
  3. если бы знал как открыть код тогда я бы как ни как докопалса бы с методом проб и ошибок. а так этот конструктор говорят нужно купить

    ОтветитьУдалить
    Ответы
    1. Если внешняя обработка/отчет не защищена паролем, то можно внести изменения в ее код. Запускайте платформу в режиме конфигуратора и открывайте свою печатную форму.

      Удалить
  4. Ключ параметров печати задает размер страницы. Если ключ параметров печати будет установлен в конце процедуры, а перед этим будет выполняться деление на страницы при помощи ПроверитьВывод, то может внезапно оказаться, что из-за размеров полей или колонтитулов документ не умещается на странице. В таком случае часть каждого листа, сформированного программно, будет переноситься на новый лист, сформированный платформой. Так что это скорее вредный совет, чем полезный.

    ОтветитьУдалить
  5. Попытка-Исключение тоже не вариант, если возникнет Исключение, то блок не выведется в табличный документ... Выхода нет?!

    ОтветитьУдалить
  6. Как сделать чтоб метод ПроверитьВывод() корректно делил если в ящейках текста в свойстве Резмещение текста поставить "Перенос"?

    ОтветитьУдалить

Отправить комментарий