Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Печать с двух сторон в автоматическом режиме

v7: Печать с двух сторон в автоматическом режиме
Я
   walcot
 
21.05.20 - 10:11
Может кто сталкивался: перенесли базу на 2008 сервер. Теперь проблема с печатью накладных на 2-ух сторонах: если отправить 2 и более копий на печать, то почему-то первая страница печатается на 2-ух сторонах первого листа, а вторая страница на 2-х сторонах второго листа. Раньше база была на 2003, там всё было ок. Принтер Киосера, пробовал на разных, везде одинаково.
   Ray Zexter
 
1 - 21.05.20 - 10:23
посылай на печать отдельными заданиями
   walcot
 
2 - 21.05.20 - 10:25
Ну да, меня схавают живьём, это 5 раз вместо 1-ой как раньше, бред.
   Djelf
 
3 - 21.05.20 - 10:28
(0) Покопайся в настройках принтера. Там должно быть что-то типа "Двусторонняя печать: переворачивать под длинной стороне".
   Ray Zexter
 
4 - 21.05.20 - 10:30
(3) нет. это где в настройках что то типа "разобрать по копиям". но не у всех принтеров есть.
   walcot
 
5 - 21.05.20 - 10:33
Всё выставлено как надо, на предварительном просмотре выяснил, что не работает "Разобрать по копиям"... Что стоит галка, что нет, не разбирает, собака.
   Djelf
 
6 - 21.05.20 - 10:36
(5) У киосеры драйверов до черта. Попробуй другой драйвер. Я обычно HP`шный LaserJet 3 PCL ставил, с ним проблем как то поменьше.
   Garykom
 
7 - 21.05.20 - 10:48
(0) Переходите уже на ЭДО
   Djelf
 
8 - 21.05.20 - 11:04
(7) Ну мы перешли, и что? Как раньше требовали печатные формы, так и продолжают требовать. Изменилось только то что теперь покупатели их сверяют с электронными ;)
   trad
 
9 - 21.05.20 - 11:10
(6) никакой драйвер не спасет когда потребуется копий более одной при нечетном количестве страниц ))
семерка - будь она неладна )))
   trad
 
10 - 21.05.20 - 11:11
и несколько раз послать один и тот же ТД - тот еще геморрой
   Bigbro
 
11 - 21.05.20 - 11:15
(6) c HP свои проблемы - на серваке периодически отваливается двустороняя печать начинает требовать в ручном режиме переворачивать страницы.
и начинаются пляски с бубном. рядом стоит второй точно такой же, нормально.
   Garykom
 
12 - 21.05.20 - 11:17
(8) Печатные формы их сразу в PDF а там двухсторонней печати нет ))
   Garykom
 
13 - 21.05.20 - 11:20
Проблема (0) решается только отдельным независимым от 1С и прочего софт "сервером/сервисом печати"

Короче любая прога печатает в PDF.
Затем этот PDF отправляется в сервис с параметрами как его выводить: чб/цвет/эконом, размер бумаги, с двух сторон и как и т.д.
   walcot
 
14 - 21.05.20 - 11:25
(6) перепробовал как старые, так последние свежие
(13) есть какая-н инструкция по настройке?
   Djelf
 
15 - 21.05.20 - 11:28
(14) Пробовал снять галочку Свойства/Дополнительно/Включить дополнительные возможности печати?
   walcot
 
16 - 21.05.20 - 12:05
(15) не помогло(
   walcot
 
17 - 21.05.20 - 12:23
FinePrint конечно работает, но опять же - лишние телодвижения, неужели "счастливые" обладатели 1с7+server2008/win7 до сих пор не победили этот баг?((((
   Ёпрст
 
18 - 21.05.20 - 12:27
(0) работает везде
Для к =1 по КоличествоКопий Цикл 
  .....
  таб.Напечатать(0);

   Lokli
 
19 - 21.05.20 - 12:27
У меня была подобная проблема. Но вот с версией ms-sql это ни как не было связано. Я победил следующим образом: запретил пользователям отправлять на принтер стандартным механизмом печати или пользоваться параметрами страниц. Весь этот функционал сделал через свои обработки (параметры страницы и печать на принтер). Если настройки принтера слетали или требовали корректировки, то они менялись только через ОС. И тогда, о чудо, всё заработало. Подозреваю, что 1С-ский диалог печати всё портит.
   Arbuz
 
20 - 21.05.20 - 13:09
(13) правильно и отдел на фирмé "Выпуск и контроль твёрдой документации" с начодтелом, двумя замами, бюджетом и аджайлом.
   Garykom
 
21 - 21.05.20 - 13:14
(20) Не понял юмора.

Фактически же создаются виртуальные PDF принтеры с разными именами (обычная печать, двухсторонняя книга, двухсторонняя альбом и т.д.).
Юзер отправляет на нужный принтер (можно имя реального добавить) а далее все автоматически и пофиг какой реальный принтер и что за глюки с его настройками.
   Djelf
 
22 - 21.05.20 - 13:14
(16) Ну а если так? http://catalog.mista.ru/public/75881/ Качать тут https://cloud.mail.ru/public/2bqn/3t83jHRvX

В печатной форме как то так:
    ТабДок = СоздатьОбъект ("ТабличныйДокумент");
    ТабДок.ЗагрузитьИзТаблицы(Таб);
    ПараметрыПечати=ТабДок.ПараметрыПечати;
    ПараметрыПечати.АвтоМасштаб    = 1;
    ПараметрыПечати.Ориентация    = 2;
    ПараметрыПечати.ПолеСверху    = 100;
    ПараметрыПечати.ПолеСнизу    = 100;
    ПараметрыПечати.ПолеСлева    = 100;
    ПараметрыПечати.ПолеСправа    = 100;
    ПараметрыПечати.РежимПечатиКопий=1;// 1 - разобрать по копиям

    ПараметрыПечати.Дуплекс     = 1;// 0 нет (по-умолчанию), 1 по горизонтали, 2 по вертикали

    
    // показать сформированную таблицу

    Если Устройство = 0 Тогда
        ТабДок.Показать(ИмяДокумента);
    Иначе
        ПараметрыПечати.КоличествоКопий    = КолвоКопий;
        ПараметрыПечати.ИмяПринтера        = ТекПринтер;
        ПараметрыПечати.ИмяДокумента    = ИмяДокумента;
        
        ТабДок.Напечатать(0);
    КонецЕсли;

   trad
 
23 - 21.05.20 - 13:21
(18) тут есть проблема, если не было таб.Показать
После первого таб.Напечатать, таб превращается в тыкву

но это не случай ТС
   Ёпрст
 
24 - 21.05.20 - 13:23
(23) ну там же есть заглушка с -1..
   walcot
 
25 - 21.05.20 - 13:28
(24) не программист, поэтому прошу помощи, как правильно переделать процедуру печати:

Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1)
    
    Если  ПустоеЗначение(НомерТекущейФормы) = 1  Тогда
        НомерТекущейФормы = 1;
        Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
    КонецЕсли;
    
    Таб = СоздатьОбъект("Таблица");
    Если (НомерТекущейФормы >= 1) и (НомерТекущейФормы <= 6)  Тогда
        Печать();
    ИначеЕсли (НомерТекущейФормы = 7)  Тогда//счет-фактура

        ПечатьСчет();
    ИначеЕсли (НомерТекущейФормы = 8)  Тогда//протокол

        ПечатьПротокол();
    ИначеЕсли (НомерТекущейФормы = 9)  Тогда//протокол

        CMR();
    ИначеЕсли (НомерТекущейФормы = 10)  Тогда//протокол

        Акт();
    Иначе
        Параметры = СоздатьОбъект("СписокЗначений");
        Параметры.ДобавитьЗначение(Контекст, "Контекст");
        Параметры.ДобавитьЗначение(СразуНаПринтер, "Устройство");
        Параметры.ДобавитьЗначение(КолЭкз, "КоличествоКопий");
        
        ОткрытьФорму("Отчет", Параметры, глКаталогПечФорм+ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы,"Файл"));
    КонецЕсли;
    
КонецПроцедуры
   Злопчинский
 
26 - 21.05.20 - 14:14
(19) "Подозреваю, что 1С-ский диалог печати всё портит."
ну так Таб.Опции() и Таб.ПараметрыСтраницы надо оформлять правильно.
   Йохохо
 
27 - 21.05.20 - 14:25
а это не обходили через установку второго экземпляра этого принтера с другими параметрами печати по умолчанию и параметрами печати?
   walcot
 
28 - 21.05.20 - 14:50
(27) не помогает
   Lokli
 
29 - 21.05.20 - 15:17
(26) Хотел было уточнить что значит правильно. Но потом понял, что я уже год как не на 7.7 )))
   trad
 
30 - 21.05.20 - 16:17
(24) она не поможет
 
 Рекламное место пустует
   walcot
 
31 - 21.05.20 - 16:30
Мда, вляпались, думал счастье будет на новом серваке, а тут такой подвох... Двусторонняя печать нужна кровь из носу, пока поставил FinePrint хотя бы на выписку, но всем это не воткнёшь. Как я понимаю, по-хорошему надо переделывать все печатные формы 7-ки?
   GrayS19
 
32 - 21.05.20 - 17:03
Была такая же проблема с печатью - вернули 2003 сервак (в день до 350 ТТН - экспериментировать некогда было). Надо попробовать(18).
   GrayS19
 
33 - 21.05.20 - 17:06
(19) "Подозреваю, что 1С-ский диалог печати всё портит". Только непонятно, почему 7.7 -> 2003 не портит, а 7.7 -> 2008 портит.
   Djelf
 
34 - 21.05.20 - 18:19
(24) А trad в (30) прав. Пока все формы не перелопатишь так оно не взлетит.

По-быстрому, можно было бы использовать событие FormEx ПриПечатиТаблицы, но оно зацикливается.
Через загрузку в Йоксель можно, оттуда событие в ПриПечатиТаблицы не попадает.

АльФ!!! Как бы так так извратиться, чтобы не зацикливаться на этом коде?
Процедура ПриПечатиТаблицы(Таблица,ФлагПредпросмотра,Заголовок,ИмяПринтера)
    Если ФлагПредпросмотра=0 Тогда
        КоличествоЭкземпляров = Таблица.КоличествоЭкземпляров();
        Таблица.КоличествоЭкземпляров(1);
        Для НомерСтраницы=1 По КоличествоЭкземпляров Цикл
            Таблица.Напечатать(0);
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

   walcot
 
35 - 22.05.20 - 09:33
Так погодите, а где тогда настроить принтер перед печатью (выбрать тот же самый дуплекс, ведь он не всегда нужен, и кол-во копий), если диалог печати выводиться не будет?
   walcot
 
36 - 22.05.20 - 10:10
Пробовал сначала через "Параметры страницы" залезть в принтер и там выставить все параметры, а потом Ctrl+Shift+P без диалога печати распечатать, но настройки не подхватились(
   Lokli
 
37 - 22.05.20 - 10:24
Количество копий можно задавать программно. А вот с дуплексом - да, проблема.
Кстати, а имя принтера у тебя не более восьми символов и без пробелов?
   walcot
 
38 - 22.05.20 - 10:27
(37) а какая разница?
   Lokli
 
39 - 22.05.20 - 10:28
А для 16-битного приложения есть разница. ))
   walcot
 
40 - 22.05.20 - 14:02
(33) Кстати да, а есть у кого-н догадки почему со старыми операционками такой проблемы нет?
   trad
 
41 - 22.05.20 - 14:33
(39) 16-ти битного? 😲
   Djelf
 
42 - 22.05.20 - 14:34
   walcot
 
43 - 22.05.20 - 14:55
(42) считаете, что в server 2008R2 со всеми обновлениями по 2020 год эту проблему до сих пор не решили и то, что ф-ия разбора по копиям не работает только в 1С - это проблема мелкософта?
   Djelf
 
44 - 22.05.20 - 15:00
(43) Да так и пишут, что сначала починили, но на самом деле не починили, а выложили патчи для тех у которых проблема проявляется. А к R2 патчей не сделали. Поищи. Это легко ищется.
   Djelf
 
45 - 22.05.20 - 15:22
(43) Попробуй эту обработку https://cloud.mail.ru/public/3tt2/4wpoKyjSF
SpreadSheet.dll кинь в 1С/BIN
Мне проверить не на чем, интересно сработает или нет.
   walcot
 
46 - 22.05.20 - 15:32
(45) Разбирает
   walcot
 
47 - 22.05.20 - 15:39
(45) Правда, если не стоит галка "Разбирать по копиям", то выходит только одна копия (не важно выбран дуплекс или нет), если стоит, то норм.
   Djelf
 
48 - 22.05.20 - 15:46
(46) Это и хорошо и одновременно плохо. Хорошо, что разбирает, а плохо что ты не программист.
У йокселя есть проблема - в нем не реализована функция "Повторять при печати станиц" т.е. не все печатные формы будут адекватно преобразованы.
И с параметры страницы Йоксель при перехвате не забирает, разве что сначала перехватывать таблицу trad`овской библиотекой http://www.1cpp.ru/forum/YaBB.pl?num=1177688915

(45) Ой, ой. Видать я с этим в свое время накосячил ;)
Ну да ладно... все равно лучше разбирать по копиям.
   walcot
 
49 - 22.05.20 - 15:58
(48) Ну тут дело такое, сегодня плохо что я не программист, а завтра (тьфу-тьфу лучше в понедельник) хорошо что я сисадмин)
Общее направление ясно, надо свой диалог печати мутить для дуплекса, благодарю за терпение)
   Djelf
 
50 - 22.05.20 - 16:17
Ладно... давай так попробуй. Есть шанс, что сработает.
Это перехват печати таблицы и установка режима печати по копиям без диалога.


Процедура ПриНачалеРаботыСистемы()
...
    ЗагрузитьВнешнююКомпоненту("formex.dll"); //http://www.dorex.pro/?projects&formex&download
   ЗагрузитьВнешнююКомпоненту ("tabledoc.dll"); //http://www.1cpp.ru/forum/YaBB.pl?num=1177688915/0

КонецПроцедуры

Процедура ПриПечатиТаблицы(Таблица,ФлагПредпросмотра,Заголовок,ИмяПринтера)
    
    Менеджер=СоздатьОбъект("МенеджерТабличногоДокумента");
    Менеджер.УстановитьТаблицу(Таблица);
    ПараметрыСтраницы =Менеджер.ПараметрыСтраницы;
    ПараметрыСтраницы.Collate = 1;
    
