Не удалось сформировать внешнюю печатную форму ошибка при вызове метода контекста проверитьвывод

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

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

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

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

1. Помещение ПроверитьВывод в попытку

2) Сформировал печатную форму.

2. Пустая печатная форма (кол-во товаров = 0)

3) Для текущей печатной формы открыл параметры страницы и установил правильные параметры.

3. Параметры страницы

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

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

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

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

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

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

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

мб поможет.

никмейн

57 / 39 / 19

Регистрация: 24.10.2016

Сообщений: 974

1

1C 8.x

Создание внешней печатной формы

23.02.2020, 13:41. Показов 1135. Ответов 6

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте!!! Подскажите пожалуйста: Сделал внешнюю печатную форму, указал реквизит Ссылка, тип его «ДокументСсылкаПриходнаяНакладная». Имеется макет, я вывожу в ней данные только одного документа, как изменить код, чтобы вывести данные из нескольких документов находящиеся в том же списке документа? Это надо Команду создать? у меня если что версия 8.1

Кликните здесь для просмотра всего текста

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Функция Печать() Экспорт
   
        ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    Обл = Макет.ПолучитьОбласть("Область|Колонка");
    Обл.Параметры.Контрагент = Ссылка.Контрагент.ПолноеНаименование;
    Обл.Параметры.Дата = Формат(Ссылка.Дата,"ДФ=dd.MM.yy"); 
    // Параметры из табл.части Товары
    Для Каждого Строка Из Ссылка.Товары Цикл              
        Обл.Параметры.Номенклатура = Строка.Номенклатура;
        Обл.Параметры.Количество = Строка.Количество;
        Обл.Параметры.Цена = Строка.Цена;
        Обл.Параметры.Сумма = Строка.Сумма;
        ТабДок.Вывести(Обл);
        ТабДок.Присоединить(Обл);
    КонецЦикла; 
    Возврат ТабДок;
 
Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
    ТабДок = Печать();
    ТабДок.Показать();
КонецПроцедуры
КонецФункции

Миниатюры

Создание внешней печатной формы
 



0



57 / 39 / 19

Регистрация: 24.10.2016

Сообщений: 974

24.02.2020, 15:00

 [ТС]

2

а как команду объекта связать с внешней обработкой если это возможно?



0



5 / 4 / 1

Регистрация: 21.10.2019

Сообщений: 194

27.02.2020, 10:30

3

Цитата
Сообщение от никмейн
Посмотреть сообщение

а как команду объекта связать с внешней обработкой

Если команда на форме внешней обработки, то конечно можно, нет никакой разницы внешняя это обработка или обработка в конфигурации. Все внешние обработки находятся в меню сервис-дополнительные отчеты и обработки. А по факту в Справочнике внешних обработок и программа находит их легко.



0



никмейн

57 / 39 / 19

Регистрация: 24.10.2016

Сообщений: 974

28.02.2020, 09:18

 [ТС]

4

Необходимо, чтобы если у меня не влезет на страницу , тогда был разрыв и переходил на новую страницу, как изменить код?

Кликните здесь для просмотра всего текста

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    РезультатЗапроса = СсылкаНаОбъект.ПолучитьОбъект().СформироватьЗапросЗаказНарядов();
    СтрокаТЧ = РезультатЗапроса.Выбрать();
    Колонка = 0;
    Пока СтрокаТЧ.Следующий() Цикл
        Область = Макет.ПолучитьОбласть("Область|Колонка");
        Область.Параметры.Номер = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаТЧ.ЗаказНаряд);
        НомерЗаказа=?(ОбщегоНазначения.ЗначениеНеЗаполнено(СтрокаТЧ.ЗаказНаряд.НомерВходящегоЗаказа),"","№:"+СтрокаТЧ.ЗаказНаряд.НомерВходящегоЗаказа+" ");
        Область.Параметры.Номер = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаТЧ.ЗаказНаряд);
        Область.Параметры.Контрагент = СтрокаТЧ.ЗаказНаряд.Контрагент.НаименованиеПолное;
        Область.Параметры.ПодразделениеКонтрагента = СтрокаТЧ.ЗаказНаряд.ПодразделениеКонтрагента;
        Область.Параметры.ТипРаботы = СтрокаТЧ.ЗаказНаряд.ТипРаботы;
        Область.Параметры.Модель = СтрокаТЧ.ЗаказНаряд.Модель;
        Область.Параметры.СерийныйНомер = СтрокаТЧ.ЗаказНаряд.СерийныйНомер;
        Область.Параметры.Комплектность = СтрокаТЧ.ЗаказНаряд.Комплектность;    
        Область.Параметры.ВнешнийВид = СтрокаТЧ.ЗаказНаряд.ВнешнийВид;
        Область.Параметры.ПродавецИзделия = СтрокаТЧ.ЗаказНаряд.ПродавецИзделия;
        Область.Параметры.Дата = Формат(СтрокаТЧ.ЗаказНаряд.Дата,"ДФ=dd.MM.yy");
        Область.Параметры.ЗаявленныйДефект = СтрокаТЧ.ЗаказНаряд.ЗаявленныйДефект;
        Если Колонка = 0 Тогда
            ТабДок.Вывести(Область);
            Колонка = 1;
        Иначе
            ТабДок.Присоединить(Область);
            Колонка = 0; 
        КонецЕсли;           
    КонецЦикла;
    Возврат ТабДок;

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

Кликните здесь для просмотра всего текста

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    РезультатЗапроса = СсылкаНаОбъект.ПолучитьОбъект().СформироватьЗапросЗаказНарядов();
    СтрокаТЧ = РезультатЗапроса.Выбрать();
    Колонка = 0;
    МассивОбластей = Новый Массив;
    Пока СтрокаТЧ.Следующий() Цикл
        Область = Макет.ПолучитьОбласть("Область|Колонка");
        Область.Параметры.Номер = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаТЧ.ЗаказНаряд);
        НомерЗаказа=?(ОбщегоНазначения.ЗначениеНеЗаполнено(СтрокаТЧ.ЗаказНаряд.НомерВходящегоЗаказа),"","№:"+СтрокаТЧ.ЗаказНаряд.НомерВходящегоЗаказа+" ");
        Область.Параметры.Номер = ОбщегоНазначения.ПолучитьНомерНаПечать(СтрокаТЧ.ЗаказНаряд);
        Область.Параметры.Контрагент = СтрокаТЧ.ЗаказНаряд.Контрагент.НаименованиеПолное;
        Область.Параметры.ПодразделениеКонтрагента = СтрокаТЧ.ЗаказНаряд.ПодразделениеКонтрагента;
        Область.Параметры.ТипРаботы = СтрокаТЧ.ЗаказНаряд.ТипРаботы;
        Область.Параметры.Модель = СтрокаТЧ.ЗаказНаряд.Модель;
        Область.Параметры.СерийныйНомер = СтрокаТЧ.ЗаказНаряд.СерийныйНомер;
        Область.Параметры.Комплектность = СтрокаТЧ.ЗаказНаряд.Комплектность;    
        Область.Параметры.ВнешнийВид = СтрокаТЧ.ЗаказНаряд.ВнешнийВид;
        Область.Параметры.ПродавецИзделия = СтрокаТЧ.ЗаказНаряд.ПродавецИзделия;
        Область.Параметры.Дата = Формат(СтрокаТЧ.ЗаказНаряд.Дата,"ДФ=dd.MM.yy");
        Область.Параметры.ЗаявленныйДефект = СтрокаТЧ.ЗаказНаряд.ЗаявленныйДефект;
        Если Колонка = 0 Тогда
            ТабДок.Вывести(Область);
            Колонка = 1;
        Иначе
            ТабДок.Присоединить(Область);
            Колонка = 0; 
        КонецЕсли; 
        МассивОбластей.Очистить(); 
        МассивОбластей.Добавить(Область); 
        Если НЕ ТабДок.ПроверитьВывод(МассивОбластей) Тогда    
            ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
            МассивОбластей.Очистить();
        КонецЕсли;
    КонецЦикла;
    Возврат ТабДок;



0



856 / 655 / 111

Регистрация: 01.11.2012

Сообщений: 2,411

28.02.2020, 12:21

5

Возможно в Винде не выбран принтер по умолчанию.



0



57 / 39 / 19

Регистрация: 24.10.2016

Сообщений: 974

28.02.2020, 14:29

 [ТС]

6

а в коде все правильно? или сделать в попытке-исключения?

Добавлено через 1 час 30 минут
хотя нет, наверно не стоит

Добавлено через 21 минуту
что-то видимо доработано не так, после доработки деления на листы печ. форма не выводится



0



57 / 39 / 19

Регистрация: 24.10.2016

Сообщений: 974

03.03.2020, 09:44

 [ТС]

7

может, как-то через цикл попробовать, или не поможет?



0



  1. Обнаружены ошибки:
    {Документ.РеализацияТоваровУслуг.МодульОбъекта (1155)}: Ошибка при вызове метода контекста (ПроверитьВывод)
    Если Ном <> 1 И НЕ ТабДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
    по причине:

    Такая ошибка возникает у одного из пользователей удаленного рабочего стола.

    Если я со своей машины захожу таким же образом под тем же самым пользователем (и системным и пользователем 1С) у меня такая ошибка не возникает.

    что может быть?


  2. Наташа

    Offline

    Наташа
    Опытный в 1С

    Регистрация:
    14 авг 2010
    Сообщения:
    1.442
    Симпатии:
    2
    Баллы:
    29

  3. это все что есть на экране, более ничего сказать не могу.
    это же 1с!!!


  4. Requin

    Offline

    Requin
    Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29


  5. для того, чтобы сохранить документ в MXL, человеку нужно купить принтер?


  6. Requin

    Offline

    Requin
    Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29

    P.S. Принтер можете не покупать, просто установите какой-нибудь (файловый).

  7. спасибо, передам ваш совет.
    хотя уважающий себя программист осуществляет проверку на конкретное действие — в данном случае это вывод отчета: КУДА — если на экран — одна ветка, если на принтер — другая.
    я так думаю, что программистам 1с надо пройти начальные курсы по основам построения логики программы, а лучше начать с базовых курсов по информатике.


  8. x_under

    Offline

    x_under
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    16
    Баллы:
    29

    :angry: Ну какой вы агрессивный. Тут же все по принципу: не нравится не ешь.

    Эта функция используется для определения помещается на экран форма или нет. А без принтера, хотя бы виртуального этого не определить. Вдруг вы на А3 или А5 печатаете (ну или на рулоне бумаги)… Так что всем не угодишь.


  9. nomad_irk

    Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.724
    Симпатии:
    1.014
    Баллы:
    204

    кхм, ну можно было бы возвращать неопределено, в случае, если принтера нет в системе, а не вываливаться в ошибку :)


  10. kallugin

    Offline

    kallugin

    Регистрация:
    22 ноя 2011
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1

    UP

    Та же самая ошибка, один в один, но есть нюансы:

    — переустановили Винду на терминальном сервере, был 2008 х86, стал 2008 64, соответственно, драйвера принтеров уже другие

    — документ, в котором всего одна строка, печатается нормально, больше одной — та самая ошибка

    — с одних компьютеров выдаёт такую ошибку, с других — нет, нормально печатает. Сегодня с утра заходил на тот же сервер и печатал те самые документы для бухгалтеров, я могу печатать, они — нет. Среда одинаковая, сервер один и тот же, принтеры одни и те же (их там два сетевых), конфигурацию не меняли.

    Может это быть из-за того, что система запомнила какие-то настройки «с прошлого раза» (у бухгалтеров, которые этот документ печатали)? И как бы их обнулить?


  11. x_under

    Offline

    x_under
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    16
    Баллы:
    29

    Попробуйте базу переподключить.


  12. Настя

    Offline

    Настя

    Регистрация:
    3 июл 2012
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1

    {Form.ФормаОтчета.Form(4)}: Ошибка при вызове метода контекста (Add)
    ТабЗН.Колонки.Добавить(«ТипНомера»,»Строка»,»Тип номера»);
    что за ошибка? подскажите пожалуйста


  13. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.125
    Симпатии:
    212
    Баллы:
    104

    Второй параметр имеет тип данных «ОписаниеТипов».

    ТабЗН.Колонки.Добавить("ТипНомера", Новый ОписаниеТипов("Строка"), "Тип номера");

  14. qweqweqwe123777

    Offline

    qweqweqwe123777
    Новичок в 1С

    Регистрация:
    30 янв 2015
    Сообщения:
    1
    Симпатии:
    1
    Баллы:
    4

    у меня ошибка получения информации о принтере
    решилась установкой прав на принтер.
    В свойствах принтера на вкладке Безопасность добавил группу пользователей Domain users полные права


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

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

ТабДокумент.ИмяПараметровПечати = «ИмяПечатнойФормы»;

Все дело оказалось в свойстве табличного документа КлючПараметровПечати или ИмяПараметровПечати. Как оказалось при установке данного свойства настройки печатной формы тут же восстанавливаются. После того как я изменил имя печатной формы, метот ПроверитьВывод заработал корректно.

Таким образом данное свойство следует устанавливать не в начале процедуры вывода на печать а в конце.

  • Не удалось создать цепочку к сожалению произошла ошибка повторите попытку инстаграм
  • Не удалось стать тренером внутренняя ошибка дота 2
  • Не удалось установить windows 10 ошибка на этапе установки second boot
  • Не удалось создать файл журнала миграции dfsr ошибка 5
  • Не удалось сохранить эту книгу поскольку при чтении или применении части журнала произошла ошибка