Имя: Пароль:
1C
1С v8
Внешняя Печатная Форма 8.3 Создание
0 TEENAGER
 
06.11.14
14:41
Метод по которому я создавал в 8.2 Внешнюю печатную форму, почему то не работает в 8.3
Метод:
В модуле Объекта пишу:
&НаСервере
Функция ПечатьВитя() Экспорт
ТабДок = Новый ТабличныйДокумент;    
Возврат ТабДок;
КонецФункции

В модуле формы пишу :
&НаКлиенте
Процедура КнопкаВыполнить(Команда)
    КнопкаВыполнитьНаСервере();
КонецПроцедуры


&НаСервере
Процедура КнопкаВыполнитьНаСервере()    
    ТабДокумент = ПечатьВитя();
    ТабДокумент.Показать();
КонецПроцедуры

И вот кто скажет почему в 8.3 этот метод не работает, как его доработать что бы все было ок? Заранее спасибо, это мой первый вопрос на этом форуме.
1 Looser-1c
 
06.11.14
14:43
телепну...

8.2 была файловая, 8.3 - серверная.
Да и то... Последняя процедура - это провокация. Кому ты что показывать на сервере собираешься?
2 vicof
 
06.11.14
14:44
"ПечатьВитя()"
мляяяяя :)))) ты сделал мой день
3 Euguln
 
06.11.14
14:45
Зачем так сложно

&НаКлиенте
Процедура КнопкаВыполнить(Команда)
    ТабДокумент = ПечатьВитя();
    ТабДокумент.Показать();
КонецПроцедуры
4 Поpyчик-4
 
06.11.14
15:03
(0) Скажи начальнику, пусть тебя уволит за профнепригодность.


(3) Так короче, если оплата не построчно.

ПечатьВитя().Показать();
5 MaxS
 
06.11.14
15:15
6 TEENAGER
 
06.11.14
15:34
Looser - спасибо за пояснения. Последнюю процедуру не нужно? Т.е. только на клиенте?
vicof - Я рад что развеселил тебя.
Euguln - как проще? я учился по видеоурокам так, на 8.2
Поручик-4 - Спасибо, скажу начальнику, только я не по 1С работаю официально. Краткость учту, спс.
MaxS - спасибо за ссылку, что мне с ней делать?
Повторюсь, это мое первое обращение на форум, печатная форма, это первое что я делаю в 1С. Спасибо!
7 Aleksandr N
 
06.11.14
15:43
(0)
&НаСервере
Процедура КнопкаВыполнитьНаСервере()    
    ТабДокумент = РеквизитФормыВЗначение("Объект").ПечатьВитя();
    ТабДокумент.Показать();
КонецПроцедуры
8 Жан Пердежон
 
06.11.14
15:52
(0) на УФ это и в 8.2 не работало
9 TEENAGER
 
06.11.14
16:08
(7)
Теперь выдает ошибку:
{Форма.Форма.Форма(12)}: Ошибка при вызове метода контекста (Показать)
    ТабДокумент.Показать();
по причине:
Метод недоступен на сервере
10 Локи-13
 
06.11.14
16:16
вот эта супер книга
http://v8.1c.ru/metod/books/book.jsp?id=441
снимет все вопросы такого плана в будущем
11 TEENAGER
 
06.11.14
16:22
(10)Спасибо,обязательно куплю и изучу.
А сейчас по теме подсказать кто то может, что не так?
12 Жан Пердежон
 
06.11.14
16:24
(11) ты пытаешься отчет показать на сервере? кому?
13 Aleksandr N
 
06.11.14
16:40
(9)
&НаКлиенте
Процедура КнопкаВыполнить(Команда)
    ТабДокумент = Новый ТабличныйДокумент;
    КнопкаВыполнитьНаСервере(ТабДокумент);
    ТабДокумент.Показать();
КонецПроцедуры


&НаСервере
Процедура КнопкаВыполнитьНаСервере(ТабДокумент)    
    ТабДокумент = РеквизитФормыВЗначение("Объект").ПечатьВитя();
КонецПроцедуры
14 Looser-1c
 
06.11.14
16:42
(12) Я уже спрашивал. Не сознаётся...
Наверное, там агент КГБ сидит и подсматривает....
15 TEENAGER
 
06.11.14
16:50
(12) (14) Да действительно, показывать серверу глупо...
16 TEENAGER
 
06.11.14
17:06
(13) Александр, таким методом работает, но показывает чистый табличный документ, т.к. мы его создаем в первой процедуре. А мне надо показать табличный документ, выполненный функцией в модуле объекта внешней печатной формы "функция ПечатьВитя()"
17 TEENAGER
 
06.11.14
17:08
И работает только так
&НаКлиенте
Процедура КнопкаВыполнить(Команда)
    ТабДок = Новый ТабличныйДокумент;
    КнопкаВыполнитьНаСервере();
    ТабДок.Показать();
КонецПроцедуры


&НаСервере
Процедура КнопкаВыполнитьНаСервере()
    ТабДокумент = РеквизитФормыВЗначение("Объект").ПечатьВитя();    
КонецПроцедуры
18 Локи-13
 
06.11.14
17:15
не надо писать в модуле объекта

есть для печати модуль менеджера
туда можно передать ссылку
19 TEENAGER
 
06.11.14
17:16
(13) Александр, все ОК!
Надо было в еще в ПечатьВитя передать ТабДокумент, и в модуле объекта принять ТабДокумент. Теперь все работает!)
Спасибо тебе Александр!
20 Looser-1c
 
06.11.14
17:16
(18) Модуль менеджера? У внешней печатной формы?
21 Локи-13
 
06.11.14
17:16
+(18)
модуль объекта нужен только для программирования обработчиков объекта (типа обработки проведения) и связанных с ними функций
22 TEENAGER
 
06.11.14
17:17
(18) Локи, у внешней печатной формы технически нет модуля менеджера!
Всем спасибо все работает! Александру Респект!
23 Локи-13
 
06.11.14
17:18
(20)аа.. внешняя печ форма... >_>
24 Локи-13
 
06.11.14
17:19
конец рабочего дня... смотрю, документ, ну что-то и подумал про него
25 User_Agronom
 
06.11.14
17:20
(0) ТабличныйДокумент доступен и на клиенте и на сервере.
Формируй его на сервере и передавай на клиента.

Типа:
&НаСервере
Функция СформироватьДок()
  Результат = новый ТабличныйДокумент;
  //Танцы с заполнением, макетами, бубнами и пр. пр. пр etc etc etc
  возврат Результат
КонецФункции

&НаКлиенте
Процедура ЖмакнутьПоКнопке(Команда)
  МойДок = СформироватьДок();
  МойДок.Показать();
КонецПроцедуры

(4) >>Скажи начальнику, пусть тебя уволит за профнепригодность.

>>ПечатьВитя().Показать();

Написавшего вторую строку вполне можно подозревать в профнепригодности. Не нужно прививать навыки быдлокодерства.
26 TEENAGER
 
06.11.14
17:33
&НаКлиенте
Процедура КнопкаВыполнить(Команда)
    ТабДок = Новый ТабличныйДокумент;
    КнопкаВыполнитьНаСервере(ТабДок);
    ТабДок.Показать();
КонецПроцедуры


&НаСервере
Процедура КнопкаВыполнитьНаСервере(ТабДок)
    ТабДокумент = РеквизитФормыВЗначение("Объект").ПечатьВитя(ТабДок);    
КонецПроцедуры
27 TEENAGER
 
07.11.14
14:15
Коллеги, у меня снова проблема:Метод объекта не обнаружен (Печать)
Вот мой Код в объекте модуля:
28 TEENAGER
 
07.11.14
14:16
Что то я не могу код добавить в сообщение...(
29 Поpyчик-4
 
07.11.14
14:26
(28) Гугл тоже не хочет отвечать на твой ответ?
30 TEENAGER
 
07.11.14
14:28
(29) Да я хотел сюда код вставить, что бы посмотрели чего не хватает, но не могу, ошибки выдает тут, когда код вставляю в сообщение
31 Поpyчик-4
 
07.11.14
14:30
(30) Кому твой быдлокод нужен. Гугл и поиск ничего не говорят?
32 TEENAGER
 
07.11.14
14:31
Почему такая грубость тут? я думал этот форум для помощи....(31)
33 Поpyчик-4
 
07.11.14
14:35
(32) Ога, вот такие и постили раньше портянки в 10 экранов.
34 TEENAGER
 
07.11.14
14:36
В общем гугл поиск помогает конечно, но в данном случае у мне не удается верно создать функцию Печать....(33)
35 TEENAGER
 
07.11.14
14:37
Функция ПечатьВитя(ТабДок) Экспорт
    Табдок = Новый ТабличныйДокумент;
    
    Макет = ПолучитьМакет("ЗаказНаряд");
    СекцияШапка = Макет.ПолучитьОбласть("Шапка");
    СекцияТело = Макет.ПолучитьОбласть("Тело");
    СекцияПодвал = Макет.ПолучитьОбласть("Подвал");
    СекцияЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    СекцияСтрока = Макет.ПолучитьОбласть("Строка");
    СекцияПодвалТаб = Макет.ПолучитьОбласть("ПодвалТаб");
    //Присваиваем параметры и выводим на Печать
    СекцияШапка.Параметры.Организация = СсылкаНаОбъект.Организация;
    СекцияШапка.Параметры.ИНН = СсылкаНаОбъект.Организация.ИНН;
    СекцияШапка.Параметры.КПП = СсылкаНаОбъект.Организация.КПП;
    
    //Получаем номер телефона из табличной част, с помощью индекса (посмотреть индекс: точка останова, ввести выражение в табло, F2)
    Телефон = СсылкаНаОбъект.Организация.КонтактнаяИнформация.Получить(2);
    СекцияШапка.Параметры.НомерТелефона = Телефон.НомерТелефона;
    //Номер телефона
    
    //Номер и дата документа
    СекцияШапка.Параметры.Номер = Прав(СсылкаНаОбъект.Номер,4);
    СекцияШапка.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=ДД");
    
    СекцияШапка.Параметры.Контрагент = СсылкаНаОбъект.Контрагент.Наименование;
    Адрес = СсылкаНаОбъект.Контрагент.КонтактнаяИнформация.Получить(0);
    СекцияШапка.Параметры.Адрес = Адрес.Представление;
    //Необходимо вывести модель, название того, что ремонтируется, обследуется!!!!!!!!!!!!!!!!!!!!!!!!!!
    ТабДок.Вывести(СекцияШапка);
    
    //Получение списка работ, в одну строку через запятую, путем циклического перебота табличной части
    Массив = СсылкаНаОбъект.Работы.Выгрузить();
    Массив2 = Массив.ВыгрузитьКолонку("Номенклатура");
    С = "";    
    Для каждого Строка из Массив2 Цикл
        С = С + Строка+",";
    КонецЦикла;
    
    //Убираем из полученной циклом строки, последний символ.
    Если С <> "" Тогда
        СекцияТело.Параметры.Работы = Сред(С,1,СтрДлина(С)-1);
    Иначе
        СекцияТело.Параметры.Работы = С;
    КонецЕсли;
    ТабДок.Вывести(СекцияТело);
    
    ТабДок.Вывести(СекцияЗаголовок);
    
    //заполняем табличную часть из табличной части домумента
    Для Каждого СтрТаб из Массив Цикл
        ЗаполнитьЗначенияСвойств(СекцияСтрока.Параметры, СтрТаб);
        ТабДок.Вывести(СекцияСтрока);
    КонецЦикла;
    
    //Заполняем подвалТаб
    СекцияПодвалТаб.Параметры.Итог = СсылкаНаОбъект.Работы.Итог("Сумма");
    СекцияПодвалТаб.Параметры.Финиш = Формат(СсылкаНаОбъект.Финиш, "ДЛФ=ДД");
    СекцияПодвалТаб.Параметры.Итог2 = СсылкаНаОбъект.Работы.Итог("Сумма");
    СекцияПодвалТаб.Параметры.ИтогПР = ЧислоПрописью(СсылкаНаОбъект.Работы.Итог("Сумма"),,"рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");
    СекцияПодвалТаб.Параметры.Номер = Прав(СсылкаНаОбъект.Номер,4);
    СекцияПодвалТаб.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=ДД");
    //Типы налога
    Налог = Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДС;
    Если СсылкаНаОбъект.НалогообложениеНДС = Налог Тогда
        СекцияПодвалТаб.Параметры.НДС = "Облагается НДС согласно статье 26.3 НК РФ";
    КонецЕсли;
    
    Нетналог = Перечисления.ТипыНалогообложенияНДС.НеОблагаетсяНДС;
    Если СсылкаНаОбъект.НалогообложениеНДС = Нетналог Тогда
        СекцияПодвалТаб.Параметры.НДС = "Не Облагается НДС согласно статье 26.3 НК РФ";
    КонецЕсли;
    
    Эксп = Перечисления.ТипыНалогообложенияНДС.НаЭкспорт;
    Если СсылкаНаОбъект.НалогообложениеНДС = Эксп Тогда
        СекцияПодвалТаб.Параметры.НДС = "Экспорт (ставка 0%) согласно статье 26.3 НК РФ";
    КонецЕсли;
    
    ТабДок.Вывести(СекцияПодвалТаб);
    
    ТабДок.Вывести(СекцияПодвал);
    Возврат ТабДок;
36 TEENAGER
 
07.11.14
14:38
Ну сам код работает номарльно в отдельности, сюда надо добавить что то что бы работало во внешней печати...
37 ВРедная
 
07.11.14
15:00
Ничего не понятно из твоих сообщений.
Ошибка идет на "метод объекта" Печать, а вызова такого метода нигде нет.

В какой у тебя строке вообще ошибка?
38 Gbpltw
 
07.11.14
15:07
есть мнение, значения параметров получать нужно запросом.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн