|
v7: Печать в 7.7 под SRV2008 | ☑ | ||
---|---|---|---|---|
0
varelchik
05.09.12
✎
14:58
|
Начали переводить пользователей с 2003 терминала на 2008 и вылезла енприятность.
Смысл следующий. На 2003 все пучаталось пучком, а именно если у ячейки стоит в свойствах авто то визуально видно что длинный текст образан, а также на печати тоже. На 2008 вылезла ерунда какая-то внутри 1С мы видем что все пучком, предпросмотр тоже самое,но вот если отправляем на печать то на бумаге уже начинаються чудеса. Текст который был обрезан накрывает текст в соседней ячейке справа. Принтер Easy Print. На спкриптовом все в норме. |
|||
1
floody
05.09.12
✎
15:05
|
Не нравится - не используй изипринт.
|
|||
2
varelchik
05.09.12
✎
15:07
|
Хотелось бы все таки решить конечно.
|
|||
3
floody
05.09.12
✎
15:08
|
А что решать то?Если он так работает.
|
|||
4
varelchik
05.09.12
✎
15:10
|
Значит решений никаких нету?
Потому как в других приложениях типа Excel сохраненные файлы из 1С распечатуються нормально. |
|||
5
monsterZE
05.09.12
✎
15:14
|
последние обновы для сервера
последние драйвера для принтера последний скрюшный клиент-сервер сам пользую скрюшные сервер+клиент полет нормальный ковыряй рендеринг шрифтов, если такое есть.. или просто обнови. |
|||
6
varelchik
05.09.12
✎
17:27
|
(5) А причем здесь это?
Другие-то приложения печатають нормально скажем если сохранить в xls и открыв Excel распечатать то все пучком. |
|||
7
monsterZE
06.09.12
✎
10:53
|
(6) остальные приложения тоже на терминал прокидываются?
|
|||
8
varelchik
06.09.12
✎
11:40
|
(7) непонял.
Excel стоит на терминале. |
|||
9
monsterZE
06.09.12
✎
12:23
|
поясняю - так было, с какой-то версией скрюшных дров
именно под 2008 сервером.. решение - помоему просто версию обновили. поэксперементируй с установками принт-джоб-рендеринг |
|||
10
varelchik
06.09.12
✎
14:23
|
(9) принт-джоб-рендеринг
непомогло. |
|||
11
monsterZE
06.09.12
✎
17:01
|
отключи компрессию в настройках сервера
|
|||
12
varelchik
07.09.12
✎
11:48
|
Вообщем так.
Ничего ненашел посему решил разрулить временно внутри самой 1С. Для этого потребовались две внешних компоненты. RWidjets.dll SpreadSheet.dll С помощью первой перехватываю момент отправки на Печать а второй конвертирую Таблицу в PDF и запускаю Акробата для печати. Извратно конечно, но другого варианта пока ненашел. |
|||
13
Maximysis
07.09.12
✎
14:38
|
Попробуй screwdrivers
|
|||
14
varelchik
07.09.12
✎
16:17
|
(13) Это что за зверь такой?
|
|||
15
monsterZE
07.09.12
✎
22:50
|
(14) если я правильно помню, то изипринт - это вроде как тоже ихняя поделка?
triCerat ScrewDrivers http://rutracker.org/forum/viewtopic.php?t=2145190 |
|||
16
varelchik
25.09.12
✎
09:37
|
Вообщем так. Проблема конечно решилась,но какими усилиями.....
Для этого потребовались 1С++,FormEx,DialMail,RWidjets,Йоксель 1.В глобальнике Перехватил ПолучениеКоманды на печать ПриПолученииКоманды(Команда,Флаг) Если Команда=57607 Тогда Конт=1; ОткрытьФормуМодально("Обработка.ПреобразованиеMXL",Конт); Если Конт=1 Тогда Флаг=1; КонецЕсли; КонецЕсли; 2.Добавил Обработку с текстом Перем гТаблица; Перем Сервис; Функция ВернутьПараметр(ИТЗ,Имя,Реж=0) значение=0; Если ИТЗ.НайтиСтроку("инд",Имя,,1)>0 Тогда значение=ИТЗ.Значение; Если Реж=1 Тогда значение=Число(значение); КонецЕсли; КонецЕсли; Возврат значение; КонецФункции // ВернутьПараметр Процедура ПриОткрытии() СпУмолч=СоздатьОбъект("СписокЗначений"); СпУмолч.ДобавитьЗначение("Orient",1); СпУмолч.ДобавитьЗначение("Paper",9); СпУмолч.ДобавитьЗначение("FitToPage",1); СпУмолч.ДобавитьЗначение("Scale",100); СпУмолч.ДобавитьЗначение("Bottom",10); СпУмолч.ДобавитьЗначение("Top",10); СпУмолч.ДобавитьЗначение("Left",10); СпУмолч.ДобавитьЗначение("Right",10); //СпУмолч.ДобавитьЗначение("FitToPage",1); //page.Orientation = ВернутьПараметр(ИТЗ,"Orient",1); // portrait ////Paper //page.PaperSize = ВернутьПараметр(ИТЗ,"Paper"); // Excel.XlPaperSize.xlPaperA4; //ПоШирине=ВернутьПараметр(ИТЗ,"FitToPage",1); //Если ПоШирине=1 Тогда // Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl"); // Скрипт.Language="javascript"; // Скрипт.AddObject("ПараметрыСтраницы",page); // Скрипт.Eval("ПараметрыСтраницы.Zoom=false"); //page.FitToPagesTall = 1; // Скрипт.Eval("ПараметрыСтраницы.FitToPagesTall=false"); //pageFitToPagesTall = 1; // page.FitToPagesWide = 1; //Иначе // page.Zoom = ВернутьПараметр(ИТЗ,"Scale",1); //КонецЕсли; //// Отступы задаются в точках! ////Bottom //page.BottomMargin = ВернутьПараметр(ИТЗ,"Bottom",1); ////Top //page.TopMargin = ВернутьПараметр(ИТЗ,"Top",1); ////Left //page.LeftMargin = ВернутьПараметр(ИТЗ,"Left",1); ////Right //page.RightMargin = ВернутьПараметр(ИТЗ,"Right",1); Версия=?(ПустоеЗначение(глВерсияОС)=1,глСервис.ВерсияОС(),глВерсияОС); Форма.Параметр=0; СтатусВозврата(0); Если Найти(Версия,"Server40")>0 Тогда Если глСервис.АктивныйКонтекст (гТаблица) = 1 Тогда Если ТипЗначенияСтр (гТаблица) = "Таблица" Тогда Документ=СоздатьОбъект("ТабличныйДокумент"); Документ.ЗагрузитьИзТаблицы(гТаблица); ИмяФайла=КаталогВременныхФайлов()+глСервис.ПолучитьGUID()+".xls"; Документ.Записать(ИмяФайла,1); Реестр=СоздатьОбъект("РеестрWin"); Реестр.ОткрытьКлюч("HKEY_CURRENT_USER","Software\1C\1Cv7\7.7\Titles","KEY_READ"); НазваниеБазы=""; Реестр.ЗапроситьЗначение(КаталогИБ(),НазваниеБазы); //Сообщить(НазваниеБазы); Ключ="Software\1C\1Cv7\7.7\"+НазваниеБазы+"\V7\"+ИмяПользователя()+"\Moxel\Default"; стат=Реестр.ОткрытьКлюч("HKEY_CURRENT_USER",Ключ,"KEY_READ"); ИмяЗначения=""; Значение=""; КодИБ=""; ИТЗ=СоздатьОбъект("ИндексированнаяТаблица"); ИТЗ.НоваяКолонка("Имя"); ИТЗ.НоваяКолонка("Значение"); ИТЗ.ДобавитьИндекс("инд","Имя"); Если стат<>0 Тогда Кво=Реестр.ВыбратьЗначения(); ИмяЗначения=""; Пока Реестр.ПолучитьЗначение(ИмяЗначения)=1 Цикл Реестр.ЗапроситьЗначение(ИмяЗначения,Значение); ИТЗ.НоваяСтрока(); ИТЗ.Имя = ИмяЗначения; ИТЗ.Значение = Значение; КонецЦикла; КонецЕсли; Если ИТЗ.КоличествоСтрок()=0 Тогда Для н=1 По СпУмолч.РазмерСписка() Цикл Значение=""; ИмяЗначения=СпУмолч.ПолучитьЗначение(н,Значение); ИТЗ.НоваяСтрока(); ИТЗ.Имя = ИмяЗначения; ИТЗ.Значение = Значение; КонецЦикла; КонецЕсли; excel = СоздатьОбъект("Excel.Application"); excel.WindowState = -4143; last_height = excel.Height; last_width = excel.Width; excel.Height = 0; excel.Width = 0; excel.WindowState = -4140; excel.WindowState = -4143; // xlNormal excel.Visible = 0; book = excel.Workbooks.Open(ИмяФайла); // книга page = excel.ActiveSheet.PageSetup; // параметры страницы //Orient page.Orientation = ВернутьПараметр(ИТЗ,"Orient",1); // portrait //Paper page.PaperSize = ВернутьПараметр(ИТЗ,"Paper"); // Excel.XlPaperSize.xlPaperA4; ПоШирине=ВернутьПараметр(ИТЗ,"FitToPage",1); Если ПоШирине=1 Тогда Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.Language="javascript"; Скрипт.AddObject("ПараметрыСтраницы",page); Скрипт.Eval("ПараметрыСтраницы.Zoom=false"); //page.FitToPagesTall = 1; Скрипт.Eval("ПараметрыСтраницы.FitToPagesTall=false"); //pageFitToPagesTall = 1; page.FitToPagesWide = 1; Иначе page.Zoom = ВернутьПараметр(ИТЗ,"Scale",1); КонецЕсли; // Отступы задаются в точках! //Bottom page.BottomMargin = ВернутьПараметр(ИТЗ,"Bottom",1); //Top page.TopMargin = ВернутьПараметр(ИТЗ,"Top",1); //Left page.LeftMargin = ВернутьПараметр(ИТЗ,"Left",1); //Right page.RightMargin = ВернутьПараметр(ИТЗ,"Right",1); dialog = excel.Dialogs(8); dialog.Show(); null=0; book.Saved = 1; // не спрашивать про сохранение документа excel.Visible = 0; excel.Height=last_height ; excel.Width=last_width ; //Сообщить(last_height); //Сообщить(last_width); excel.Quit(); //Возврат; //Окна.Максимизировать(); //Система.ПоказатьОкно("Печать",1); Система=СоздатьОбъект("AddIn.SystComm"); Система.АктивироватьОкноРабочейПрограммы(); ФС.УдалитьФайл(ИмяФайла); Форма.Параметр=1; глСервис.ОбработкаОжидания("АктивизироватьПечать",0); КонецЕсли; КонецЕсли; КонецЕсли; //СтатусВозврата(0); Возврат; КонецПроцедуры // ПриОткрытии В результате получилось очень даже ничего. Т.е. мы вместо 1С печатаем через Excel. Пользователь даже не замечает что печать не из 1С а из Excel. Малоли кому потребуеться. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |