Имя: Пароль:
1C
1С v8
Тонкий клиент. Печать одного документа из другого.
0 palm1c
 
24.07.13
14:53
Добрый день.
В тонком клиенте есть документ РКО.
Мне нужно сделать, чтобы при нажатии на кнопку в РКО, создавался и печатался документ АктСверки.

В Управляемой форме РКО, на клиенте вызываю ф-цию ПечатьАктаСверкиНаСервере, где создаю документ АктСверки, заполняю его, и пытаюсь напечатать.

НашаТаб = ДокАкт.ПечатьАктаСверки();

Вываливается ошибка: Метод объекта не обнаружен (ПечатьАктаСверки)

В модуле документа АктСверки есть Функция ПечатьАктаСверки() Экспорт

Что я делаю не так?

Сильно не бейте, я с тонким клиентом не очень дружу.
1 cw014
 
24.07.13
14:56
В модуле объекта или модуле менеджера все таки?
2 scanduta
 
24.07.13
15:02
На клиенте нельзя вызвать процедуры модуля объекта
3 cw014
 
24.07.13
15:03
(2) клиенте вызываю ф-цию ПечатьАктаСверкиНаСервере, где создаю документ АктСверки

Кажется он свою серверную процедуру вызывает
4 palm1c
 
24.07.13
15:05
(1) Объекта.
5 palm1c
 
24.07.13
15:05
(2,3) Серверная процедура, да.
6 cw014
 
24.07.13
15:06
(5) ДокАкт в отладчике какой тип имеет?
7 palm1c
 
24.07.13
15:07
(6) Сек..
8 scanduta
 
24.07.13
15:08
На сервере сначала получи объект, потом вызывай процедуру
9 palm1c
 
24.07.13
15:10
(8) Я его создаю. Нужно разве получать?
10 palm1c
 
24.07.13
15:12
(7)
Документ объект: Акт сверки взаиморасчетов

Это я получил, правда, не в отладчике, а сообщение пользователю вывел. У меня дебаг не включен на сервере.
Мда. Сейчас файловую сделаю.
11 olegves
 
24.07.13
15:12
(8) чушь, надо создать команду для печати
(9) ссылка на акт сверки есть?
12 cw014
 
24.07.13
15:14
Если в документе "Акт сверки взаиморасчетов" в модуле есть "Функция ПечатьАктаСверки() Экспорт", тогда странно конечно
13 palm1c
 
24.07.13
15:14
(11) Поподробнее насчет команда для печати? Ссылка есть, я его записываю перед тем, как печатать. Или о чём?
14 palm1c
 
24.07.13
15:15
В общем, создам файловую сейчас и буду дебажить. Напишу, что было, если что.
15 olegves
 
24.07.13
15:15
(4) ф-я печати д.б. в модуле менеджера с параметром Ссылка
16 cw014
 
24.07.13
15:15
(15) Не факт
17 olegves
 
24.07.13
15:16
(13) посмотри как у 1С в типовых (Торговля 11, Документооборот и проч)
18 scanduta
 
24.07.13
15:16
(9) Создать=Получить

НаСервере

   ДокОбъект=Документы.АвансовыйОтчет.СоздатьДокумент();
   ДокОбъект.ИмяПроцедурыПечати();
19 scanduta
 
24.07.13
15:16
Только процедура должна быть эскпортной
20 cw014
 
24.07.13
15:16
(18) При чем тут авансовый отчет и акт сверки взаиморасчетов?
21 scanduta
 
24.07.13
15:17
(20) Это просто пример
22 olegves
 
24.07.13
15:17
(16) для тонкого клиента - фактее некуда
23 palm1c
 
24.07.13
15:17
(18) Так и есть, всё верно.
24 cw014
 
24.07.13
15:17
Код создания документа дай
25 palm1c
 
24.07.13
15:17
(22) Попробую, спасибо.
26 cw014
 
24.07.13
15:19
(22) Я могу в модуле менеджера сделать функцию, которая из ссылки будет получать объект и выполнять экспортную функцию модуля объекта
27 olegves
 
24.07.13
15:20
(18) (23)
ну я с вас угораю, друзья. Документ еще не записан, т.е. ссылка пустая, а вы про печать
28 cw014
 
24.07.13
15:21
(27) Вообще то методы объекта в модуле объекта можно использовать...
29 olegves
 
24.07.13
15:23
(28) но не в процедурах НаКлиенте
30 scanduta
 
24.07.13
15:26
(29) Естественно друг для этого я и написал

НаСервере

   ДокОбъект=Документы.АвансовыйОтчет.СоздатьДокумент();
   ДокОбъект.ИмяПроцедурыПечати();
31 palm1c
 
24.07.13
15:29
ДокАкт = Документы.АктСверкиВзаиморасчетов.СоздатьДокумент();
   ДокАкт.ДатаОкончания = Объект.Дата;
   ДокАкт.ДатаНачала = НачалоМесяца(Объект.Дата);
   ДокАкт.Дата = ТекущаяДата();
   ДокАкт.Организация = Объект.Организация;
   ДокАкт.ДоговорКонтрагента = Объект.ДоговорКонтрагента;
   ДокАкт.ЗаполнитьПоДаннымУправленческогоУчета();
   ДокАкт.Записать();
   
   НашеСообщение = Новый СообщениеПользователю;
   НашеСообщение.Текст = Строка(ДокАкт);
   НашеСообщение.Сообщить();
   
   НашеСообщение.Текст = Строка(ТипЗнч(ДокАкт));
   НашеСообщение.Сообщить();
   
   НашаТаб = ДокАкт.ПечатьАкта();
   
КонецПроцедуры    

&НаКлиенте
Процедура СоздатьИРаспечататьАктСверки(Команда)
   
   СоздатьИРаспечататьАктСверкиНаСервере();
   
КонецПроцедуры



Это код, если что.
32 palm1c
 
24.07.13
15:38
&НаСервере
Процедура  СоздатьИРаспечататьАктСверкиНаСервере()
   
   ДокАкт = Документы.АктСверкиВзаиморасчетов.СоздатьДокумент();
   ДокАкт.ДатаОкончания = Объект.Дата;
   ДокАкт.ДатаНачала = НачалоМесяца(Объект.Дата);
   ДокАкт.Дата = ТекущаяДата();
   ДокАкт.Организация = Объект.Организация;
   ДокАкт.ДоговорКонтрагента = Объект.ДоговорКонтрагента;
   ДокАкт.ЗаполнитьПоДаннымУправленческогоУчета();
   ДокАкт.Записать();
       
   НашаТаб = ДокАкт.ПечатьАкта();
   
КонецПроцедуры    

&НаКлиенте
Процедура СоздатьИРаспечататьАктСверки(Команда)
   
   СоздатьИРаспечататьАктСверкиНаСервере();
   
КонецПроцедуры
33 palm1c
 
24.07.13
15:38
Что-то я не понял, что у меня не так, господа.
34 cw014
 
25.07.13
07:34
Тут только смотреть напрямую, нету такого метода или написан он с ошибкой. Скопируй название функции прямо из модуля
35 Худой
 
25.07.13
07:53
Маразм крепчает.
"НаКлиенте", "НаСервере", ....
"На сервере сначала получи объект, потом вызывай процедуру"
и т.д. и т.п.
Зачем думание по всей этой бодяге перекладывать на программера?
Скоро фирма 1С придумает "НаНебе", "НаЗемле", "НаСтуле", "ВПодвале"
36 cw014
 
25.07.13
08:20
(35) Ага и СП такой "Доступность: на сервере, на клиенте, в подвале"
37 Худой
 
25.07.13
08:32
(36)Это уже должна система сама разруливать.
А то скоро 1С дойдет до того, что на ассемблере надо будет писать.