7.7 Добавить картинку в таблицу при печати.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем amoRNizam, 19 сен 2016.

  1. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. 1С 7.7. ТиС 9.2.
    Появилась надобность вывести на печать картинку в самый низ таблицы.
    Как добавлять картинку в обычную таблицу знаю, а здесь временная(как правильно называется не знаю), один код в модуле.
    Помогите пожалуйста, первый раз сталкиваюсь.
    Код:
    Процедура Печать(СразуНаПринтер = 0,КолЭкз = 1)
        Перем ПарамШапки;
       
        ПечТабл = СоздатьОбъект("Таблица");
        ПечТабл.ИсходнаяТаблица("ТОРГ12");
       
        // инициализация переменных для печати шапки
        ФормПарПечШапки(ПарамШапки);
       
        // собственная фирма
        ВремФирма        = ПарамШапки.Получить("Фирма");
        ФирмаАдрес        = ПарамШапки.Получить("ФирмаАдрес");
        ФирмаТелефоны    = ПарамШапки.Получить("ФирмаТелефоны");
        ФирмаРеквизиты    = ПарамШапки.Получить("ФирмаРеквизиты");
        ФирмаОКПО        = ПарамШапки.Получить("ФирмаОКПО");
       
        ПечОрг            = ВремФирма +
                          ?(ПустоеЗначение(ФирмаАдрес) = 0, ", " + ФирмаАдрес, "")+
                          ?(ПустоеЗначение(ФирмаТелефоны) = 0, ", тел. " + ФирмаТелефоны, "") +
                          ?(ПустоеЗначение(ФирмаРеквизиты) = 0, " ," + ФирмаРеквизиты, "");
       
        ПечФирма        = ВремФирма +
                          ?(ПустоеЗначение(ФирмаАдрес) = 0, ", " + ФирмаАдрес, "")+
                          ?(ПустоеЗначение(ФирмаРеквизиты) = 0, " ," + ФирмаРеквизиты, "");
       
        // контрагент
       
        Клиент            = ПарамШапки.Получить("Клиент");
        КлиентЮрАдрес    = ПарамШапки.Получить("КлиентЮрАдрес");
        КлиентФактАдрес    = ПарамШапки.Получить("КлиентФактАдрес");
        КлиентРеквизиты    = ПарамШапки.Получить("КлиентРеквизиты");
        КлиентОКПО        = ПарамШапки.Получить("КлиентОКПО");
       
        ПечКлиент        = Клиент +
                          ?(ПустоеЗначение(КлиентЮрАдрес) = 0, ", " + КлиентЮрАдрес, "")+
                          ?(ПустоеЗначение(КлиентРеквизиты) = 0, ", " + КлиентРеквизиты, "");
                         
        ПечГрузополучатель = Клиент +
                          ?(ПустоеЗначение(КлиентФактАдрес) = 0, ", " + КлиентФактАдрес, "")+
                          ?(ПустоеЗначение(КлиентРеквизиты) = 0, ", " + КлиентРеквизиты, "");
                         
        Если ПустоеЗначение(ДокОснование) = 1 Тогда
            ПечДокОснование    = "";
        Иначе
            ПечДокОснование    = глПредставлениеДокумента(ДокОснование);
        КонецЕсли;
       
        // выясним, какую вертикальную секцию будем использовать
        Если УчитыватьНП = 0 Тогда
            ВертСекция = "";
        Иначе
            ВертСекция = "_НП";
        КонецЕсли;
       
        // Выводим шапку таблицы. Шапка печатается на каждом листе.
        ПечТабл.ВывестиСекцию("Шапка");
       
        // Выводим спецификацию
       
        //Для простоты настройки печатной формы примем следующие соглашения:
        //    -    высота строк в таблице печатной формы задана жестко,
        //        тогда известно, сколько строк помещается на странице;
        СтрокНаСтранице    = 22;
       
        //    -    высота шапки и подвала задана жестко и кратна высоте строк таблицы,
        //        тогда можно указать, сколько строк занимают шапка и подвал
        //        в пересчете на строки таблицы;
        СтрокШапки        = 10;
        СтрокПодвала    = 9;
       
        //    -    для нормальной работы алгоритма необходимо, чтобы шапка и подвал
        //        могли поместиться на одной странице + хотя бы одна строка таблицы:
        //        СтрокНаСтранице >= СтрокШапки + СтрокПодвала + 1
        //    -    если подвал не помещается на странице, он переносится на другую
        //        страницу с последней строкой; исключение составляет случай,
        //        когда в таблице всего одна строка.
        НомерСтраницы    = 1;
    
        Если КоличествоСтрок() = 1 Тогда
            ПереноситьПоследнююСтроку    = 0;
        Иначе
            ЦелыхСтраницСПодвалом        = Цел((СтрокШапки + КоличествоСтрок() + СтрокПодвала) / СтрокНаСтранице);
            ЦелыхСтраницБезПодвала        = Цел((СтрокШапки + КоличествоСтрок() - 1) / СтрокНаСтранице);
            ПереноситьПоследнююСтроку    = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
        КонецЕсли;
       
        // инициализация итогов по странице
        ИтогоКоличествоНаСтранице    = 0;
        ИтогоСуммаНаСтранице        = 0;
        ИтогоНДСНаСтранице            = 0;
        ИтогоСуммаСНДСНаСтранице    = 0;
        ИтогоНГСМНаСтранице            = 0;
        ИтогоНПНаСтранице            = 0;
    
        // инициализация итогов по документу
        ИтогоКоличество    = 0;
        ИтогоСумма        = 0;
        ИтогоНДС        = 0;
        ИтогоСуммаСНДС    = 0;
        ИтогоНГСМ        = 0;
        ИтогоНП            = 0;
    
        Ном    = 0;
       
        КурсРублей = глКурсДляВалюты(глРубли, ДатаДок);
       
        ПечТабл.ВывестиСекцию("ЗаголовокТаб" + ВертСекция);
       
        ВыбратьСтроки();
        Пока ПолучитьСтроку() = 1 Цикл
            Ном    = Ном + 1;
           
            //Начинаем новую страницу, если предыдущая строка была последней на странице
            //или пора переносить последнюю строку на последнюю страницу с подвалом.
            ЦелаяСтраница    = (СтрокШапки + Ном - 1) / СтрокНаСтранице;
           
            Если (ЦелаяСтраница = Цел(ЦелаяСтраница))
             или ((ПереноситьПоследнююСтроку = 1) и (Ном = КоличествоСтрок())) Тогда
                ПечТабл.ВывестиСекцию("ИтогоПоСтранице"+ВертСекция);
               
                // очистим итоги по странице
                ИтогоКоличествоНаСтранице    = 0;
                ИтогоСуммаНаСтранице        = 0;
                ИтогоНДСНаСтранице            = 0;
                ИтогоСуммаСНДСНаСтранице    = 0;
                ИтогоНГСМНаСтранице            = 0;
                ИтогоНПНаСтранице            = 0;
               
                ПечТабл.НоваяСтраница();
                НомерСтраницы    = НомерСтраницы + 1;
                ПечТабл.ВывестиСекцию("ЗаголовокТаб" + ВертСекция);
            КонецЕсли;
    
            ПечТовар        = СокрЛП(Номенклатура.ПолнНаименование) + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(Номенклатура.Артикул), "");
            ПечЕдиница        = СокрЛП(Единица.ОКЕИ.Наименование);
            ПечОКЕИ            = СокрЛП(Единица.ОКЕИ.Код);
           
            ПечКоличество    = Количество;
            КолВо            = ?(Количество = 0, 1, Количество);
           
            ПечКолвоВОдномМесте = ?(Коэффициент <= 1, "", Коэффициент);
            ПечКоличествоМест = ?(Коэффициент <= 1, "", Количество);
                                                                            
            СуммаПеч    = глПересчет(Сумма   , Валюта, Курс, глРубли, КурсРублей);
            СуммаНДСПеч = глПересчет(СуммаНДС, Валюта, Курс, глРубли, КурсРублей);
            СуммаНППеч  = глПересчет(СуммаНП , Валюта, Курс, глРубли, КурсРублей);
           
            Если СуммаВклНП = 1 Тогда
                СуммаБезНП = СуммаПеч - СуммаНППеч;
            Иначе
                СуммаБезНП = СуммаПеч;
            КонецЕсли;
           
            Если СуммаВклНДС = 1 Тогда
                СуммаБезНДС = СуммаБезНП - СуммаНДСПеч;
                СуммаСНДС   = СуммаБезНП;
            Иначе
                СуммаБезНДС = СуммаБезНП;
                СуммаСНДС   = СуммаБезНП + СуммаНДСПеч;
            КонецЕсли;
           
            ПечНДС            = СуммаНДСПеч;
           
            Если УчитыватьНП = 1 Тогда
                ПечНП = СуммаНППеч;
            Иначе
                ПечНП = "";
            КонецЕсли;
           
            ПечЦена = ?(Количество <> 0, СуммаБезНДС / Количество, СуммаБезНДС);
           
            ПечТабл.ВывестиСекцию("Строка" + ВертСекция);
    
            // увеличим итоги по странице
            ИтогоКоличествоНаСтранице    = ИтогоКоличествоНаСтранице + Количество;
            ИтогоСуммаНаСтранице        = ИтогоСуммаНаСтранице + СуммаБезНДС;
            ИтогоНДСНаСтранице            = ИтогоНДСНаСтранице + ПечНДС;
            ИтогоСуммаСНДСНаСтранице    = ИтогоСуммаСНДСНаСтранице + СуммаСНДС;
           
            Если УчитыватьНП = 1 Тогда
                ИтогоНПНаСтранице = ИтогоНПНаСтранице + ПечНП;
            КонецЕсли;
    
            // увеличим итоги по дукументу
            ИтогоКоличество    = ИтогоКоличество + Количество;
            ИтогоСумма        = ИтогоСумма + СуммаБезНДС;
            ИтогоНДС        = ИтогоНДС + ПечНДС;
            ИтогоСуммаСНДС    = ИтогоСуммаСНДС + СуммаСНДС;
           
            Если УчитыватьНП = 1 Тогда
                ИтогоНП = ИтогоНП + ПечНП;
            КонецЕсли;
        КонецЦикла;
    
        ПечТабл.ВывестиСекцию("ИтогоПоСтранице" + ВертСекция);
        ПечТабл.ВывестиСекцию("Всего" + ВертСекция);
       
        // выводим подвал
        НаСумму    = "на сумму " + глСуммаПрописью(ИтогоСуммаСНДС + ИтогоНП, глРубли);
    
        // формируем строку для вывода количества листов накладной
        // Слово лист склоняется
        Если (НомерСтраницы > 10) И (НомерСтраницы < 20) Тогда
            Слово    = " листах";
        Иначе
            ПоследняяЦифра    = НомерСтраницы % 10;
           
            Если ПоследняяЦифра = 1 Тогда
                Слово    = " листе";
            Иначе
                Слово    = " листах";
            КонецЕсли;
        КонецЕсли;
       
        СтрокаКоличествоЛистов    = Строка(НомерСтраницы) + Слово;
       
        ПечГлавБух = Фирма.ЮрЛицо.ГлБухгалтер.Получить(ДатаДок); 
       
        ПечТабл.ВывестиСекцию("Подвал");
    
        // показать сформированную таблицу
                    
        Если СразуНаПринтер = 0 Тогда
            ПечТабл.Опции(0, 0, 0, 0, "ДляРеализации", "ДляРеализации");
    
            Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда
                ПечТабл.Защита(1);
            Иначе
                ПечТабл.Защита(0);
            КонецЕсли;
            ПечТабл.ТолькоПросмотр(1);
    
            ПечТабл.Показать(глНазваниеДокументаВжурнале(Контекст),""); 
        Иначе    
            ПечТабл.ПараметрыСтраницы(,,,,,,,,,1,,);
            ПечТабл.КоличествоЭкземпляров(КолЭкз);
            ПечТабл.Напечатать(0);
        КонецЕсли;
       
    КонецПроцедуры // Печать()
  2. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Здравствуйте.
    Никакая она не временная, а самая обычная. Исходная таблица находится у Вас в Общих таблицах под именем "Торг12". Там и вносите изменения. Либо создайте свою таблицу печати.
    amoRNizam нравится это.
  3. TopicStarter Overlay
    amoRNizam
    Offline

    amoRNizam Опытный в 1С

    Регистрация:
    14 окт 2015
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Я разобрался уже. Спасибо!

Поделиться этой страницей