Имя: Пароль:
1C
1С v8
Альфа-Авто - Метод объекта не обнаружен (Печать)
0 tempit1cman
 
29.08.13
09:56
Столкнулся с тем, что если во внешней печатной форме Альфа-Авто 5 во время печати возникает ошибка, то в окне служебных сообщений вместо произошедшей ошибки появляется вот такая:

Обработчик печатной формы (внешняя):  Справочник.ВнешниеПечатныеФормы.МодульОбъекта(100)}: Метод объекта не обнаружен (Печать)

Судя по всему, печать печатной формы "обёрнута" в "Попытку - Исключение" и ошибку печатает ветка Исключение из справочника внешних печатных форм, то есть сама ошибка теряется и место её возникновения приходится искать отладчиком, отлавливая с какой строки кода отладчик перепрыгивает в справочник. В моём случае, например, в печатной форме в одной из ячеек был неправильно выставлен параметр "Заполнение".

Собственно, пишу я это всё потому, что решение этой ошибки не гуглится.
1 Wobland
 
29.08.13
10:00
сочувствую. попробуй гуглить не решение ошибки, а собственно создание внешних печатных форм
2 fmrlex
 
29.08.13
10:04
(0) УФ?
3 fmrlex
 
29.08.13
10:06
Вызов клиентский или серверный?
Разница в том где должна быть процедура "Печать" - либо в модуле обработки либо формы. Смотри обработку.
4 Alexey87
 
29.08.13
10:13
(0) а в чем вопрос то? ты же сам вкурил, что у тебя был косяк во ВПФ и то, что его нужно искать отладчиком. Там где вылетает в Печать, в той строке и ошибка.
5 DS
 
29.08.13
10:22
(0) Подредактируй код выполнения в попытке. Сам так же делал.
6 tempit1cman
 
29.08.13
10:35
Видимо я неудачно выразился - выкладываю описание ошибки, чтобы её решение можно было нагуглить.
Ошибка будет в *следующей строке* после той, где "соскакивает" отладчик.
Вызов клиентский.
Мне скорее интересно, как можно из ветки исключения получить код возникшей ошибки и вывести его в окно сообщений.
7 sergey198
 
29.08.13
10:39
(6) остановка на ошибке
8 DS
 
29.08.13
10:46
(6) Добавить еще одну попытку. Но при использовании внешних обработок, ошибка в исключении уже есть (если данный механизм такой же как и в 4-й версии).
9 fmrlex
 
29.08.13
11:38
Как я делаю отладку ВПФ.
Делаю форму на форме реквизит = объектСКоторогоПечатаем.
В обработчике кнопки вызываю Печать();
И просто открываю ВПФ через файл-открыть и спокойно расставляю точки останова.
10 Wobland
 
29.08.13
11:40
имхается мне, автору уже пора нажать Ф10, а то подвис на "Ошибка будет в *следующей строке*"
11 tempit1cman
 
29.08.13
11:47
Нашёл источник "глюка" - модуль справочника внешних печатных форм:

    Попытка
        ТабДокумент = ВнешниеОбработки.Создать(ИмяФайлаПечатнойФормы).Печать(ДокументОбъект,ТабДокумент);
    Исключение
        ТабДокумент = ВнешниеОтчеты.Создать(ИмяФайлаПечатнойФормы).Печать(ДокументОбъект,ТабДокумент);
    КонецПопытки;

Неужели нет *другого* способа определить - отчёт это или обработка?
12 el7cartel
 
29.08.13
11:48
так откуда взялась...печаль
13 tempit1cman
 
29.08.13
11:49
Мне что, Печать() внешней печатной формы целиком "заворачивать" в свою Попытку-Исключение?
14 fmrlex
 
29.08.13
12:11
(13) У тебя Печать() не в модуле формы  случайно?
15 tempit1cman
 
29.08.13
12:14
В модуле объекта внешней печатной формы.
Кстати, "завернул" внутренности функции Печать() в Попытку-Исключение и помогло, теперь легче искать ошибку:

Описание='Поле объекта не обнаружено (ДТ1)'
ИмяМодуля='ВнешняяОбработка.ЗаказНарядОбщий.МодульОбъекта'
НомерСтроки=31
ИсходнаяСтрока='        ОбластьШапкаТаблицы.Параметры.ДТ1=Формат(СсылкаНаобъект.Дата,"ДЛФ=D");'
16 tempit1cman
 
29.08.13
12:18
Типа

Функция Печать(СсылкаНаОбъект,нео=Неопределено) Экспорт
    Попытка
        ТабДокумент=Новый ТабличныйДокумент;
        // ...
    Исключение
        Инфо = ИнформацияОбОшибке();
        Сообщить("Описание='" + Инфо.Описание + "'");
        Сообщить("ИмяМодуля='" + Инфо.ИмяМодуля + "'");
        Сообщить("НомерСтроки=" + Инфо.НомерСтроки);
        Сообщить("ИсходнаяСтрока='" + Инфо.ИсходнаяСтрока + "'");
    КонецПопытки;
    Возврат ТабДокумент;
КонецФункции
17 tempit1cman
 
29.08.13
12:22
(2) Кстати, не УФ.
18 DS
 
29.08.13
13:11
(16) Тоже вариант, если не хочется редактировать модуль справочника.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший