|
Получить во внешнюю печатную форму реквизит общей формы | ☑ | ||
---|---|---|---|---|
0
villiss
12.08.13
✎
12:05
|
УТ 10.3 Печать в доках идет через общую форму ФормаВыбораПечатныхФорм. Как из нее вытащить реквизит НаПринтер во внешнюю печатную форму?
|
|||
1
Godofsin
12.08.13
✎
12:15
|
Печать идет через процедуры в модуле объекта документа
|
|||
2
villiss
12.08.13
✎
12:20
|
Ну да, я понимаю. Может неудачно объяснила... У меня в модуле объекта во внешней обработке:
СчетФактура = УчетНДС.НайтиПодчиненныйДокумент(СсылкаНаОбъект, "СчетФактураВыданный"); Реализация=СсылкаНаОбъект.ПолучитьОбъект(); Реализация.Печать("ТОРГ12", 1, Ложь); ОбъектСФ=СчетФактура.ПолучитьОбъект(); ОбъектСФ.Печать("СчетФактура1137", 1, Ложь); Вместо Ложь хочу значение реквизита НаПринтер. Как? |
|||
3
Defender aka LINN
12.08.13
✎
12:22
|
(2) ОбъектСФ.Печать("СчетФактура1137", 1, НаПринтер), не?
|
|||
4
villiss
12.08.13
✎
12:25
|
(3) Шутка? Я так тоже умею.
|
|||
5
Defender aka LINN
12.08.13
✎
12:27
|
(4) Какие уж тут шутки.
|
|||
6
villiss
12.08.13
✎
12:32
|
(5) Мне тоже в общем-то невесело. Моя внешняя обработка формирует комплект документов, часть из других внешних обработок через Табличный документ (с ними все ок), часть стандартных из УТ. Вот с ними проблема. Реквизит НаПечать - НЕ МОЙ, его значение мне надо получить.
|
|||
7
villiss
12.08.13
✎
12:33
|
(6) блин, НаПринтер.
|
|||
8
Godofsin
12.08.13
✎
12:37
|
(7) НаПринтер - переменная, отвечающая за то, будет ли выведена печ. форма на экран или сразу на принтер. Его не надо получать, его надо устанавливать
|
|||
9
Godofsin
12.08.13
✎
12:39
|
ОбъектСФ.Печать("СчетФактура1137", 1, Ложь);
Вот это должно оправить сразу на печать, если есть принтер по умолчанию |
|||
10
Godofsin
12.08.13
✎
12:39
|
+(9) Тьфу, то есть на экран
|
|||
11
villiss
12.08.13
✎
12:40
|
(8) Да, да, в этом и проблема. В документе пользователь выставляет или не выставляет флаг На принтер. Необходима реакция на его действия.
|
|||
12
Godofsin
12.08.13
✎
12:41
|
(11) Ты перехватываешь события ФормаВыбораПечатныхФорм?
|
|||
13
villiss
12.08.13
✎
12:41
|
(11) а так ОбъектСФ.Печать("СчетФактура1137", 1, Ложь); я сделала просто для отладки.
|
|||
14
villiss
12.08.13
✎
12:42
|
(12) Не знаю как ((
|
|||
15
Godofsin
12.08.13
✎
12:42
|
Короче, в своей обработке заводищь галку "НаПринтер" и подсовываешь ее в процедуру "Печать" модуля объекта
|
|||
16
villiss
12.08.13
✎
12:48
|
(15) в своей не хочется, есть же в ФормеВыбораПечатныхФорм. Как событие перехватить?
|
|||
17
Godofsin
12.08.13
✎
12:49
|
(16) "Достижения (опыт): Умею прикидываться глупой блондинкой."
Ты сейчас прикидываешься? |
|||
18
Godofsin
12.08.13
✎
12:50
|
Ты документы распечатать хочешь из обработки?
|
|||
19
villiss
12.08.13
✎
12:50
|
(17) Я сейчас серьезна как никогда. Вероятно, просто туплю.
|
|||
20
Godofsin
12.08.13
✎
12:51
|
(19) Ответь на (18)
|
|||
21
villiss
12.08.13
✎
12:53
|
(18) Попытаюсь еще раз. Я подсоединяю свою внешнюю печатную форму. При нажатии на кнопку Печать в документе она появляется в списке вместе со стандартными, там же есть флаг На печать. Вот он мне и нужен
|
|||
22
villiss
12.08.13
✎
12:55
|
(21) Откройте УТ, посмотрите.
|
|||
23
Godofsin
12.08.13
✎
12:55
|
(21) Один воппрос: Нахера? Что ты с этим флагом потом делать будешь?
|
|||
24
Godofsin
12.08.13
✎
12:56
|
(22) Я знаю как устроена печать документов в УТ
|
|||
25
Godofsin
12.08.13
✎
12:57
|
(21) "Моя внешняя обработка формирует комплект документов, часть из других внешних обработок через Табличный документ (с ними все ок), часть стандартных из УТ. Вот с ними проблема."
Твом слова? |
|||
26
villiss
12.08.13
✎
12:59
|
(23)(25)В моей внешней печатной форме 6 доков - 4 относятся к другим моим внешним печатным формам и по ним идет реакция на флаг На принтер без моего участия, а по коду которой я привела, естественно, нет. Вот сюда мне нужно это нахера...
|
|||
27
Масянька
12.08.13
✎
13:03
|
(25) (26) "Начальник! Скажи в чем моя вина" (С) "Иван Васильевич меняет профессию"
PS Почитала ваши посты :))))) |
|||
28
Godofsin
12.08.13
✎
13:04
|
Выкладывай свою печ. форму на 6 доков, что - то ты ерунду какую-то пишешь. Не пойму тебя.
|
|||
29
Godofsin
12.08.13
✎
13:06
|
НаПринтер = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ПечатьДокументовБезПредварительногоПросмотра") = Истина;
|
|||
30
Godofsin
12.08.13
✎
13:06
|
Это из процедуры ПриОткрытии() ФормаВыбораПечатныхФорм
|
|||
31
villiss
12.08.13
✎
13:08
|
Кусок по остальным внешним выкинула, чтобы не загромождать
Функция Печать() Экспорт СчетФактура = УчетНДС.НайтиПодчиненныйДокумент(СсылкаНаОбъект, "СчетФактураВыданный"); Реализация=СсылкаНаОбъект.ПолучитьОбъект(); Реализация.Печать("ТОРГ12", 1, Ложь); ОбъектСФ=СчетФактура.ПолучитьОбъект(); ОбъектСФ.Печать("СчетФактура1137", 1, НаПринтер); ИмяМакета=Справочники.ВнешниеОбработки.НайтиПоНаименованию("Счет АТС подпись из заказа"); Заказ=СсылкаНаОбъект.Сделка; ДвоичныеДанные = ИмяМакета.ХранилищеВнешнейОбработки.Получить(); ТабДокумент = Неопределено; ИмяФайла = ПолучитьИмяВременногоФайла("epf"); Попытка ДвоичныеДанные.Записать(ИмяФайла); Обработка = ВнешниеОбработки.Создать(ИмяФайла); Обработка.СсылкаНаОбъект = Заказ; ТабДокумент = Обработка.Печать(); УдалитьФайлы(ИмяФайла); Если ТипЗнч(ТабДокумент) = Тип("ТабличныйДокумент") И (ПустаяСтрока(ТабДокумент.ИмяПараметровПечати)) Тогда Попытка ИдентификаторОбработки = Строка(ИмяМакета.УникальныйИдентификатор()); ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_" + СтрЗаменить(ИдентификаторОбработки, "-", "_"); ТабДокумент.ИмяПараметровПечати = ТабДокумент.ИмяПараметровПечати + "_" + Заказ.Метаданные().Имя; Исключение КонецПопытки; КонецЕсли; Исключение ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(),, "Не удалось сформировать внешнюю печатную форму!"); КонецПопытки; Возврат ТабДокумент; КонецФункции; |
|||
32
villiss
12.08.13
✎
13:10
|
(30) это я в курсе, при открытии флаг На принтер становится как в настройках пользователя Печать без предварительного просмотра. НО пользователь может поменять его значение уже в форме.
|
|||
33
villiss
12.08.13
✎
13:13
|
(31) в коде НаПринтер естественно не работает
|
|||
34
Godofsin
12.08.13
✎
13:16
|
(32) "НО пользователь может поменять его значение уже в форме"
Ну и? Пользователь меняет флаг интерактивно, на 1 раз, установленное значение НИГДЕ не сохраняется. В приведенном тобой коде ты нигде не вызываешь общую форму выбора печатной формы. Внимание, вопрос: Откуда тогда ты хочешь вытащить переменную "НаПринтер"? |
|||
35
villiss
12.08.13
✎
13:20
|
(34) Именно это я и хочу. Как мне ее вызвать с текущим значением?
|
|||
36
Godofsin
12.08.13
✎
13:20
|
Вообщем, задача твоя неясна. Если ты делаешь обработку для печати пачек документов, то тут одназначно (15). Если ты вдруг хочешь из своей обработки для каждой ПФ вызывать общую форму выбора, то это бред.
|
|||
37
Godofsin
12.08.13
✎
13:21
|
(35) Мля, да нету у нее текущего значения!!! Значение устанавливается при открытии из настроек пользователя. Все.
|
|||
38
villiss
12.08.13
✎
13:22
|
Ладно, сдаюсь. Спасибо за попытки помочь...
|
|||
39
Godofsin
12.08.13
✎
13:22
|
Мля, может это я тупой, но я так и не понял на кой хер тебе сдалась эта общая форма и ее реквизит
|
|||
40
Godofsin
12.08.13
✎
13:24
|
(38) Сдаваться не по-русски =)
|
|||
41
Масянька
12.08.13
✎
13:25
|
(38) Ты опиши словами, чего хочешь-то? Типа, запустил обработку, нажал кнопку "Печать" и ....
|
|||
42
villiss
12.08.13
✎
13:29
|
(41) Попытаюсь в последний раз.....
Моя внешняя печатная форма формирует комплект документов. Через сервис - Внешние печатные формы я ее подсоединяю к документу Реализация товаров услуг. В документе по кнопке печать вываливается список стандартных доков на печать + мой комплект. Там же есть флаг На Печать (не мой!). Пользователь иногда хочет сразу весь комплект на принтер, иногда перед печатью посмотреть. Ну, нравится ему это флаг. Нужна реакция. Вот. |
|||
43
Масянька
12.08.13
✎
13:31
|
(42) То есть, речь идет о стандартной кнопке "Печать" на панели меню?
|
|||
44
villiss
12.08.13
✎
13:32
|
(43) ДА!!!
|
|||
45
Масянька
12.08.13
✎
13:35
|
(44) Ну, слава Богу!
Как вариант - сделай две кнопки: "Печать" (сразу печать без просмотра) и "Печать с просмотром" (выводить на просмотр). |
|||
46
villiss
12.08.13
✎
13:38
|
(45) как вариант - принимаю. Спасибо.
|
|||
47
sanja26
12.08.13
✎
13:44
|
(45) семерочник до мозга костей
|
|||
48
Масянька
12.08.13
✎
13:49
|
(47) Предложи 8-чный вариант.
|
|||
49
Godofsin
12.08.13
✎
13:52
|
В общем модуле "УниверсальныеМеханизмы":
///////////////////////////////////////////////////// Процедура ОткрытьФормуВыбораПечатныхФормОбъекта(Объект, ФормаВладелец) Экспорт // Открыть форму выбора печатных форм Форма = ПолучитьОбщуюФорму("ФормаВыбораПечатныхФорм", ФормаВладелец, Объект); Если Форма.ОткрытьМодально() <> Истина Тогда Возврат; КонецЕсли; // Печать макета объекта Для каждого СтрокаКнопки Из Форма.ЭлементыФормы.ДеревоМакетовПечати.ВыделенныеСтроки Цикл Расшифровка = СтрокаКнопки.Расшифровка; Если ТипЗнч(Расшифровка) = Тип("Структура") и Расшифровка.ВидПечатнойФормы = Перечисления.ВидыДополнительныхВнешнихОбработок.ПечатнаяФорма Тогда ТабДокумент = НапечататьВнешнююФорму(Объект.Ссылка, Расшифровка, НаПринтер); ЭтоДокумент = Метаданные.Документы.Содержит(Объект.Метаданные()); НапечататьДокумент(ТабДокумент, 0, Форма.НаПринтер, ?(ЭтоДокумент, ОбщегоНазначения.СформироватьЗаголовокДокумента(Объект), Строка(Объект)), Объект.Ссылка, Расшифровка); Иначе Объект.Печать(Расшифровка, 0, Форма.НаПринтер); КонецЕсли; КонецЦикла; КонецПроцедуры УниверсальныеМеханизмы.НапечататьВнешнююФорму(Ссылка, ИсточникМакета, НаПринтер) Экспорт ДвоичныеДанные = ИсточникМакета.СсылкаНаВнешнююОбработку.Принадлежность[ИсточникМакета.НомерСтроки - 1].ХранилищеВнешнейОбработки.Получить(); Если ДвоичныеДанные = Неопределено Тогда ДвоичныеДанные = ИсточникМакета.СсылкаНаВнешнююОбработку.ХранилищеВнешнейОбработки.Получить(); КонецЕсли; ДополнительныеПараметры = ИсточникМакета.СсылкаНаВнешнююОбработку.Принадлежность[ИсточникМакета.НомерСтроки - 1].ДополнительныеПараметрыОбработки.Получить(); Если ДвоичныеДанные = Неопределено Тогда Возврат Неопределено; КонецЕсли; ТабДокумент = Неопределено; ИмяФайла = ПолучитьИмяВременногоФайла("epf"); Попытка ДвоичныеДанные.Записать(ИмяФайла); Обработка = ВнешниеОбработки.Создать(ИмяФайла); Обработка.СсылкаНаОбъект = Ссылка; // Передать внешней обработке дополнительные параметры Если ДополнительныеПараметры <> Неопределено Тогда // Если у внешней обработки есть реквизит для дополнительных параметров, присвоить ему значение Если НЕ Обработка.Метаданные().Реквизиты.Найти("ДополнительныеПараметры") = Неопределено Тогда Обработка.ДополнительныеПараметры = ДополнительныеПараметры; КонецЕсли; КонецЕсли; ТабДокумент = Обработка.Печать(НаПринтер); УдалитьФайлы(ИмяФайла); Если ТипЗнч(ТабДокумент) = Тип("ТабличныйДокумент") И (ПустаяСтрока(ТабДокумент.ИмяПараметровПечати)) Тогда Попытка ИдентификаторОбработки = Строка(ИсточникМакета.СсылкаНаВнешнююОбработку.УникальныйИдентификатор()); ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_" + СтрЗаменить(ИдентификаторОбработки, "-", "_"); ТабДокумент.ИмяПараметровПечати = ТабДокумент.ИмяПараметровПечати + "_" + Ссылка.Метаданные().Имя; Исключение КонецПопытки; КонецЕсли; Исключение ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(),, "Не удалось сформировать внешнюю печатную форму!"); КонецПопытки; Возврат ТабДокумент; КонецФункции //////////////////////////////////////////////// В твоей "обработке": Функция Печать(НаПринтер = Ложь); Получишь значение переменной в свою обработку |
|||
50
Godofsin
12.08.13
✎
13:54
|
+(49) Не проверял, на вскидку.
|
|||
51
sanja26
12.08.13
✎
13:54
|
(48) есть парметры печати, есть передача значений параметров в универсальные процедуры. тс вообще в какой-то истерике, путается в показаниях
|
|||
52
Масянька
12.08.13
✎
13:56
|
(51) Тс в (42) описал задачу - 8-чный вариант?
|
|||
53
villiss
12.08.13
✎
14:03
|
(52) да
|
|||
54
villiss
12.08.13
✎
14:08
|
(49) проверила. не работает
|
|||
55
sanja26
12.08.13
✎
15:03
|
(54) что проверила? так?
СчетФактура = УчетНДС.НайтиПодчиненныйДокумент(СсылкаНаОбъект, "СчетФактураВыданный"); Реализация=СсылкаНаОбъект.ПолучитьОбъект(); Реализация.Печать("ТОРГ12", 1, Реализация.НаПринтер); ОбъектСФ=СчетФактура.ПолучитьОбъект(); ОбъектСФ.Печать("СчетФактура1137", 1, СчетФактура.НаПринтер); |
|||
56
sanja26
12.08.13
✎
15:06
|
(55) хотя не то. запутала совсем
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |