Имя: Пароль:
1C
1С v8
Поле объекта не обнаружено
,
0 Powsem
 
22.07.12
22:43
Здравствуйте!
Есть внешняя обработка "РаботаСДокументамиПоступления" в данной обработке есть команда при нажатии она из одной фнункции получает возвращаемое значение в виде ссылки на элемент, а затем как параметр передает в процедуру на сервере ссылку на документ и табличный документ, в той процедуре что на сервере я использовал конструктор с обработкой результата (Вывод в табличный документ), чтобы заполнить макет данными из документа, но столкнулся с ошибкой, при нажатии на команду, она выдает такую ошибку:


{Форма.Форма.Форма(77)}: Поле объекта не обнаружено (РаботаСДокументамиПоступления)
   Макет = ВнешниеОбработки.РаботаСДокументамиПоступления.ПолучитьМакет("ПечатьДок");

Не могу разобраться ни как в чем ошибка. Ниже привожу код процедуры заполнения табличного документа:


Макет = ВнешниеОбработки.РаботаСДокументамиПоступления.ПолучитьМакет("ПечатьДок");
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ПоступлениеТоваров.Номер,
       |    ПоступлениеТоваров.Дата,
       |    ПоступлениеТоваров.Поставщик,
       |    ПРЕДСТАВЛЕНИЕ(ПоступлениеТоваров.Поставщик)
       |ИЗ
       |    Документ.ПоступлениеТоваров КАК ПоступлениеТоваров";

   Результат = Запрос.Выполнить();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
       ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
   КонецЦикла;

   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);

Всем большое спасибо кто постарается помочь! )
1 patapum
 
22.07.12
22:47
покури ВнешниеОбработки в СП
2 Powsem
 
22.07.12
22:47
Только единствнное в код этот не попало условие выбора по ссылке)) просто разные варианты запуска пробовал и забыл добавить перед тем как сюда отправить код. )
3 Powsem
 
22.07.12
22:48
patapum

Хорошо, сейчас гляну, может надо повнимательнее почитать, а то я смотрел что-то не нашел ответа, но раз там точно он есть буду искать)
4 Живой Ископаемый
 
22.07.12
22:52
так а че там внимательно читать у объекта глобального контекста ВнешниеОбработки нет свойства РаботаСДокументамиПоступления точка
5 Powsem
 
22.07.12
22:54
Живой Ископаемый а как же тогда правильно написать? Я просто сначала подумал, что это так сказать обращение к самой внешней обработке... Подскажите пожалуйста тогда если не ответ, то хоть в какую сторону смотреть... )
6 hhhh
 
22.07.12
23:09
ну передайте как параметр
7 Живой Ископаемый
 
22.07.12
23:20
ну смотреть таки как и сказали...
А как правильно написать? подумайте вот над чем сколько обработок с каким0то именем может быть на вашем диске?
8 patapum
 
22.07.12
23:21
(5) почитай какие методы есть у этого объекта. свойств у него нету...
9 Powsem
 
23.07.12
23:47
Вообще не могу понять как сделать!! (( Я так понимаю что от меня требуется сначала получить саму внешнюю обработку, а потому уже обратиться к ее макету, но думал единственный метод который по моему мнению позволяет это сделать это метод Подключить(), так вот первый параметр данного метода

<Путь> (обязательный)

Тип: Строка.
Ссылка на реквизит объекта конфигурации, который содержит данные внешней обработки. Ссылка может быть получена методом ПолучитьНавигационнуюСсылку.

Так вот я не могу понять как указать путь, просто ни в каком реквизите объекта конфигурации не содержатся данные внешней обработки моей.
Подскажите вообще хоть в ту степь я смотрю или вообще не правильное решение задачи выбрал?
10 Powsem
 
24.07.12
13:53
Совсем ни кто не может подсказать немного?) Я просто уже весь гугл перерыл ни как не могу понять что делать...
11 Infsams654
 
24.07.12
14:10
См. как сделано в справочнике "ВнешниеОбработки" в БП например.
12 Powsem
 
24.07.12
20:51
Ну а вообще может кто-то с этим сталкивался, я вряд ли найду как где сделано, так как опыта у меня маловато может кто скажет как именно сделать, а то я что-то думаю не догадаюсь сам, уже не знаю что делать )
13 Infsams654
 
25.07.12
08:22
(10) ктож ее посадит в конфигурацию, она же внешняя !

ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);

Вообще, что нужно-то ?
14 Powsem
 
25.07.12
14:56
Infsams654
Нет мне нужно не создать новую внешнюю обработку. Вот что мне требуется, во внешней обработке (которая уже создана) с помощью конструктора запросов с типом обработки Вывод в табличный документ, но когда конструктор создал вывод в таб. документ я его передаю в процедуру которая должна вывести печатную форму на экран, но выскакивает ошибка:


{Форма.Форма.Форма(77)}: Поле объекта не обнаружено (РаботаСДокументамиПоступления)
   Макет = ВнешниеОбработки.РаботаСДокументамиПоступления.ПолучитьМакет("ПечатьДок");

Я как понимаю система не может найти данную обработку "РаботаСДокументамиПоступления" и соответственно получить макет ее, вот проблема в том что не могу получить макет и уже не знаю как быть в инете ни где толком об этом не написано.
15 hhhh
 
25.07.12
15:02
(14) создали вы ее в Конфигураторе. И записали на диск. Она на диске у вас. Может на флешке, а флешку вы отдали другу.
16 Бледно Золотистый
 
25.07.12
15:03
(14) Не спорь, в (13) верно. Перед этим сохрани обработку из хранилища на диск.
17 KindLion
 
25.07.12
15:10
В (13) действительно верно.
Тебе, уважаемый, надо написать что-то типа:

ОбрСС = Справочники.ВнешниеОбработки.НайтиПоНаименованию("РаботаСДокументамиПоступления");
   
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ОбрСС.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
   
Обр = ВнешниеОбработки.Создать(ИмяФайла);
   
МакетОбр = Обр.ПолучитьМакет("ПечатьДок");
18 Powsem
 
25.07.12
15:18
Блин! И правда верно!!) Просто с внешними обработками столкнулся в первый раз ) Сейчас понял смысл данных действий. Спасибо огромное что помогли!)