Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Исключение при ошибке печати
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
logist
                Попытка
                    ТабличныйДокумент.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
                Исключение
                    Ошибка = Истина;
                КонецПопытки;

Допустим принтер выключен, или по какой-то другой причине, 1С в момент печати выдает окно "Ошибка печати", как поймать эту ошибку? Исключение не срабатывает.
pablo
Это ошибка уровня ОС и 1с, вероятно, не сбрасывает такие исключения в транслятор, поэтому перехватывать такой Exception возможно только через некую внешнюю приблуду, которая будет перехватывать сообщения ОС, анализировать и передавать в 1с каким-либо способом (самый топорный - через файл на диске). Скорее всего, ничего готового нет.
sava1
Цитата(pablo @ 29.02.16, 11:48) необходимо зарегистрироваться для просмотра ссылки
ошибка уровня ОС

Это не ошибка - система тупо вставит задание в спулер. Может, попрововать печатать без очереди....
Или проверять доступность принтера до печати.
pablo
на самом деле, система может выдавать
Цитата
окно "Ошибка печати"
и может не выдавать. Это зависит от установленных драйверов принтера. И да,
Цитата
система тупо вставит задание в спулер
, а уже драйвер может рисовать красивые окошки про ошибки печати. и здесь возможна описанная мной схема, только ловить нужно другие сообщения в другом месте.
logist
Проблема вообще вот в чем - выполняется печать пакета Табдоков, например их 10, каждый отправляется отдельно, и иногда возникают ситуации что какой-то один не напечатался, например 5й, появилось окно Ошибка печати, тут же пропало и печать пошла дальше, вот нужно отловить этот один пятый, что именно он не напечатался.
Работа с очередью через WMI не подходит, там возвращается вся текущая очередь, и в любом случае в ней все доки имеют одинаковое название.
Опрашивать доступность принтера перед печатью - вроде хорошо, но учитывая условия проблемы - на момент опроса он будет доступен, а через долю секунды когда происходит печать - нет, и может же быть наоборот.
sava1
Вариантов несколько:
1. Просим у мелких (линухов) документацию на спулер или сами отслеживаем код - находим место, где генерится хрень типа ШоуВиндоу (или оные)
и пишем перехватчик.
2. Пишем мелким, чтобы они дописали код (типо СэндМесседж(....)) при ошибках, сами делаем подписку на события.
3. Просим разработчиков (а че нам?) чтобы сразу генерили Внешнее событие для 1с (чтоб нам не извращаться).
logist
sava1, да smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.