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

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

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

Фактически же создаются виртуальные PDF принтеры с разными именами (обычная печать, двухсторонняя книга, двухсторонняя альбом и т.д.).
Юзер отправляет на нужный принтер (можно имя реального добавить) а далее все автоматически и пофиг какой реальный принтер и что за глюки с его настройками.
22 Djelf
 
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);
    КонецЕсли;
23 trad
 
21.05.20
13:21
(18) тут есть проблема, если не было таб.Показать
После первого таб.Напечатать, таб превращается в тыкву

но это не случай ТС
24 Ёпрст
 
21.05.20
13:23
(23) ну там же есть заглушка с -1..
25 walcot
 
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
а это не обходили через установку второго экземпляра этого принтера с другими параметрами печати по умолчанию и параметрами печати?
28 walcot
 
21.05.20
14:50
(27) не помогает
29 Lokli
 
21.05.20
15:17
(26) Хотел было уточнить что значит правильно. Но потом понял, что я уже год как не на 7.7 )))
30 trad
 
21.05.20
16:17
(24) она не поможет
31 walcot
 
21.05.20
16:30
Мда, вляпались, думал счастье будет на новом серваке, а тут такой подвох... Двусторонняя печать нужна кровь из носу, пока поставил FinePrint хотя бы на выписку, но всем это не воткнёшь. Как я понимаю, по-хорошему надо переделывать все печатные формы 7-ки?
32 GrayS19
 
21.05.20
17:03
Была такая же проблема с печатью - вернули 2003 сервак (в день до 350 ТТН - экспериментировать некогда было). Надо попробовать(18).
33 GrayS19
 
21.05.20
17:06
(19) "Подозреваю, что 1С-ский диалог печати всё портит". Только непонятно, почему 7.7 -> 2003 не портит, а 7.7 -> 2008 портит.
34 Djelf
 
21.05.20
18:19
(24) А trad в (30) прав. Пока все формы не перелопатишь так оно не взлетит.

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

АльФ!!! Как бы так так извратиться, чтобы не зацикливаться на этом коде?

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

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

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

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