КонецПроцедуры

   walcot
 
51 - 22.05.20 - 16:46
(50) Блин, на первый взгляд всё работает, надо плотнее потестить.
Это всё? В чём подвох?
   Djelf
 
52 - 22.05.20 - 17:00
(50) Ты был прав, диалог печати у 7.7 какой то кривой. Непонятно почему только на 2008.
Возможно в более старых версиях винды значение по-умолчанию было 1 и как то вот так оно и работало, а теперь стало по-умолчанию 0.
Хорошо! Решили многолетнюю проблему ;)
   IVT_2009
 
53 - 25.05.20 - 14:10
Вопрос:
Как отловить отказ от печати или другими словами я в окне принтера нажал отмену?
   Злопчинский
 
54 - 25.05.20 - 14:32
(52) а какая была "многолетнаяя проблема"..? что-то япропустил...
   IVT_2009
 
55 - 25.05.20 - 14:37
(54) я не мог эту проблему решить с 2004 года , сейчас решил читая эту тему.
Меня в прочем сильно не напрягали с ее решением.
   walcot
 
56 - 25.05.20 - 15:18
(53) на самом принтере тискать красную кнопку) или как в старые добрые - выкл/вкл.
   Ёпрст
 
57 - 25.05.20 - 15:35
(53) печатать управляющий шк на нужной форме, заставлять его сканить с бумажки в программу, тем самым подтверждая, что бумажка распечатана. ШК на показывать в предварительном просмотре,только при печати на принтёр.
И усё.
   Djelf
 
58 - 25.05.20 - 18:07
(53) А зачем? Ну не напечатали, бумагу экономили...

Теоретически... можно и без дополнительных ВК.
Сниферим события FormEx ПриПолученииКомандыГлавнымОкном 57607 и 114467
Записываем Сервис.ПолучитьGUID() в глобальную переменную.
В ПриПечатиТаблицы и в ПриПолученииКомандыГлавнымОкном проверяем соответствие GUID, если не совпадает, то печать была отмена.

(54) Так в (0) вся проблема описана. Ну или вот так: https://goo.su/1AzL /*куча матов на эту проблему*/

(57) Злой ты ;) С такого механизма застрелится сразу хочется.
   Ёпрст
 
59 - 25.05.20 - 18:16
(58) Почему ? Норм схема, если нужно точно знать что товарищ бумажку распечатал. Распечатал - подтвердил в базе.
Зато потом нет нытья, что не печатал или бумагу зажевало.

У нас немного другая схема, грубо если что-то выпустили на склад, печатается гуид-шк.
Потом, при проверке что собрали, по этому шк смотрится, какая версия собиралась и что поменялось в базе, если что-то не так, расписывается и по-новой собирать\исправлять.

Это, чтоб не было такого, когда собирают по одной бумажке, а вывозят по другой бумажке.
Короче, чтоб пизд..ли поменьше на складе ;)


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.