Столкнулся с такой ошибкой, при выводе информации на печатную форму, платформа выдает следующее сообщение:
Ошибка при вызове метода контекста (ПроверитьВывод)…
ПроверитьВывод() — это метод табличного документа, который проверяет, умещаются ли переданные табличные документы на страницу при печати. В примечании у этого метода разработчики платформы 1С сразу написали, что при возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.
Проверил установленные принтеры, все исправно и работает. Эмпирическим путем выяснил, что данная ошибка возникает только у конкретной печатной формы и только под одним пользователем.
Ошибка решилась следующими действиями (выполнять под пользователем, у которого возникла ошибка):
1) Создал пустой документ, что бы при формировании печатной формы не был задействован метод ПроверитьВывод(). Если же этот метод в любом случае вызывается, то придется его найти в конфигурации и закомментировать, или же поместить в конструкцию Попытка-Исключение-КонецПопытки.
1. Помещение ПроверитьВывод в попытку |
2) Сформировал печатную форму.
2. Пустая печатная форма (кол-во товаров = 0) |
3) Для текущей печатной формы открыл параметры страницы и установил правильные параметры.
3. Параметры страницы |
Ошибка возникала из-за неправильных параметров страницы, которые платформа сохранила ранее при выводе на печать печатной формы, например: платформа сохранила в параметрах страницы принтер, который в дальнейшем удалили и установили новый. Параметры страницы печатной формы хранятся в свойстве табличного документа КлючПараметровПечати. Это свойство содержит ключ значения, в котором сохраняются параметры печати таблицы. Параметры печати, настроенные и сохраненные с данным ключом, впоследствии восстанавливаются при следующем показе таблицы.
Что бы данная ошибка не возникала из-за неправильных параметров страницы, свойство КлючПараметровПечати следует устанавливать не в начале процедуры вывода на печать, а в конце, так как при установке данного свойства параметры печати тут же восстанавливаются.
UPD 04/10/2015: Если устанавливать свойство КлючПараметровПечати в конце формирования табличного документа, то метод ПроверитьВывод будет использовать параметры печати установленные по-умолчанию, а не пользовательские. Что бы избежать данной ситуации, необходимо устанавливать свойство КлючПараметровСистемы в начале формирования табличного документа, а метод ПроверитьВывод поместить в конструкцию Попытка-Исключение-КонецПопытки.
20.11.20 — 14:39
1. Сломался метод ПроверитьВывод:
{ВнешняяОбработка.ТестПечати.Форма.Форма.Форма(9)}: Ошибка при вызове метода контекста (ПроверитьВывод) Если ТабДок.ПроверитьВывод(Обл) Тогда по причине: Ошибка получения информации о принтере
2. При печати пустого табличного документа появляется ошибка «Ошибка при получении характеристик принтера»
https://i.imgur.com/bOAp6MP.png
Пробовали вот что:
— еще две последние версии 8.3.17, а также последню 8.3.18
— чистка кэша
— ОчиститьНастройкиПользователя(ПользователиИнформационнойБазы.ТекущийПользователь())
— устанавливали в реестр дефолтный принтер (Прописали значение ключа «по умолчанию» — «//appServer123/printer008“)
При этом на сервере работает (где стоит сервер 1С), а на пустой локальной файловой базе нет
Кто-нибудь сталкивался? Как лечить?
В списке ошибок платформу тоже пусто.
1 — 20.11.20 — 14:41
И отключите уже автоформаттер…
2 — 20.11.20 — 14:45
HKCUPrintersDefaults{id}» там чего?
3 — 20.11.20 — 14:49
4 — 20.11.20 — 14:52
А если нового пользователя завести?
5 — 20.11.20 — 15:37
(4) Под новым пользователем все ок..
И что это значит?)
6 — 20.11.20 — 15:39
Сбросьте сохраненные настройки пользователя все
7 — 20.11.20 — 15:43
(6) В винде? Или как?
Вот это вот
ОчиститьНастройкиПользователя(ПользователиИнформационнойБазы.ТекущийПользователь())
не оно?
Плюс печать не работает даже на только что созданной базе
8 — 20.11.20 — 15:48
(5) Я нового пользователя винды сделал, а не 1с
Новый пользователя 1с не поможет
9 — 20.11.20 — 16:35
Я до сих пор не понимаю — зачем 1с внедрила свой модуль печати. Использовали все родные драйвера принтеров. Все было более менее нормально. Нет нужно извратиться и подсунуть свой обработчик. Теперь нужно указывать — использовать настройки принтера двусторонней печати от 1с или принтера. Зачем плодить сущности?
10 — 20.11.20 — 16:37
(8) Есть обработка в сети — «ХранилищеНастроек_Чистка». Можешь с помощью нее почистить настройки печати https://all4cf.ru/univof-ochistka_nastroek_polzovateley.html
11 — 20.11.20 — 16:41
А ещё — может стоит по-умолчанию принтер, который не подключен.
12 — 20.11.20 — 16:47
(10) Так я же говорю, что я даже новую базу создал, и оттуда не получается на печать документ отправить
(11) В настройках печати нельзя выбрать ни один принтер
13 — 20.11.20 — 16:54
А не из 1С под этим пользователем печатать можно? А то всякие случаи бывают.
14 — 20.11.20 — 16:58
15 — 20.11.20 — 17:15
Точно не ошибка Код ошибки: 10216040?
16 — 20.11.20 — 17:18
(15) Точно. Пробовал последнюю 18ую платформу, не работает ни один принтер, включал виртуальные типа Print To OneNote, XPS и т.д
17 — 20.11.20 — 18:34
Похоже, не хватает каких-то прав, т.к. под админом все работает.
Есть идеи?
18 — 20.11.20 — 18:36
Дай админиские права пользователю. После настройки принтера уберешь
19 — 20.11.20 — 18:37
(5) значит, что настройки пользователей сохранились
20 — 20.11.20 — 18:39
Нси-пользователи, дожди до настроек печатных форм, не помню как точно называется
21 — 20.11.20 — 18:41
ШО… Опять… на любые принтеры не печатает?
во я тему поднимал в ноябре ошибка при печати на принтеры Kyocera
22 — 20.11.20 — 18:43
пришлось тогда откатиться на 8.3.15.30 на ней и сидим
23 — 20.11.20 — 18:45
(21) ну погоди, у него вроде другая машинка
24 — 20.11.20 — 19:08
(19) Пользователей 1С? Или винды?
Я же говорю, что я создал Новую Пустую Базу, и даже после этого не получается вызвать метод ПроверитьВывод табличного документа.
(21) Даже на Microfost XPS Writer, скрин в (0)
25 — 20.11.20 — 19:24
(24) Я бы начал с 1с, но где-то видел, что может прав не хватает в винде. Но настройки пришли старые при распаковке, а движок уже по новому берет. У меня было, но я как-то быстро сделал, потом подованам раздал. Точно помню, реестр и настройки пользователей
26 — 20.11.20 — 19:45
(25) Проблема точно в правах, но как понять в чем конкретно? И где копать?
Если запускать под пользователем, то проблема проявляется.
В случае запуска под админской учетной записью проблемы нет.
Дать всем админов не вариант. В компании более 20 человек такое делать нельзя.
27 — 20.11.20 — 19:54
(26) Еще раз, я зачистил для начала бы в 1с настройки печатных форм, потом бы глянул бы на админство, вроде дали не админские коллеги мои
28 — 20.11.20 — 20:02
В 1с начиная с 8.3.16 функции работы с принтером выделены в отдельные приложения 1cv8p32.bin и 1cv8p64.bin, которые запускаются при обращении к принтеру. Это сделано для того, чтобы отвязать основные библиотеки 1с от работы с потенциально нестабильным драйвером принтера. Но некоторые антивирусы запуск таких приложений блокируют. Кроме того, это может быть закрыто политиками безопасности. Проверяйте там.
29 — 20.11.20 — 21:29
Можно попробовать Process Monitor’ом глянуть с фильтром по 1cv8p64.bin и Result is not success. Но это несколько неблагодарное дело, там при запуске Ctrl+P порядка 1500-2000 событий будет, в основном поиск в ветках реестра(хотя и по ним можно отфильтровать). Главное найти то что нужно среди кучи информации.
piter3
30 — 20.11.20 — 21:31
(29) Думаю там все проще
-
Обнаружены ошибки:
{Документ.РеализацияТоваровУслуг.МодульОбъекта (1155)}: Ошибка при вызове метода контекста (ПроверитьВывод)
Если Ном <> 1 И НЕ ТабДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
по причине:Такая ошибка возникает у одного из пользователей удаленного рабочего стола.
Если я со своей машины захожу таким же образом под тем же самым пользователем (и системным и пользователем 1С) у меня такая ошибка не возникает.
что может быть?
-
Offline
Наташа
Опытный в 1С- Регистрация:
- 14 авг 2010
- Сообщения:
- 1.442
- Симпатии:
- 2
- Баллы:
- 29
-
это все что есть на экране, более ничего сказать не могу.
это же 1с!!! -
Offline
Requin
Опытный в 1С- Регистрация:
- 10 май 2010
- Сообщения:
- 1.911
- Симпатии:
- 2
- Баллы:
- 29
-
для того, чтобы сохранить документ в MXL, человеку нужно купить принтер? -
Offline
Requin
Опытный в 1С- Регистрация:
- 10 май 2010
- Сообщения:
- 1.911
- Симпатии:
- 2
- Баллы:
- 29
P.S. Принтер можете не покупать, просто установите какой-нибудь (файловый).
-
спасибо, передам ваш совет.
хотя уважающий себя программист осуществляет проверку на конкретное действие — в данном случае это вывод отчета: КУДА — если на экран — одна ветка, если на принтер — другая.
я так думаю, что программистам 1с надо пройти начальные курсы по основам построения логики программы, а лучше начать с базовых курсов по информатике. -
Offline
x_under
Модераторы
Команда форума
Модератор- Регистрация:
- 25 апр 2007
- Сообщения:
- 2.576
- Симпатии:
- 16
- Баллы:
- 29
:angry: Ну какой вы агрессивный. Тут же все по принципу: не нравится не ешь.
Эта функция используется для определения помещается на экран форма или нет. А без принтера, хотя бы виртуального этого не определить. Вдруг вы на А3 или А5 печатаете (ну или на рулоне бумаги)… Так что всем не угодишь.
-
Online
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.724
- Симпатии:
- 1.014
- Баллы:
- 204
кхм, ну можно было бы возвращать неопределено, в случае, если принтера нет в системе, а не вываливаться в ошибку
-
Offline
kallugin
- Регистрация:
- 22 ноя 2011
- Сообщения:
- 1
- Симпатии:
- 0
- Баллы:
- 1
UP
Та же самая ошибка, один в один, но есть нюансы:
— переустановили Винду на терминальном сервере, был 2008 х86, стал 2008 64, соответственно, драйвера принтеров уже другие
— документ, в котором всего одна строка, печатается нормально, больше одной — та самая ошибка
— с одних компьютеров выдаёт такую ошибку, с других — нет, нормально печатает. Сегодня с утра заходил на тот же сервер и печатал те самые документы для бухгалтеров, я могу печатать, они — нет. Среда одинаковая, сервер один и тот же, принтеры одни и те же (их там два сетевых), конфигурацию не меняли.
Может это быть из-за того, что система запомнила какие-то настройки «с прошлого раза» (у бухгалтеров, которые этот документ печатали)? И как бы их обнулить?
-
Offline
x_under
Модераторы
Команда форума
Модератор- Регистрация:
- 25 апр 2007
- Сообщения:
- 2.576
- Симпатии:
- 16
- Баллы:
- 29
Попробуйте базу переподключить.
-
Offline
Настя
- Регистрация:
- 3 июл 2012
- Сообщения:
- 1
- Симпатии:
- 0
- Баллы:
- 1
{Form.ФормаОтчета.Form(4)}: Ошибка при вызове метода контекста (Add)
ТабЗН.Колонки.Добавить(«ТипНомера»,»Строка»,»Тип номера»);
что за ошибка? подскажите пожалуйста -
Offline
1cUserAndrew
Профессионал в 1С
Команда форума- Регистрация:
- 27 май 2010
- Сообщения:
- 5.125
- Симпатии:
- 212
- Баллы:
- 104
Второй параметр имеет тип данных «ОписаниеТипов».
ТабЗН.Колонки.Добавить("ТипНомера", Новый ОписаниеТипов("Строка"), "Тип номера");
-
Offline
qweqweqwe123777
Новичок в 1С- Регистрация:
- 30 янв 2015
- Сообщения:
- 1
- Симпатии:
- 1
- Баллы:
- 4
у меня ошибка получения информации о принтере
решилась установкой прав на принтер.
В свойствах принтера на вкладке Безопасность добавил группу пользователей Domain users полные права
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Приглашаем на
бесплатный вебинар!
06 июня в 11:00 мск
1 час
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;
Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.
Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа ";
НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
КонецЦикла;
1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.
В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.
Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
Добрый день, при выводе на печать СЗВ 6-4 выдает ошибку.
{Обработка.СведенияВПФ_СЗВ64.Форма.Форма.Форма(724)}: Ошибка при вызове метода контекста (ПроверитьВывод)
Если п_ПечатныйЛист.ПроверитьВывод(п_МассивПроверки) Тогда
,аналогичная ошибка при выводе на печать Поименного списка сотрудников
{Обработка.СведенияВПФ_СЗВ64.Форма.Форма.Форма(5768)}: Ошибка при вызове метода контекста (ПроверитьВывод)
Если Не л_ТабДок.ПроверитьВывод(л_Массив) Тогда
Принтер в системе установлен, другие формы корректно выводятся на печать.
В локальной конфигурации, КАМИН:Зарплата для бизнеса. Версия 4.0 (4.0.23.3)
Тема закрыта.