|   |   | 
| 
 | Внешняя обработка, кнопки печати... помогите обойти ошибку | ☑ | ||
|---|---|---|---|---|
| 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С механизм подменю     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |