Имя: Пароль:
1C
1С v8
Ошибка при вызове метода контекста (Выполнить)
0 3463
 
31.07.13
15:36
Здравствуйте,помогите пожалуйста!вся запуталась уже.делаю гарантийный лист предприятие 8.2 УП 10.3. выдает ошибку :
Не удалось сформировать внешнюю печатную форму!
Метод объекта не обнаружен (Выбрать)

Функция Печать() Экспорт

    ТабДок = Новый ТабличныйДокумент;
    ВидДокумента = СсылкаНаОбъект.Метаданные().Имя;
    ИмяТабЧасти = "Товары";
    Макет = ПолучитьМакет("ГарантийныйТалон");
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    ДокТабЧасть.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
        |    ДокТабЧасть.Номенклатура КАК Номенклатура,
        |    ДокТабЧасть.ХарактеристикаНоменклатуры КАК Характеристика,
        |    ДокТабЧасть.СерияНоменклатуры КАК Серия,
        |    ПРЕДСТАВЛЕНИЕ(ДокТабЧасть.ЕдиницаИзмерения) КАК ПечЕдиницаИзмерения,
        |    ПРЕДСТАВЛЕНИЕ(ДокТабЧасть.Номенклатура) КАК ПечНоменклатура,
        |    ДокСерийныеНомера.СерийныйНомер КАК СерийныйНомер,
        |    ДокТабЧасть.Количество КАК Количество,
        |    ДокТабЧасть.НомерСтроки КАК НомерСтроки,
        |    ЗначенияСвойствОбъектов.Значение.Наименование КАК Гарантия
        |ИЗ
        |    Документ." + ВидДокумента + "." + ИмяТабЧасти + " КАК ДокТабЧасть
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ." + ВидДокумента + ".СерийныеНомера КАК ДокСерийныеНомера
        |        ПО ДокТабЧасть.КлючСвязи = ДокСерийныеНомера.КлючСвязи
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |        ПО ДокТабЧасть.Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект.Ссылка
        |ГДЕ
        |    ДокТабЧасть.Ссылка = &ТекДок
        |    И ДокСерийныеНомера.Ссылка = &ТекДок
        |    И ЗначенияСвойствОбъектов.Свойство.Наименование = ""Гарантия""
        |
        |УПОРЯДОЧИТЬ ПО
        |    НомерСтроки,
        |    ДокСерийныеНомера.НомерСтроки";
        
        
    Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);    
    Макет = ПолучитьМакет("ГарантийныйТалон");
    
        
    Запрос.УстановитьПараметр("ТекДок", СсылкаНаОбъект);
    Запрос.УстановитьПараметр("ИмяТабЧасти", "Товары");
    
    ТабДокумент = Новый ТабличныйДокумент;
    
    Запрос = Новый Запрос;    
    Шапка = Запрос.Выбрать();
    Шапка = "ГАРАНТИЙНЫЙ ТАЛОН" ;
    Макет.ПолучитьОбласть("Шапка");
    
    Шапка = Запрос.Выполнить().Выбрать();
    Если НЕ Шапка.Следующий() Тогда
        Сообщить("Документ """+СсылкаНаОбъект+""" - основание Гарантийного талона не найдено", СтатусСообщения.Важное);
        Возврат Ложь;
    КонецЕсли;

    КонтактнаяИнформацияОрганизации = ПолучитьКонтактнуюИнформацию(Шапка.Организация);
    СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, ТекущаяДата());
    
    Если Шапка.Организация.Наименование="ООО ""Оптион""" Тогда
        ОбластьЗаголовок = Макет.ПолучитьОбласть("ЗаголовокОПТИОН");
    ИначеЕсли Шапка.Организация.Наименование="ООО ""Единая Региональная Торговая Компания""" Тогда
        ОбластьЗаголовок = Макет.ПолучитьОбласть("ЗаголовокЕРТК");
    Иначе
        ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    КонецЕсли;
    
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьТаблицаШапка = Макет.ПолучитьОбласть("ТаблицаШапка");
    
    ОбластьЗаголовок.Параметры.Заполнить(Шапка);
    ОбластьШапка.Параметры.Заполнить(Шапка);
    ОбластьТаблицаШапка.Параметры.Заполнить(Шапка);
    
    СтрокаРеквизитов = "";
    Если СведенияОбОрганизации.ИНН<>"" Тогда    СтрокаРеквизитов = СтрокаРеквизитов + "ИНН "+СведенияОбОрганизации.ИНН;            КонецЕсли;
    Если СведенияОбОрганизации.КПП<>"" Тогда    СтрокаРеквизитов = СтрокаРеквизитов + ", КПП "+СведенияОбОрганизации.ИНН;        КонецЕсли;
    Если СведенияОбОрганизации.Свидетельство<>"" Тогда    СтрокаРеквизитов = СтрокаРеквизитов + " "+СведенияОбОрганизации.Свидетельство;            КонецЕсли;
    
    ОбластьЗаголовок.Параметры.ОрганизацияАдрес = СведенияОбОрганизации.ФактическийАдрес;
    ОбластьЗаголовок.Параметры.ОрганизацияРеквизиты = СтрокаРеквизитов;
    Если СведенияОбОрганизации.Телефоны<>0 Тогда        ОбластьЗаголовок.Параметры.ОрганизацияТелефон = "телефон: "+СведенияОбОрганизации.Телефоны;        КонецЕсли;
    
    
    стрСайт = КонтактнаяИнформацияОрганизации.Найти("Сайт", "Вид");
    Если стрСайт<>Неопределено Тогда    ОбластьЗаголовок.Параметры.ОрганизацияСайт = "сайт: "+стрСайт.Представление;        КонецЕсли;
    
    стрEmail = КонтактнаяИнформацияОрганизации.Найти("Email", "Вид");
    Если стрEmail<>Неопределено Тогда    ОбластьЗаголовок.Параметры.ОрганизацияПочта = "электронная почта: "+стрEmail.Представление;        КонецЕсли;
    
    ТабДокумент.Очистить();
    ТабДокумент.Вывести(ОбластьЗаголовок);    
    ТабДокумент.Вывести(ОбластьШапка);    
    ТабДокумент.Вывести(ОбластьТаблицаШапка);
    ТабДокумент.НачатьАвтогруппировкуСтрок();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("ЗаголовокОПТИОН");
    ОбластьЗаголовок = Макет.ПолучитьОбласть("ЗаголовокЕРТК");
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьТаблицаШапка = Макет.ПолучитьОбласть("ТаблицаШапка");
        
    ОбластьНоменклатура   = Макет.ПолучитьОбласть("ТабНоменклатура");
    ОбластьСерийныйНомер  = Макет.ПолучитьОбласть("ТабСерийныйНомер");
Индекс = 0;
    ТекНоменклатура   = Неопределено;
    ТекХарактеристика = Неопределено;
    ТекСерия          = Неопределено;
    
    РезультатЗапроса = Запрос.Выполнить();
    Обход = РезультатЗапроса.Выгрузить().Выбрать();
    Пока Обход.Следующий() Цикл
    
        Если ТекНоменклатура   <> Обход.Номенклатура
         ИЛИ ТекХарактеристика <> Обход.Характеристика
         ИЛИ ТекСерия          <> Обход.Серия Тогда
        
            Индекс = Индекс + 1;
            
            ТекНоменклатура   = Обход.Номенклатура;
            ТекХарактеристика = Обход.Характеристика;
            ТекСерия          = Обход.Серия;
            
            ОбластьНоменклатура.Параметры.НомСтр          = Индекс;
            ОбластьНоменклатура.Параметры.ПечНоменклатура = Обход.ПечНоменклатура + ФормированиеПечатныхФорм.ПредставлениеСерий(Обход);
            ОбластьНоменклатура.Параметры.Номенклатура    = Обход.Номенклатура;
            ОбластьНоменклатура.Параметры.ЕдИзм           = Обход.ЕдиницаИзмерения;
            ОбластьНоменклатура.Параметры.ПечЕдИзм        = Обход.ПечЕдиницаИзмерения;
            ОбластьНоменклатура.Параметры.Количество      = Обход.Количество;
            ТабДокумент.Вывести(ОбластьНоменклатура);
            
        КонецЕсли;
            
        ОбластьСерийныйНомер.Параметры.ПечСерийныйНомер = Обход.СерийныйНомер;
        ОбластьСерийныйНомер.Параметры.СерийныйНомер    = Обход.СерийныйНомер;
        ОбластьСерийныйНомер.Параметры.ГарантийныйСрок  = Обход.Гарантия;
        
        ТабДокумент.Вывести(ОбластьСерийныйНомер);
        
    КонецЦикла;
    

    КоличествоЭкземпляров = 1;
    НаПринтер = Истина;
    ТабДокумент.РазмерСтраницы="A4";
    ТабДокумент.Автомасштаб=истина;
    ТабДокумент.ПолеСлева=20;
    ТабДокумент.ПолеСправа=10;
    ТабДокумент.ПолеСверху=10;
    ТабДокумент.ПолеСнизу=10;
    ТабДокумент.Показать("Гарантийный талон");
    Возврат ТабДокумент;
    Возврат Неопределено;

    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 1, Ложь, "Гарантийный талон");

КонецФункции;
1 salvator
 
31.07.13
15:37
Запрос = Новый Запрос;    
Шапка = Запрос.Выбрать();
Это чо?
2 Starhan
 
31.07.13
15:38
(0)
1. фотку в личку поставь
2. Покажи на какую строчку ругается.
3 3463
 
31.07.13
15:39
я хотела в шапку записать "гарантийный талон"
4 3463
 
31.07.13
15:39
Шапка = Запрос.Выбрать();
на эту ругается
5 salvator
 
31.07.13
15:40
(4) А у Запрос есть метод Выбрать()?
6 3463
 
31.07.13
15:42
А что нет?Выгрузить надо?((((((((((((
7 wangoff
 
31.07.13
15:43
Алена, тебе (1) все сказал. Ты текст запроса сделала.
А потом обнулила, сделав новый запрос.
Вот потому и ругается.
Короче, удали строчку  

Запрос = Новый Запрос;  

Перед

Шапка = Запрос.Выбрать();
8 Starhan
 
31.07.13
15:44
(6)
Запрос = Новый Запрос;    
    Шапка = Запрос.Выбрать();
    Шапка = "ГАРАНТИЙНЫЙ ТАЛОН" ;
    Макет.ПолучитьОбласть("Шапка");
    
    Шапка = Запрос.Выполнить().Выбрать();

нет ты же создала заново пустой запрос.
Тут вообще чехарда какая-то
9 salvator
 
31.07.13
15:45
Еще удали строку
Шапка = "ГАРАНТИЙНЫЙ ТАЛОН" ;

и поудаляй строки, где по 100 раз переопределяешь переменные.
10 3463
 
31.07.13
15:48
вы все очень хорошие и даже не ругаетесь, пока.но все равно ошибка эта
Не удалось сформировать внешнюю печатную форму!
Метод объекта не обнаружен (Выбрать)

сидела бы дома борщи варила,нет ведь понесло меня
11 salvator
 
31.07.13
15:49
(10) Что тебе нужно было доработать в существующей, работающей печатной форме?
12 3463
 
31.07.13
15:50
с чего ты взял,что работающая она была.гарантийный талон надо сделать
13 salvator
 
31.07.13
15:51
РезультатЗапроса = Запрос.Выполнить();
Обход = РезультатЗапроса.Выгрузить().Выбрать();

замени на

РезультатЗапроса = Запрос.Выполнить();
Обход = РезультатЗапроса.Выбрать();
14 3463
 
31.07.13
15:54
((( он все равно на это поле ругается    
Шапка = Запрос.Выбрать();
15 Fish
 
31.07.13
15:57
(14) Убери эти строки:
    Запрос = Новый Запрос;    
    Шапка = Запрос.Выбрать();
    Шапка = "ГАРАНТИЙНЫЙ ТАЛОН" ;
16 Fish
 
31.07.13
15:58
А вообще, надо убрать весь текст из (0) и написать заново.
17 3463
 
31.07.13
15:59
Легко сказать
18 Fish
 
31.07.13
16:00
(17) (15) сделала?
19 3463
 
31.07.13
16:00
{ОбщийМодуль.УниверсальныеМеханизмы.Модуль(1051)}: Значение не является значением объектного типа (АвтоМасштаб)
    Если НЕ ПечДокумент.АвтоМасштаб

новая ошибка,сил моих дамских нет
20 3463
 
31.07.13
16:00
да и вот результат
21 Капитан О
 
31.07.13
16:03
(19) ну и зачем ты в общий модуль всякую хню передаёшь?
22 3463
 
31.07.13
16:04
честно,не знаю,что сказать(
23 3463
 
31.07.13
16:04
не передавала я
24 Капитан О
 
31.07.13
16:06
(23) оно само?
25 salvator
 
31.07.13
16:06
Зачем тебе это
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 1, Ложь, "Гарантийный талон");
в функции, которая возвращает табличный документ?
26 Fish
 
31.07.13
16:06
(22) А почему ты вообще решила делать этот гарантийный лист? Судя по коду из (0) у тебя нету даже малейшего представления о том, что ты делаешь. Попробуй почитать для начала умные книжки, посмотреть типовые примеры.
27 Fish
 
31.07.13
16:07
(25) У неё эта строчка никогда не выполнится, т.к. пере ней стоит:
   Возврат ТабДокумент;
    Возврат Неопределено;
28 Капитан О
 
31.07.13
16:07
(25) она к этой строке даже через два возврата дошла, заметил? ;)
29 salvator
 
31.07.13
16:08
(27)(28) Да, слона-то я и не приметил
30 3463
 
31.07.13
16:10
вот я все убрала,что вы сказали,все рано этот автомасштаб
31 salvator
 
31.07.13
16:11
Возврат Неопределено; - убери
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 1, Ложь, "Гарантийный талон"); - вызывай из процедуры печати, а не из функции получения Табличного Документа
32 Капитан О
 
31.07.13
16:11
имхается мне, заставлять думать девушку бесполезно. ей нужен принц, который возьмёт и сделает
33 Fish
 
31.07.13
16:13
(31) Судя по ошибке (19) у неё и так эта функция вызывается откуда-то. Но понимания, как это работает вообще даже приблизительно имхо нет. Хотел было посоветовать отладчик, но сомневаюсь, что поможет.
34 3463
 
31.07.13
16:13
яведь день с ним сижу,и вот уж ни как не жду ,что мне кто-то что-то сделает
35 Капитан О
 
31.07.13
16:14
(34) ну пиши письму, посмотрим, чо там
Закон Брукера: Даже маленькая практика стоит большой теории.