Версия для печати темы (https://pro1c.org.ua/index.php?s=2e87cb7b23917ebc0672357f7c2d8636&showtopic=1942)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Остальные конфигурации 1С 7.7 _ Печать двух актов на одном А4

Автор: grechina 15.09.10, 16:05

Добрый день

У меня есть задание, задать печать двух актов на одном А4. То есть что бы два одинаковых акта печатались на одном листе. Делается с целью удобства пропечатывания актов, так как их огромное количество.
Пробивал задать данные параметры в свойствах самой печати, уменьшивал размер листа и задавал печать двух экземпляров на страницу, но ничего так и не помогло, либо при печати разрывает сам акт на два А4 либо печатает два экземпляра на двух листах.
Второй подход к снаряду открыл для меня табличную часть документа и модуль печати в конфигураторе но там я так же не нашел параметр - "печать двух экземпляров на одной странице" или что то в этом роде.

Уважаемые знатоки. Подскажите пожалуйста куда еще следует копнуть?

Заранее спасибо.

Автор: Batchir 15.09.10, 16:25

Нужно ковырять саму процедуру печати.
В цикле вывести два раза печать и после чего выполнить команду печати/просмотра сформированного листа,т.е.
если раньше было

таб.ВывестиСекцию("Шапка");
таб.ВывестиСекцию("Строка");
таб.ВывестиСекцию("Подвал");
таб.Показать();


То нужно сделать
Для Инд = 1 По 2 Цикл
      таб.ВывестиСекцию("Шапка");
      таб.ВывестиСекцию("Строка");
      таб.ВывестиСекцию("Подвал");
КонецЦикла;
таб.Показать();

Автор: grechina 15.09.10, 17:09

Сделал следующие

Для Инд = 1 По 2 Цикл 
    Таб.ВывестиСекцию("Шапка|Исполнитель");
    Таб.ПрисоединитьСекцию("Шапка|"+СекцияКонтрагента);
    Таб.ВывестиСекцию("Заголовок|Все");
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
        Если (ВидНДС.Код = "БезНДС") Тогда      
            Таб.ВывестиСекцию("СтрокаБезНДС|Все");
        Иначе
            Таб.ВывестиСекцию("Строка|Все");
        КонецЕсли;
    КонецЦикла;          
    Если (ВидНДС.Код = "БезНДС") Тогда      
        Таб.ВывестиСекцию("БезНДС|Все");
    Иначе
        Таб.ВывестиСекцию("Итог|Все");
    КонецЕсли;
    Таб.ВывестиСекцию("Дно|Исполнитель");
    Таб.ПрисоединитьСекцию("Дно|"+СекцияКонтрагента);
КонецЦикла;


Напечатало за один раз два акта но каждый на отдельном листе.
Укажите пожалуйста на ошибку.

Автор: Batchir 16.09.10, 6:26

Покажите всю процедуру печати

Автор: grechina 16.09.10, 7:01

На печать выводится - "Стандартная форма"

// ===============================
Процедура Печать(Реж, АвтоВыбор)
    // БиТ 20.08.2009
    Перем ВыбЗначение;
    Если АвтоВыбор = 0 Тогда
        ВариантыПечати = СоздатьОбъект("СписокЗначений");
        ВариантыПечати.ДобавитьЗначение(1,"Стандартная форма");
        ВариантыПечати.ДобавитьЗначение(2,"С факсимильной печатью");
        Если ВариантыПечати.ВыбратьЗначение(выбЗначение,"",,,1) <> 1 Тогда
            Возврат;
        КонецЕсли;
    Иначе
        ВыбЗначение = АвтоВыбор;
    КонецЕсли;    
    // БиТ 20.08.2009

    Таб = СоздатьОбъект("Таблица");
    фУкр = ?(Константа.ФормыНаУкраинском = Да, 1, 0);
    СуффиксТаблицы = ?(фУкр = 1, "_Укр", "");
    СуффиксФайла = ?(фУкр = 1, "_ukr", "");
    ПрефиксФайла = "RNAk";
    
    // БиТ 20.08.2009
    Если ВыбЗначение = 1 Тогда
        ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\"+ПрефиксФайла+СуффиксФайла+".mxl";
        Если ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1 Тогда
            Таб.ИсходнаяТаблица(ИмяФайлаПечатнойФормы);
        Иначе
            Таб.ИсходнаяТаблица("Таблица"+СуффиксТаблицы);
        КонецЕсли;
    Иначе
        ИмяФайлаПечатнойФормы = КаталогИБ()+"ExtForms\PrnForms\"+ПрефиксФайла+"Fax"+СуффиксФайла+".mxl";
        Если ФС.СуществуетФайл(ИмяФайлаПечатнойФормы) = 1 Тогда
            Таб.ИсходнаяТаблица(ИмяФайлаПечатнойФормы);
        Иначе
            Таб.ИсходнаяТаблица("ТаблицаФакс"+СуффиксТаблицы);
        КонецЕсли;
    КонецЕсли;
    // БиТ 20.08.2009
    
    глУстПропись(Гривня);

    РС = ?(ВидТорговли = Перечисление.ВидыТорговли.Нал, глПолучитьРСчет(Фирма, Гривня), Касса);
    
    ЗаказИнфо = "";
    Если Заказ.Выбран() = 1 Тогда
        Если Заказ.Вид() = "Счет" Тогда
            ЗаказИнфо = ?(фУкр = 1, " по рахунку № "," по счету № ") +
            СокрЛП(Заказ.НомерДок) + ?(фУкр = 1, " від "," от ") + Заказ.ДатаДок;
        ИначеЕсли Заказ.Вид() = "Договор" Тогда
            ЗаказИнфо = " по договору № " + СокрЛП(Заказ.НомерДоговора) + ?(фУкр = 1, " від "," от ") + Заказ.ДатаДок;
        КонецЕсли;
    КонецЕсли;
    
    НДССтр = "0.00 грн";
    Если ВидНДС.Ставка.Получить(ДатаДок) <> 0 Тогда
        НДССтр = "20% - " + глФРМВал(Итог("НДС"), Гривня, 1);
    КонецЕсли;
    
    СекцияКонтрагента = ?(Контрагент.ВидКонтрагента = Перечисление.ВидыКонтрагентов.ЧастноеЛицо,
                          "ЧастноеЛицо", "Организация");
    Для Инд = 1 По 2 Цикл
    Таб.ВывестиСекцию("Шапка|Исполнитель");
    Таб.ПрисоединитьСекцию("Шапка|"+СекцияКонтрагента);
    Таб.ВывестиСекцию("Заголовок|Все");
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
        Если (ВидНДС.Код = "БезНДС") Тогда      
            Таб.ВывестиСекцию("СтрокаБезНДС|Все");
        Иначе
            Таб.ВывестиСекцию("Строка|Все");
        КонецЕсли;
    КонецЦикла;          
    Если (ВидНДС.Код = "БезНДС") Тогда      
        Таб.ВывестиСекцию("БезНДС|Все");
    Иначе
        Таб.ВывестиСекцию("Итог|Все");
    КонецЕсли;
    Таб.ВывестиСекцию("Дно|Исполнитель");
    Таб.ПрисоединитьСекцию("Дно|"+СекцияКонтрагента);
    КонецЦикла;
    // БиТ 20.08.2009
    Если Реж = 0  Тогда
        Таб.Защита(Константа.ФлагЗащитыТаблиц);
        Таб.ТолькоПросмотр(1);
        Таб.Опции(0,0,,);
        Таб.Показать("ПЕЧАТЬ: Акт сдачи-приемки работ","");
    Иначе
        ИмяКаталога = СокрЛП(КаталогПользователя());
        Если ПустоеЗначение(ИмяКаталога) = 1 Тогда
            ИмяКаталога = КаталогИБ();
        КонецЕсли;    
        ИмяФайла = СокрЛП(НомерДок)+"_"+Прав(Строка(ДатаГод(ДатаДок)),2)+?(ДатаМесяц(ДатаДок)<10,"0","")+Строка(ДатаМесяц(ДатаДок))+?(ДатаЧисло(ДатаДок)<10,"0","")+Строка(ДатаЧисло(ДатаДок));
        Если ФС.СуществуетФайл(ИмяФайла+".xls") = 1 Тогда ФС.УдалитьФайл(ИмяФайла) КонецЕсли;
        ИмяФайла = ИмяКаталога +"\"+ ИмяФайла;
        Попытка
            Таб.Записать(ИмяФайла,"XLS");
            глКомментарий("Сохранен файл: "+ ИмяФайла +".xls",2,Контекст,"!");
        Исключение
            Сообщить("Не удалось сохранить файл: " + ИмяФайла +".xls");
        КонецПопытки;    

        ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"\Rom-Mail.dll");
        _SMTP(ТекущийДокумент(), Контрагент, ЗаголовокПисьма, ТелоПисьма, ИмяФайла+".xls");
    КонецЕсли;    
    // БиТ 20.08.2009
        
    глУстПропись(Гривня);
КонецПроцедуры

Автор: grechina 24.09.10, 17:28

Я пытался еще раз сделать все то что вы мне советовали, но у меня так и нечего не получилось.

Подскажите еще какой то метод

Спасибо.

Автор: Batchir 24.09.10, 20:36

ХЗ, как по коду, так должны печататься два акта сразу. Разделителей страниц нет. Больше похоже на мистику.

Автор: grechina 27.09.10, 9:37

Кажется что то похожие выдало.
Результат следующий:
напечатало два А4, но на первом поместилась еще треть второго акта, а на втором листе уже остальная часть.
Подскажите пожалуйста, название процедуры или функции для сдвига/уменьшения отступа или самого размера страницы, чтоб в итоге поместилось два акта на один А4

Заранее спасибо.

Автор: grechina 27.09.10, 10:26

В принципе разобрался, поигрался с полями и все получилось.
Остался один вопрос, как уменьшить шрифт в самом акте?

Автор: Vofka 27.09.10, 10:33

Цитата
Остался один вопрос, как уменьшить шрифт в самом акте?

В самой таблице уменьшайте

Автор: grechina 27.09.10, 10:37

Batchir and Vofka большое спасибо!

Все получилось!

Автор: Vofka 27.09.10, 12:47

Пожалуйста smile.gif

Автор: tomol22 27.07.11, 8:59

а для податкових накладних також треба в конфігураторі правити чи є інші можливості?

Автор: logist 27.07.11, 9:07

Немає інших можливостей, для будь якої форми друку треба правити конфігурацію.

Автор: volodya1122 27.07.11, 9:14

Цитата(tomol22 @ 27.07.11, 9:59) *
а для податкових накладних також треба в конфігураторі правити чи є інші можливості?


А що заважаэ поставити в настройках принтера "два экземпляра на страницу"?

Автор: tomol22 27.07.11, 9:37

Цитата(volodya1122 @ 27.07.11, 9:14) *
А що заважаэ поставити в настройках принтера "два экземпляра на страницу"?

так воно ж цю сторінку на пополам ділить тобто виходить поливна накладної

Автор: volodya1122 27.07.11, 9:48

Цитата(tomol22 @ 27.07.11, 10:37) *
так воно ж цю сторінку на пополам ділить тобто виходить поливна накладної


Ніколи такого не буде. Маштаб макету автоматично зменшується, щоб дві сторінки вмістились на одному А4. (так само як, наприклад, з Microsoft Office Word можна друкувати декілька сторінок (2.4.8,9) тексту на одному А4)

Автор: tomol22 27.07.11, 9:48

от так виглядає 2 екземпляри на 1стр.
[удалено т.к. пользователю лень читать правила форума]

Автор: volodya1122 27.07.11, 10:08

Цитата(tomol22 @ 27.07.11, 10:48) *
от так виглядає 2 екземпляри на 1стр.

Там де Ви виставили 2 екземпляри (в настройках 1С) потрібно поставити "Авто". А "два екземляти на сторінку" потрібно поставити в настройках самого принтера!!!

Автор: tomol22 27.07.11, 10:15

ну і саме фото


Цитата(volodya1122 @ 27.07.11, 10:08) *
Там де Ви виставили 2 екземпляри (в настройках 1С) потрібно поставити "Авто". А "два екземляти на сторінку" потрібно поставити в настройках самого принтера!!!

Понятно, таким способом також піде тільки треба своїх бухгалтерів навчити так робити, а це проблема.. ))

Автор: volodya1122 27.07.11, 11:10

Цитата(tomol22 @ 27.07.11, 11:15) *
Понятно, таким способом також піде тільки треба своїх бухгалтерів навчити так робити, а це проблема.. ))


розумію.... Мені приходилось вчити своїх бухгалтерів вибирати потрібний принтер із списку (задача на перший погдяд проста, але важко пояснити чому програма сама не вибираю той принтер який хоче бухгалтер (для різних цілей різні принтери)

Автор: Vofka 27.07.11, 11:12

Прекращаем офтоп.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua