|
Не печатается печатная форма | ☑ | ||
---|---|---|---|---|
0
werik
17.12.13
✎
18:24
|
Прошу помощи у опытных программистов. Конфа «Трактиръ: Head-Office», вер. 1.0 (1.0.19.05)
У обработки с двух форм идет оправка на печать. На первой форме это список документов, а на второй это событие "при записи" в создании документа. На первой форме все норм. Выводится печатная форма, можно выбрать "распечатать" и все остальное(http://s019.radikal.ru/i626/1312/70/2fc8a5b7761a.jpg). А со второй форма выводится каким-то маленьким окном,кнопки "свернуть"(http://s020.radikal.ru/i712/1312/37/2ddad9e5ddb7.jpg),справа вверху,нет. Причем при попытке нажать "Печать" форма сразу становится неактивным и кнопки сразу становятся серыми(http://i024.radikal.ru/1312/57/d2fb4614d0ae.jpg) и распечатать нельзя. Если прописать сразу отправку на печать все норм, а вот вывод кривой. Первый вариант кода, когда выводится все норм: Процедура ПечатьНажатие(Элемент) КоличествоЭкземпляров = 1; НаПринтер = Ложь; ИмяПринтера = Неопределено; Тов = ЭлементыФормы.Продажи.ТекущаяСтрока; ссылка=Тов.Документ.Ссылка; если тов.ОткудаС=тов.КудаC тогда ТабДокумент = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Продажи"); ОбластьМакета = Макет.ПолучитьОбласть("Дата"); ОбластьМакета.Параметры.Дата = Тов.Дата; ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Время"); ОбластьМакета.Параметры.Время = Тов.Время; ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Позиции"); //Для Каждого Поз из Тов Цикл // Результ = Тов.Документ.Товары.Выгрузить(); Для каждого позиц из Результ цикл ОбластьМакета.Параметры.Позиции = позиц.номенклатура; ОбластьМакета.Параметры.Кол = позиц.Количество; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); ТабДокумент.Вывести(ОбластьМакета); НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, Ссылка, Ссылка.Автор, ИмяПринтера); //ТабДокумент.Показать(); иначе ИмяМакета = "Накладная"; Макет=Обработки.РабочееМестоПроизводства.ПолучитьМакет("Накладная"); ТабДокумент=Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Накладная"; Шапка=Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.Цех=Тов.ОткудаС; Шапка.Параметры.ЦехПолучатель=Тов.КудаC; ТабДокумент.Вывести(Шапка); Надпись="Накладная № "+Тов.Документ.Номер+" от "+Тов.Дата; Заголовок1=Макет.ПолучитьОбласть("Заголовок"); заголовок1.Параметры.НакладнаяСДанными=Надпись; ТабДокумент.Вывести(Заголовок1); Макушка=Макет.ПолучитьОбласть("МакушкаТаблицы"); ТабДокумент.Вывести(Макушка); ном=0; Для Каждого Стр из Тов.Документ.Товары цикл ном=ном+1; Табл=Макет.ПолучитьОбласть("Тело"); Табл.Параметры.Ном=Ном; Табл.Параметры.Наим=Стр.Номенклатура; Табл.Параметры.Колво=Стр.Количество; ТабДокумент.Вывести(Табл); КонецЦикла; НизНакладной=Макет.ПолучитьОбласть("Подвал"); ТабДокумент.Вывести(НизНакладной); НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, Ссылка, Ссылка.Автор, ИмяПринтера); //ТабДокумент.Показать(); конецесли; КонецПроцедуры Второй вариант когда выводится неправильно:тело-ссылка на документ процедура произвестипечать(тело) Если тело.Склад=тело.СкладПолучатель тогда КоличествоЭкземпляров = 1; НаПринтер = Ложь; ИмяПринтера = Неопределено; ТабДокумент = Новый ТабличныйДокумент; документ=тело; ссылка=Документ.Ссылка; Макет = ПолучитьМакет("Продажи"); ОбластьМакета = Макет.ПолучитьОбласть("Дата"); ОбластьМакета.Параметры.Дата = тело.Дата; ТабДокумент.Вывести(ОбластьМакета); датанов=тело.Дата; датаном=Формат('20020820153309', "ДЛФ=В"); Время = Макет.ПолучитьОбласть("Время"); Время.Параметры.Время =датаном; ТабДокумент.Вывести(Время); //Позиции = Макет.ПолучитьОбласть("Позиции"); //Для Каждого Поз из Тов Цикл // Для каждого позиц из тело.товары цикл Позиции = Макет.ПолучитьОбласть("Позиции"); Позиции.Параметры.Позиции = позиц.номенклатура; Позиции.Параметры.Кол = позиц.Количество; ТабДокумент.Вывести(Позиции); КонецЦикла; Подвал = Макет.ПолучитьОбласть("Подвал"); ТабДокумент.Вывести(Подвал); НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, Ссылка, Ссылка.Автор, ИмяПринтера); //ТабДокумент.Показать(); //табдокумент.Напечатать(ИмяПринтера="\\srv01\Canon_MF3200"); Иначе документ=тело; КоличествоЭкземпляров = 1; НаПринтер = Ложь; ИмяПринтера = Неопределено; ссылка=Документ.ссылка; ИмяМакета = "Накладная"; Макет=Обработки.РабочееМестоПроизводства.ПолучитьМакет("Накладная"); ТабДокумент=Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Накладная"; Шапка=Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.Цех=тело.Склад; Шапка.Параметры.ЦехПолучатель=тело.СкладПолучатель; ТабДокумент.Вывести(Шапка); Надпись="Накладная № "+тело.Номер+" от "+тело.Дата; Заголовок1=Макет.ПолучитьОбласть("Заголовок"); заголовок1.Параметры.НакладнаяСДанными=Надпись; ТабДокумент.Вывести(Заголовок1); Макушка=Макет.ПолучитьОбласть("МакушкаТаблицы"); ТабДокумент.Вывести(Макушка); ном=0; Для Каждого Стр из тело.товары цикл ном=ном+1; Табл=Макет.ПолучитьОбласть("Тело"); Табл.Параметры.Ном=Ном; Табл.Параметры.Наим=Стр.Номенклатура; Табл.Параметры.Колво=Стр.Количество; ТабДокумент.Вывести(Табл); КонецЦикла; НизНакладной=Макет.ПолучитьОбласть("Подвал"); ТабДокумент.Вывести(НизНакладной); НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, Ссылка, Ссылка.Автор, ИмяПринтера); //табдокумент.Напечатать(ИмяПринтера="\\srv01\Canon_MF3200"); табдокумент.Напечатать(); конецесли; конецпроцедуры Функция печати в общем модуле выглядит так: Процедура НапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = "", Автор = Неопределено, ИмяПринтера = Неопределено, ВыводитьКолонтитулы = Истина) Экспорт Если ПечДокумент = Неопределено тогда Возврат; КонецЕсли; // Получить необходимое количество копий Если КоличествоЭкземпляров < 1 Тогда ПечДокумент.КоличествоЭкземпляров = 1; Иначе ПечДокумент.КоличествоЭкземпляров = КоличествоЭкземпляров; КонецЕсли; Если ИмяПринтера <> Неопределено Тогда ПечДокумент.ИмяПринтера = ИмяПринтера; КонецЕсли; Если НЕ ПечДокумент.АвтоМасштаб И ЗначениеНеЗаполнено(ПечДокумент.ИмяПринтера) Тогда ПечДокумент.АвтоМасштаб = Истина; КонецЕсли; Если ВыводитьКолонтитулы Тогда ПечДокумент.НижнийКолонтитул.Выводить = Истина; ПечДокумент.НижнийКолонтитул.ТекстВЦентре = "[&НомерСтраницы]/[&СтраницВсего]"; ПечДокумент.НижнийКолонтитул.Шрифт = Новый Шрифт(ПечДокумент.НижнийКолонтитул.Шрифт,,6,,Истина); ПечДокумент.ВерхнийКолонтитул.Выводить = Истина; ПечДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2; ПечДокумент.РазмерКолонтитулаСверху = 5; ПечДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Верх; ПечДокумент.ВерхнийКолонтитул.ТекстВЦентре = Заголовок; ПечДокумент.ВерхнийКолонтитул.Шрифт = Новый Шрифт(ПечДокумент.НижнийКолонтитул.Шрифт,,6); Если ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийТО, "ВыводитьАвтораВКолонтитулеПечатныхФорм") Тогда Если Автор <> Неопределено Тогда ПечДокумент.НижнийКолонтитул.ТекстСправа = СокрЛП(Автор.Код)+ " (" + ТекущаяДата()+ ")"; ПечДокумент.НижнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ; Если ПечДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт Тогда ПечДокумент.ПолеСнизу = 10; ПечДокумент.РазмерКолонтитулаСнизу = 5; Иначе ПечДокумент.ПолеСнизу = 15; ПечДокумент.РазмерКолонтитулаСнизу = 5; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Если НаПринтер Тогда ПечДокумент.Напечатать(); Иначе // Отобразить печатный документ на экране ПечДокумент.ОтображатьЗаголовки = Ложь; ПечДокумент.ОтображатьСетку = Ложь; ПечДокумент.Защита = НЕ ПолучитьПравоПользователяПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ОтключитьЗащитуПечатныхФорм"); ПечДокумент.ТолькоПросмотр = Истина; ПечДокумент.Показать(Заголовок); КонецЕсли; КонецПроцедуры // НапечататьДокумент() |
|||
1
Wobland
17.12.13
✎
18:29
|
ты серьёзно думаешь, что это кто-то будет читать?
|
|||
2
werik
17.12.13
✎
20:51
|
надежда умирает последней. постарался подать развернуто чтобы меньше неясностей было. надуюсь хоть кому-то будет не лень и идею какую-нибудь(кроме чтения книг по 1с:) ) подаст.
|
|||
3
werik
17.12.13
✎
20:52
|
надеюсь*
|
|||
4
Klesk666
17.12.13
✎
20:53
|
в отладчик + смотри как формируется те которые печатаются
|
|||
5
werik
17.12.13
✎
21:00
|
(4) уже. разницу пока не могу найти по данным между этими двумя формами.
|
|||
6
Oleg_ka
18.12.13
✎
07:58
|
Такое ощущение, что где-то выставляется свойство Вывод и (или) Защита... (Может кто-то ошибся и написал вместо .Выводить = Ложь строчку .Вывод = Ложь)
ТабДок.Вывод и (или) ТабДок.Защита |
|||
7
Oleg_ka
18.12.13
✎
07:59
|
(6) Туплю... ищи вот такую конструкцию
ИспользованиеВывода.Запретить |
|||
8
Danilov
18.12.13
✎
08:17
|
Посмотри последние строчки твоего кода " ПечДокумент.Защита = НЕ ПолучитьПравоПользователяПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ОтключитьЗащитуПечатныхФорм"); "
|
|||
9
werik
18.12.13
✎
16:42
|
(7) поискал. нет нигде. А вручную нигде опцию задать нельзя чтобы выводил нормально?
(8) посмотрел. все параметры возвращает одинаковые. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |