Имя: Пароль:
1C
1С v8
Опять внешняя печ.форма
0 AndreyZyrianov
 
07.02.12
08:38
Здравствуйте, уважаемые знатоки.
Казалось бы, много раз избитая уже тема, но у меня и правда необычный случай.
Дано:
1С:Предприятие 8.2 (8.2.14.540)
Бухгалтерия предприятия, редакция 2.0 (2.0.32.4)
Режим: Серверный
Документ "РеализацияТоваровУслуг" имеет внешнюю печ.форму: была создана новая внешняя обработка с реквизитом "СсылкаНаОбъект" типа "ДокументСсылка.РеализацияТоваровУслуг", макетом, скопированным из макета "Акт" документа "РеализацияТоваровУслуг" и экспортной функцией "Печать()" - копией функции "ПечатьАктаОбОказанииУслуг()" из модуля документа "РеализацияТоваровУслуг" с заменой слов "ЭтотОбъект" на "СсылкаНаОбъект". Подключил и сразу же получаю:
Не удалось сформировать внешнюю печатную форму!
Значение не является значением объектного типа (Ссылка)
Что интересно: попытался установить точку останова перед первым же упоминанием реквизита "СсылкаНаОбъект" теле функции "Печать()" - не останавливается несмотря на включенную и подключенную отладку.
Далее: "Отладка" - "Остановка по ошибке". Прокатило.
Останавливается на:
   ЗапросШапка.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
и при этом реквизит "СсылкаНаОбъект" имеет тип "Строка" и значение "Реализация"!!!
тип реквизита "СсылкаНаОбъект" пробовал менять на "Строка" - ноль эффекта...

Подскажите, пожалуйста, где у меня ошибка?
1 Гефест
 
07.02.12
08:44
Ты что-то там накопировал бездумно, а мы должны отгадать, в чем ошибка?

Смотри код и разбирайся, где какое значение чему присваивается
2 Повелитель
 
07.02.12
08:44
"Что интересно: попытался установить точку останова перед первым же упоминанием реквизита "СсылкаНаОбъект" теле функции "Печать()" - не останавливается несмотря на включенную и подключенную отладку. "
Конечно отладчиком не поймаешь, потомучто это уже другой файл, который храниться в 1с, то есть ты смотришь в ту обработку которую правишь, а вызываешь другую.

Самый простой способ, возьми другую внешнюю обработку этого документа, и пиши в ней, все будет работать.
3 Повелитель
 
07.02.12
08:45
(2) Да Кстати если есть желание отладчиком поработать, то эта внешняя форма, на время появляется в папке Temp
4 mastodont
 
07.02.12
08:55
Я обычно для отладки делаю у этой обработки форму с реквизитом "ссылканаДокумент" и по сформировать вызываю процедуру печать.
Так отладчиком удобно пользоваться.
А уже когда отладил можно и как внешнюю печатную форму подключать.
5 AndreyZyrianov
 
08.02.12
11:33
Спасибо двум последним ораторам за адекватные ответы.
Верно, что при остановке по ошибке отладчик ловит её во временном файле внешней обработки из папки temp. Ковырять там, собственно, нечего: в обработке лишь одна функция - Печать(), в которой и останавливается отладчик по ошибке на первом же упоминании ... Вот в этот момент и выясняется, что сам реквизит обработки сменил тип на "Строка" и значение его теперь "Реализация". Как такое может быть? Бывало ли у кого? В чем причина?

(4) Создал форму с единственным реквизитом на ней - это реквизит обработки "СсылкаНаОбъект" а на кнопку "выполнить" код:
а=Печать();
А.Показать();

Работает ))

(2) Сейчас попробую другую внешнюю...

Может, ещё какие идеи есть?
6 AndreyZyrianov
 
08.02.12
12:28
Господа, дело было не в бобине...
Просто я неправильно регистрировал внешнюю печатную форму.
Нажимал "Заменить файл внешней печатной формы", а надо было, оказывается, "Заменить файл внешней печатной формы для текущей строки".
Пинцет. Семь раз надо было-таки отмерить...
Закрываем тему.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан