|
Внешняя обработка, кнопки печати... помогите обойти ошибку | ☑ | ||
---|---|---|---|---|
0
shock3r
26.10.12
✎
10:53
|
Взял код для установок кнопок печати макетов из документа командировочные удостоверения. Всё хорошо, но код написан для Документа, а у меня внешняя обработка, кнопки выводятся но при нажатии на Печать, вызывается след процедура:
Процедура ОсновныеДействияФормыПечатьПоУмолчанию(Кнопка) РаботаСДиалогами.ПечатьПоДополнительнойКнопке(мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка.Текст); КонецПроцедуры в функции ПечатьПоДополнительнойКнопке получаю ошибку: {ОбщийМодуль.РаботаСДиалогами.Модуль(3016)}: Поле объекта не обнаружено (Ссылка) ДеревоМакетовПечати = ПолучитьДеревоМакетовПечати(Объект.Ссылка, СтруктураВнутреннихПечатныхФорм); // Процедура - обработчик нажатия любой из дополнительных кнопок печати // Параметры: // ДеревоМакетов: ДеревоЗначений, макетов печатных форм // Объект : ДокументОбъект, СправочникОбъект, из формы которого вызвана процедура // Форма : Форма, вызвавшая процедуру // ТекстКнопки : Строка, заголовок нажатой кнопки Процедура ПечатьПоДополнительнойКнопке(УдалитьДеревоМакетов, Объект, Форма = Неопределено, ТекстКнопки) Экспорт Если НЕ Форма = Неопределено Тогда Если НЕ РаботаСДиалогами.ПроверитьМодифицированностьВФорме(Объект,Форма) Тогда Возврат; КонецЕсли; КонецЕсли; Попытка СтруктураВнутреннихПечатныхФорм = Объект.ПолучитьСтруктуруПечатныхФорм() Исключение СтруктураВнутреннихПечатныхФорм = Новый Структура; КонецПопытки; ДеревоМакетовПечати = ПолучитьДеревоМакетовПечати(Объект.Ссылка, СтруктураВнутреннихПечатныхФорм); СтрокаКнопки = ДеревоМакетовПечати.Строки.Найти(ТекстКнопки,"Текст"); Если СтрокаКнопки = Неопределено Тогда Предупреждение("Печать не доступна. Изменился набор реквизитов!"); Возврат; КонецЕсли; НаПринтер = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ПечатьДокументовБезПредварительногоПросмотра") = Истина; Расшифровка = СтрокаКнопки.Расшифровка; Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда ТабДокумент = НапечататьВнешнююФорму(Объект.Ссылка, Расшифровка); УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, 0, НаПринтер, СформироватьЗаголовокДокумента(Объект), Объект.Ссылка); Иначе Объект.Печать(СтрокаКнопки.Имя, 0, НаПринтер); КонецЕсли; КонецПроцедуры // ПечатьПоДополнительнойКнопке() |
|||
1
hunter76
26.10.12
✎
10:56
|
РаботаСДиалогами.ПечатьПоДополнительнойКнопке(мДеревоМакетов, ЭтотОбъект, ЭтаФорма, Кнопка.Текст);
вместо "ЭтотОбъект" надо документ передавать |
|||
2
Cube
26.10.12
✎
10:56
|
(0) "ДеревоМакетовПечати = ПолучитьДеревоМакетовПечати(Объект.Ссылка, СтруктураВнутреннихПечатныхФорм);"
У обработки есть ссылка? |
|||
3
Ayvengo
26.10.12
✎
10:59
|
(0) в отладчике глянь, от куда он хочет брать ссылку и правильно передавай. Если тонкий клиент, тогда ЭтотОбъект - такого нет в модулях форм.
|
|||
4
shock3r
26.10.12
✎
11:00
|
(1) т.е. для внешней обработки этот код никак не подойдет?
(2) я не знаю есть ли у внешней обработки ссылка, поэтому и спрашиваю у более опытных программистов на форуме |
|||
5
Ayvengo
26.10.12
✎
11:00
|
(4) внешняя обработка печати ... должен быть реквизит СсылкаНаОбъект, попробуй ее и передавать.
|
|||
6
hunter76
26.10.12
✎
11:01
|
(4) если у тебя на форме выбирается документ, то можно передать ЭтотОбъект.МойВыбранныйДокумент
|
|||
7
Cube
26.10.12
✎
11:03
|
(4) "я не знаю есть ли у внешней обработки ссылка" - НЕТУ. Рисуй кнопки вручную, не мудри.
|
|||
8
Ayvengo
26.10.12
✎
11:04
|
(7) совет китайского кода? :) Зачем рисовать кнопки, если есть внешние печатные формы?
|
|||
9
shock3r
26.10.12
✎
11:04
|
(5) можно немного подробнее, если вас не затруднит, использовать другую функцию? Для внешних обработок своя функция печати?
|
|||
10
shock3r
26.10.12
✎
11:04
|
(7) макетов может быть от 4 до overмного... так что вручную не вариант
|
|||
11
Ayvengo
26.10.12
✎
11:05
|
Если я правильно понял, тебе нужно подключить внешнюю печатную форму? Если так, тогда читай:
Внешняя печатная форма. Внешняя обработка, содержащая: Необязательный реквизит «ДополнительныеПараметры» произвольного типа, которому будут передаваться дополнительные параметры примитивного типа в виде структуры. Реквизит «СсылкаНаОбъект», в который при вызове будет передана ссылка на объект, для которого необходимо выполнить печать. Функция «Печать()» - без параметров, возвращающая табличный документ. Также обработка может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки» и состоящий из 2-х колонок («полное имя метаданного» и «имя табличной части»). |
|||
12
shock3r
26.10.12
✎
11:05
|
(6) да у меня есть поле ввода, в котором выбирается документ..
Поле называется Документ, в нем стоит ссылка на Документы.ОтчетПроизводстваЗаСмену |
|||
13
Cube
26.10.12
✎
11:06
|
(8) и (10) Вы, видимо не догоняете: ему надо прикрутить печатную форму к обработке. Что там в обработке происходит - никто не знает, но стандартный код в чистом виде не отработает. Это факт.
|
|||
14
Ayvengo
26.10.12
✎
11:07
|
(9) а вообще, хорошо бы знать что за конфигурация у тебя и платформа :)
|
|||
15
Ayvengo
26.10.12
✎
11:08
|
(13) т.е. это что-то вроде печати пакет документов?
|
|||
16
Cube
26.10.12
✎
11:09
|
(15) Хз что там у него, он же не говорит :)
|
|||
17
shock3r
26.10.12
✎
11:09
|
(6) не прокатило. Выдает сообщение: "Печать недоступна. Изменился набор реквизитов"
|
|||
18
Ayvengo
26.10.12
✎
11:10
|
(17) что у тебя за платформа, конфигурация, под какой клиент делаешь обработку? :)
|
|||
19
Ayvengo
26.10.12
✎
11:11
|
(17) ты хочешь сделать что-то вроде печати пакета документов или как?
|
|||
20
hunter76
26.10.12
✎
11:11
|
(17) надо сделать по образу и подобию внеш.печатной формы
|
|||
21
shock3r
26.10.12
✎
11:12
|
(13) Мне нужно на внешнюю обработку, повесить кнопки печати, которые будут печатать макеты этой обработки... Сейчас при нажатии на кнопку печать по умолчанию, должен вызываться макет1, в котором написано hello word, но пока этого не происходит из-за косяка со "Ссылкой"
|
|||
22
shock3r
26.10.12
✎
11:13
|
(14) платформа 8.2, конфигурация: бухгалтерия для беларуси 1.6
|
|||
23
shock3r
26.10.12
✎
11:13
|
(18) Толстый клиент
|
|||
24
shock3r
26.10.12
✎
11:15
|
(19) нет, я хочу сделать печать этикеток, данные берутся из документа ОтчетПроизводстваЗаСмену. У меня уже обработка забивает табличную часть нужными данными осталось только реализовать вывод макета
|
|||
25
Ayvengo
26.10.12
✎
11:17
|
(24) а от куда хочешь печатать? Из самого документа или открывать обработку?
|
|||
26
Ayvengo
26.10.12
✎
11:19
|
(24) на сколько я вижу, тебе нужно сделать 2 обработку. Одна заполнения, далее запись документа. После записи печать внешней формы. Используй внешние обработки. Нажми на кнопку справка в окне, где добавляются внешние обработки и почитай что необходимо сделать.
|
|||
27
Cube
26.10.12
✎
11:33
|
shock3r И зачем ты всю эту фигню мутишь тогда? Делаешь на форме обработки кнопку, а процедура этой кнопки выглядеть должна, примерно, так:
Макет = ПолучитьМакет("МойМакет"); ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.Вывести(Макет); ТабДокумент.Показать(); |
|||
28
shock3r
26.10.12
✎
11:39
|
(27) а если макетов будет 10 штук? 10 кнопок делать?
|
|||
29
shock3r
26.10.12
✎
11:40
|
(27) в той реализации которую я видел - вылазит менюшка, которая легко программируется при добавлении макетов
|
|||
30
Cube
26.10.12
✎
11:40
|
(28) Подменю печати и вперде...
|
|||
31
Ayvengo
26.10.12
✎
11:40
|
(28) а визуально это будет 10 кнопок или 1 кнопка, которая фиг знает по каким параметрам выбирать макет? :)
|
|||
32
shock3r
26.10.12
✎
11:42
|
(25) печатать из самой обработки. Т.е. в обработке открывается документ: отчет производства за смену, в него копируются данные, и по его макетам печатаются этикетки
|
|||
33
Ayvengo
26.10.12
✎
11:42
|
(29) проще сделать свою реализацию построения менюшки, чем использовать этот перегруженный механизм.
|
|||
34
Cube
26.10.12
✎
11:42
|
(29) Тот типовой механизм не трогай. С твоими знаниями - не взлетит. Сделай просто, для начала. А потом будешь думать, надо сделать по-другому или нет.
|
|||
35
shock3r
26.10.12
✎
11:47
|
(33)
(34) Понял, вообщем не буду лезть в этот механизм, буду делать через кнопки, как вы и советуете |
|||
36
shock3r
26.10.12
✎
11:48
|
(33) а сделать свою реализацию очень сложно? В какую сторону копать? разбирать тот код, который для документов реализован?
|
|||
37
Cube
26.10.12
✎
11:50
|
(36) "а сделать свою реализацию очень сложно?"
См. (27). Всё просто. |
|||
38
Ayvengo
26.10.12
✎
11:53
|
(35) так а этот механизм и делает кнопки :) Просто ты сам можешь написать легкий код на те макеты, которые тебе нужны. Зачем обращаться в эту жуткую среду стандартных подсистем :D
(36) берешь массив или список значений или тз своих печатных форм и добавляешь кнопки перед открытием формы :) На кнопку назначаешь процедуру, которая будет вызывать функцию печать из модуля объекта и передавать туда имя макета, а в процедуре печати будешь проверять если имя макета, то возвращать табдок такой-то и т.д. А далее можешь воспользоваться стандартной формой вывода печатных форм, что бы не настраивать все самому :) |
|||
39
shock3r
26.10.12
✎
12:07
|
(38) спасибо, не буду тогда время тратить на реализованный в 1С механизм подменю
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |