|
не могу заполнить макет | ☑ | ||
---|---|---|---|---|
0
wwwqwert2014
30.05.13
✎
16:49
|
Хочу заполнить макет при нажатии кнопки Печать и напечатать его.
&НаКлиенте Процедура Печать(Команда) ПолучениеМакета(); // Вставить содержимое обработчика. КонецПроцедуры &НаСервере Процедура ПолучениеМакета() Макет = ПолучитьМакет("Макет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапка.Номер = Объект.Номер; ОбластьШапка.Дата = Объект.Дата; ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); Для Каждого Строка Из Объект.СписокНоменклатуры Цикл ОбластьСтрока.Товар = Строка.Номенклатура; Областьстрока.Стеллаж = "Стеллаж " + Строка.Ячейка.Ряд; Областьстрока.Количество = Строка.Количество; ОбластьСтрока.Цена = Строка.Цена; ОбластьСтрока.Сумма = Строка.Сумма; КонецЦикла; КонецПроцедуры Компилятор пишет, что не знает такой процедуры ПолучитьМакет(). Я ее и на клиенте и на сервере пробовал использовать. Везде ругается.. вот что я нагуглил. у человека вроде бы не ругается компилятор, а у меня ругается подскажите, пожалуйста, что делать |
|||
1
Wobland
30.05.13
✎
16:50
|
чей мает?
|
|||
2
wwwqwert2014
30.05.13
✎
16:51
|
пакет документа РасходнаяНакладная. Задача 1.14 из сборника задач к спецу по платформе
|
|||
3
wwwqwert2014
30.05.13
✎
16:53
|
макет*
|
|||
4
Wobland
30.05.13
✎
16:53
|
(2) а ты где-то сказал в коде об этом?
|
|||
5
Mitriy
30.05.13
✎
16:55
|
Макет = Документы.ЭтотГребаныйДокумент.ПолучитьМакет("Макет");
|
|||
6
Wobland
30.05.13
✎
16:56
|
(5) достаточно будет объекта, если я правильно стелепатировал
|
|||
7
Mitriy
30.05.13
✎
16:56
|
только это должна быть функция, которая будет возвращать табдок, который ты и будешь выставлять напоказ...
|
|||
8
wwwqwert2014
30.05.13
✎
16:56
|
ага. я понял, спасибо.
|
|||
9
Mitriy
30.05.13
✎
16:57
|
(6) не будет... надо будет тащить его на сервер, а оно на фиг надо?
|
|||
10
wwwqwert2014
30.05.13
✎
17:13
|
В макете есть область Шапка, в которой написано:
Расходная накладная № [Номер] от [Дата] Эта область имеет тип: Шаблон. Так как Номер и дата взяты в квадратные скобочки, по идее они теперь должны быть доступны из кода программы. Макет = Документы.РасходнаяНакладная.ПолучитьМакет("Макет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапка.Номер = Объект.Номер; Ругается что нет поля Номер в ОбластьШапка |
|||
11
Wobland
30.05.13
✎
17:14
|
(10) значит, нет
|
|||
12
Wobland
30.05.13
✎
17:14
|
+(11) а в параметрах запросто может оказаться
|
|||
13
ДенисЧ
30.05.13
✎
17:14
|
ОбластьШапка.Параметры.Номер...
|
|||
14
wwwqwert2014
30.05.13
✎
17:15
|
спасибо
|
|||
15
wwwqwert2014
30.05.13
✎
17:28
|
Вроде бы се заполняется и ошибок не выдает. Но только вопрос: как отобразить макет перед печатью, чтобы посмотреть, что там назаполнялось?
|
|||
16
samozvanec
30.05.13
✎
17:30
|
(15) не хочешь ли ты сказать, что каждый раз печатал макет?
|
|||
17
wwwqwert2014
30.05.13
✎
17:31
|
нет, я не печатал еще.
Вот полностью процедуры заполнения макета: Процедура Печать(ТабДок, Ссылка) Экспорт //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать) Макет = Документы.РасходнаяНакладная.ПолучитьМакет("Печать"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладная.СписокНоменклатуры.( | Номенклатура, | Количество, | Цена, | Сумма | ) |ИЗ | Документ.РасходнаяНакладная КАК РасходнаяНакладная |ГДЕ | РасходнаяНакладная.Ссылка В (&Ссылка)"; Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьСписокНоменклатурыШапка = Макет.ПолучитьОбласть("СписокНоменклатурыШапка"); ОбластьСписокНоменклатуры = Макет.ПолучитьОбласть("СписокНоменклатуры"); ОбластьСписокНоменклатуры = Макет.ПолучитьОбласть("СписокСтеллажЯчейка"); ТабДок.Очистить(); ОбластьЗаголовок.Параметры.Номер=Ссылка.Номер; ОбластьЗаголовок.Параметры.Дата=Ссылка.Дата; ТабДок.Вывести(ОбластьЗаголовок); ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабДок.Вывести(ОбластьСписокНоменклатурыШапка); ВыборкаСписокНоменклатуры = Выборка.СписокНоменклатуры.Выбрать(); Пока ВыборкаСписокНоменклатуры.Следующий() Цикл ОбластьСписокНоменклатуры.Параметры.Заполнить(ВыборкаСписокНоменклатуры); ТабДок.Вывести(ОбластьСписокНоменклатуры, ВыборкаСписокНоменклатуры.Уровень()); КонецЦикла; ВставлятьРазделительСтраниц = Истина; КонецЦикла; //}} КонецПроцедуры |
|||
18
Wobland
30.05.13
✎
17:32
|
(15) не отобразить, а показать
|
|||
19
samozvanec
30.05.13
✎
17:32
|
(17) тогда как узнал, что все заполняется, если не печатал и не знаешь, как посмотреть?
|
|||
20
wwwqwert2014
30.05.13
✎
17:33
|
ой. ято-то не то скопировал
|
|||
21
wwwqwert2014
30.05.13
✎
17:33
|
&НаКлиенте
Процедура Печать(Команда) ПолучениеМакета(); // Вставить содержимое обработчика. КонецПроцедуры &НаСервере Процедура ПолучениеМакета() Макет = Документы.РасходнаяНакладная.ПолучитьМакет("Макет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьШапка.Параметры.Номер = Объект.Номер; ОбластьШапка.Параметры.Дата = Объект.Дата; ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура, | РасходнаяНакладнаяСписокНоменклатуры.Количество, | РасходнаяНакладнаяСписокНоменклатуры.Цена, | РасходнаяНакладнаяСписокНоменклатуры.Сумма |ИЗ | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры |ГДЕ | РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи ОбластьСтрока.Параметры.Товар = ВыборкаДетальныеЗаписи.Номенклатура; //Областьстрока.Стеллаж = "Стеллаж " + ВыборкаДетальныеЗаписи.Ячейка.Ряд; Областьстрока.Параметры.Количество = ВыборкаДетальныеЗаписи.Количество; ОбластьСтрока.Параметры.Цена = ВыборкаДетальныеЗаписи.Цена; ОбластьСтрока.Параметры.Сумма = ВыборкаДетальныеЗаписи.Сумма; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА Макет.Показать();//НЕТ РЕЗУЛЬТАТА КонецПроцедуры |
|||
22
samozvanec
30.05.13
✎
17:35
|
(21) заполненные области надо выводить в табличный документ. показывать или печатать тоже надо его
|
|||
23
salvator
30.05.13
✎
17:35
|
Сделай из нее функцию, которая возвращает ТабДок.
На клиенте показывай его. |
|||
24
salvator
30.05.13
✎
17:38
|
Тьфу, блин, там даже табличный документ не инициализирован.
Автор, смотри свой пример, который ты до этого скинул. |
|||
25
Wobland
30.05.13
✎
17:39
|
для обычного:
Процедура КнопкаВыполнитьНажатие(Кнопка) ТабДок=ЭлементыФормы.Вывод; Макет=ПолучитьМакет("Печать"); Область=Макет.ПолучитьОбласть("Заголовок"); ТабДок.Вывести(Область); Область=Макет.ПолучитьОбласть("Строка"); Выборка=Справочники.Номенклатура.Выбрать(); Номер=0; Пока Выборка.Следующий() Цикл Номер=Номер+1; Область.Параметры.Номер=Номер; Область.Параметры.Заполнить(Выборка); ТабДок.Вывести(Область); КонецЦикла; ТабДок.Показать(); КонецПроцедуры |
|||
26
Mitriy
30.05.13
✎
17:41
|
на клиенте:
ТабДок = Печать(); ТабДок.Показать(); |
|||
27
Mitriy
30.05.13
✎
17:43
|
то бишь:
&НаКлиенте Процедура Печать(Команда) ТабДок = ПечатьДока(); ТабДок.Показать(); Функция ПечатьДока() ТабДок=ЭлементыФормы.Вывод; Макет=ПолучитьМакет("Печать"); Область=Макет.ПолучитьОбласть("Заголовок"); ТабДок.Вывести(Область); Область=Макет.ПолучитьОбласть("Строка"); Выборка=Справочники.Номенклатура.Выбрать(); Номер=0; Пока Выборка.Следующий() Цикл Номер=Номер+1; Область.Параметры.Номер=Номер; Область.Параметры.Заполнить(Выборка); ТабДок.Вывести(Область); КонецЦикла; Возврат ТабДок; КонецФункции |
|||
28
Mitriy
30.05.13
✎
17:44
|
ну... ПипецПроцедуре пропустил...
|
|||
29
Mitriy
30.05.13
✎
17:44
|
и &НаСервере...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |