|
Сохранения параметров печати табличного документа | ☑ | ||
---|---|---|---|---|
0
Bon Jovi
19.01.22
✎
10:29
|
Добрый день. УТ 10, 8.3, обычные формы.
На форуме подобные темы находил, но решения так и не нашёл. Подскажите пожалуйста, как программно сохранить параметры печати табличного документа для печати наклейки на всех принтерах, компьютерах и из разных мест? Вызываю свою созданную процедуру, в которой создаётся, заполняется и печатается документ из трёх разных мест: через форму документа, через журнал документов и через предпросмотр страницы. На моём компьютере печатается всё хорошо, у нескольких коллег тоже. Также хорошо печатается на одинаковых базах как у меня так и у некоторых коллег. НО, всё же не у всех коллег. К примеру через форму документа печатается всё хорошо, с моим параметрами, а через другие места - параметры не передаются. Попытался найти решение на различных форумах - не получилось. Вот пример когда: Эта процедура находится в модуле объекта документа: Процедура ПечатьЭтикетка(НаПринтер) ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ТабДокумент.ИмяПринтера = ИмяПринтера; ТабДокумент.АвтоМасштаб = Истина; ТабДокумент.РазмерСтраницы = "Custom"; ТабДокумент.ШиринаСтраницы = 80; ТабДокумент.ВысотаСтраницы = 60; ТабДокумент.ПолеСверху = 3; ТабДокумент.ПолеСнизу = 3; ТабДокумент.ПолеСлева = 0; ТабДокумент.ПолеСправа = 0; ТабДокумент.РазмерКолонтитулаСверху = 0; ТабДокумент.РазмерКолонтитулаСнизу = 0; ТабДокумент.КоличествоЭкземпляров = 1; ТабДокумент.Вывод = ИспользованиеВывода.Разрешить; ПараметрыПечати = Новый Структура; ПараметрыПечати.Вставить("НомерДокумента", НомерДокумента); ПараметрыПечати.Вставить("ДатаДокумента", ДатаДокумента); ПараметрыПечати.Вставить("Контрагент", Контрагент); ПараметрыПечати.Вставить("Телефон", Телефон); ПараметрыПечати.Вставить("Доставка", Доставка); ПараметрыПечати.Вставить("Направление", Направление); ПараметрыПечати.Вставить("Адрес", Адрес); ПараметрыПечати.Вставить("Комментарий", Комментарий); Макет = ПолучитьМакет("Этикетка"); ОбластьШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента"); ОбластьШапкаДокумента.Параметры.Заполнить(ПараметрыПечати); ТабДокумент.Вывести(ОбластьШапкаДокумента); ОбластьШапкаКонтрагента = Макет.ПолучитьОбласть("ШапкаКонтрагента"); ОбластьШапкаКонтрагента.Параметры.Заполнить(ПараметрыПечати); ТабДокумент.Вывести(ОбластьШапкаКонтрагента); ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка"; Если НаПринтер Тогда ТабДокумент.Напечатать(); Иначе ФормаПечати = ПолучитьОбщуюФорму("ПечатьДокументов", , Новый УникальныйИдентификатор); ФормаПечати.ОбъектПечати = Ссылка; ФормаПечати.ПечатныйДокумент = ТабДокумент; ФормаПечати.Заголовок = ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект); ФормаПечати.Защита = УправлениеДопПравамиПользователей.ЗащитаТаблиц(); ФормаПечати.Открыть(); КонецЕсли; КонецПроцедуры Эта процедура находится в журнале документов: Процедура ДействияФормыПечатьЭтикетка(Кнопка) ДокументОбъект = Документ.ПолучитьОбъект(); ДокументОбъект.Печать("Этикетка", 1, Истина); КонецПроцедуры P.S. Большая просьба отвечать по существу и по теме, а не засырать тему издёвками. |
|||
1
lodger
19.01.22
✎
10:30
|
P.S. Большая просьба отвечать по существу и по теме, а не засырать тему издёвками. - провоцируешь на обратное.
|
|||
2
Bon Jovi
19.01.22
✎
10:36
|
(1) Процедура ПечатьЭтикетка(НаПринтер) находится в модуле объекта документа, в процедуре Печать().
|
|||
3
lodger
19.01.22
✎
10:44
|
обычно хватало параметра ИмяПараметровПечати
он нигде не сбрасывается? |
|||
4
Bon Jovi
19.01.22
✎
10:50
|
(3) Процедуру ПечатьЭтикетка() я вызываю только при одном условии, если нужно распечатать именно этикетку, и больше ни что с ней не взаимодействует, соответственно, сбрасываться не может, по крайней мере программно я это не выявил. Проблема в том, что ИмяПараметровПечати почему то не применяется в определённом моменте, хотя в ХранилищеСистемныхНастроек запись есть и параметры в ней мои заданы.
|
|||
5
Bon Jovi
19.01.22
✎
10:52
|
И опять же, как тогда объяснить, что у некоторых всё хорошо применяется и распечатывается, а у некоторых нет? Также и с базой. На одной и той же базе у меня всё хорошо, у другого нет.
|
|||
6
Ryzeman
19.01.22
✎
14:48
|
Я сталкивался с подобной проблемой, пришёл к тому, что из 1с всё печатается через ХранилищеСистемныхНастроек. На всё остальное ей пофиг. Для решения своей задачи я удалил программно настройки по нужному мне объекту у пользователей, у которых были косяки, помогло.
|
|||
7
Bon Jovi
20.01.22
✎
11:50
|
В общем решение моей "проблемы" оказалось довольно банальным - пренебрежение значением свойства, а именно "ИмяПринтера". К примеру, на некоторых компьютерах имя принтера было задано как "host\КакоеТоИмяПринтера", а на некоторых "host.local\КакоеТоИмяПринтера". Я передавал в свойство "ИмяПринтера" именно значение "host\КакоеТоИмяПринтера". Так вот на компьютерах, где имена совпадали с переданным мной именем, всё печаталось хорошо, а где иначе - плохо. Возникает вопрос: "Очевидно же, что нужно было проверить сразу название принтеров на каждом компьютере, так почему не проверили?". А не проверили потому, что хоть и имена разные, но на печать документ выводился, то есть функционал выполнялся (частично), вот и пропустили как то этот момент. Как только именна везде подредактировали - всё заработало сразу же. Ну и если всё заработало, то код немного переделали и подогнали под печать стандартных процедур. Спасибо всем за попытки помочь. Тема закрыта.
Функция ПечатьЭтикетка() ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка"; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ТабДокумент.АвтоМасштаб = Ложь; ТабДокумент.ШиринаСтраницы = 82; ТабДокумент.ВысотаСтраницы = 60; ТабДокумент.ПолеСверху = 3; ТабДокумент.ПолеСнизу = 0; ТабДокумент.ПолеСлева = 2; ТабДокумент.ПолеСправа = 0; ТабДокумент.РазмерКолонтитулаСверху = 0; ТабДокумент.РазмерКолонтитулаСнизу = 0; ТабДокумент.МасштабПечати = 100; ТабДокумент.ДвусторонняяПечать = ТипДвустороннейПечати.Нет; ТабДокумент.ЧерноБелаяПечать = Ложь; ТабДокумент.ЭкземпляровНаСтранице = 1; ТабДокумент.ЧередованиеРасположенияСтраниц = ЧередованиеРасположенияСтраниц.НеИспользовать; ТабДокумент.РазборПоКопиям = Ложь; ПараметрыПечати = Новый Структура; ПараметрыПечати.Вставить("НомерДокумента", НомерДокумента); ПараметрыПечати.Вставить("ДатаДокумента", ДатаДокумента); ПараметрыПечати.Вставить("Контрагент", Контрагент); ПараметрыПечати.Вставить("Телефон", Телефон); ПараметрыПечати.Вставить("Доставка", Доставка); ПараметрыПечати.Вставить("Направление", Направление); ПараметрыПечати.Вставить("Адрес", Адрес); ПараметрыПечати.Вставить("Комментарий", Комментарий); Макет = ПолучитьМакет("Этикетка"); ОбластьШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента"); ОбластьШапкаДокумента.Параметры.Заполнить(ПараметрыПечати); ТабДокумент.Вывести(ОбластьШапкаДокумента); ОбластьШапкаКонтрагента = Макет.ПолучитьОбласть("ШапкаКонтрагента"); ОбластьШапкаКонтрагента.Параметры.Заполнить(ПараметрыПечати); ТабДокумент.Вывести(ОбластьШапкаКонтрагента); Возврат ТабДокумент; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |