8.х Изменение размера шрифта в макете ценника

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем serega2671, 7 апр 2010.

  1. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Подскажите как сделать условие?

    Если длина наименования в макете ценника больше определенного количества символов, то необходимо, чтобы наименование печаталось более мелким шрифтом. С условием на длину разобрался вроде, а со шрифтом что-то никак..
  2. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Шрифт можно задавать программно через "ОбластьЯчеекТабличногоДокумента (SpreadsheetDocumentRange)", параметр "Шрифт (Font)". В синтаксис-помощнике можно почитать подробнее.
  3. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    можно немного поподробнее, а то в Спомощнике не понятно как именно работать с этим
  4. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Тут всё просто:
    Код:
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка|Шаг");
    Макет.Область(ОбластьШапка).Шрифт = Новый Шрифт(, , Истина, Истина);
    
    
    Определённой области ячеек присваевается определённый шрифт. Просто в макете выделяете необходимую вам область, создаёте нужные вам шрифты (можно, как я, конструктором с нуля - в моём случае получился полужирный наклонный, а можно - на основании. В конце концов, можно схватить системный), и уже исходя из условий, жонглируете этим параметром. Важно только одно: устанавливать шрифт надо перед выводом области ячеек в табличный документ, так как параметры выведенной в табличный документ области сохраняются на тот момент, как их вывели.
  5. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Выскакивает ошибка {Обработка.ПечатьЦенников(290)}: Ошибка при вызове метода контекста (Область): Область не найдена: ТабличныйДокумент

    Макет.Область(ОбластьЦенника).Шрифт = Новый Шрифт(, , Истина, Истина);

    с чем она связана?
  6. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    А как вы получаете ОбластьЦенника? Обычно, если 1С ругается, что не найдена область, значит, она действительно отсутствует.
  7. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    ОбластьЦенника = Макет.ПолучитьОбласть("Строка|Столбец");

    получаю вот так. с этим вроде разобрал сейчас ни на что не ругается, но только почему то шрифт не меняется.

    Макет.Область(ОбластьЦенника).Шрифт = Новый Шрифт(, , Истина, Истина); - как здесь в этой строке увеличить сам размер шрифта?? первые два парметра которые идут в скобках пустыми там или нет?
  8. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    По первому вопросу, думаю, смогу сказать лучше, если увижу код, а вот по второму отвечу уже сейчас: я создавал конструктором с нуля. Вы можете этим конструктором создать люьой шрифт. Синтаксис-помощник в помощь. Я его процитирую:

  9. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    дома попробую, спасибо
  10. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Код:
    Функция ПечатьЦенника() Экспорт
    
    Если НЕ ЗначениеЗаполнено(Организация) Тогда
    Предупреждение("Не выбрана организация!");
    Возврат Неопределено;
    КонецЕсли;
    
    
    ТабДокумент                     = Новый ТабличныйДокумент;
    
    
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Ценник";
    Макет                           = ПолучитьМакет(""+"Ценник"+МакетПечати);
    //ОбластьЦенника                  = Макет.ПолучитьОбласть("Строка|Столбец");
    Если МакетПечати="39_120" Тогда
    ТабДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
    строки=4;
    КонецЕсли;
    Если МакетПечати="39_72" Тогда
    ТабДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Портрет;
    строки=7;
    ИначеЕсли МакетПечати="2_ЦЕНЫ" Тогда
    ТабДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Портрет;
    Строки=8;
    КонецЕсли;
    ДатаПечати = РабочаяДата;
    
    ТекСтолбец = 0;
    ТекСтрока  = 0;
    
    Для Каждого СтрокаТаблицы Из Товары Цикл
    Если СтрокаТаблицы.Печать Тогда
    Для Тмп = 1 По СтрокаТаблицы.Количество Цикл
    
    Если СтрокаТаблицы.Скидка<>0 Тогда
    ОбластьЦенника                  = Макет.ПолучитьОбласть("Строка|Столбец1");
    Иначе
    ОбластьЦенника                  = Макет.ПолучитьОбласть("Строка|Столбец");
    
    КонецЕсли;
    ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы);
    
    дл = стрдлина (СтрокаТаблицы.Номенклатура.НаименованиеПолное);
    
    Если дл > 24 тогда
    
    Макет.Область("Строка|Столбец").Шрифт = Новый Шрифт(,20,Истина,Истина);
    
    КонецЕсли;
    
    
    
    Если СтрокаТаблицы.Скидка<>0 Тогда ОбластьЦенника.Параметры.СтрСкидка                       = СтрСкидка; КонецЕсли;
    ОбластьЦенника.Параметры.НоменклатураНаименование        = СтрокаТаблицы.Номенклатура.НаименованиеПолное;
    //ОбластьЦенника.Параметры.ХарактеристикаНаименование      = СтрокаТаблицы.ХарактеристикаНоменклатуры;
    ОбластьЦенника.Параметры.ЕдиницаНаименование             = СтрокаТаблицы.ЕдиницаИзмерения;
    
    Если НЕ МакетПечати="2_ЦЕНЫ" Тогда
    ОбластьЦенника.Параметры.НоменклатураНаименование        = СтрокаТаблицы.Номенклатура.НаименованиеПолное;
    
    ОбластьЦенника.Параметры.Цена                            = ОбщегоНазначения.ФорматСумм(СтрокаТаблицы.Цена, Валюта, "00");
    Иначе
    
    
    
    ОбластьЦенника.Параметры.Цена                            = СтрокаТаблицы.Цена;
    
    ОбластьЦенника.Параметры.ЦенаПоКарте                   =СтрокаТаблицы.ЦенаПоКарте;
    КонецЕсли;
    
    
    
    
    ОбластьЦенника.Параметры.ДатаПечати= ДатаПечати;
    ОбластьЦенника.Параметры.Артикул= СтрокаТаблицы.Номенклатура.Артикул;
    ОбластьЦенника.Параметры.Организация                     = Организация;
    ОбластьЦенника.Параметры.ОрганизацияНаименование         = Организация;
    //ОбластьЦенника.Параметры.НоменклатураСтранаПроисхождения = СтрокаТаблицы.Номенклатура.СтранаПроисхождения;
    
    Если ТекСтолбец = 0 Тогда
    ТабДокумент.Вывести(ОбластьЦенника);
    Иначе
    ТабДокумент.Присоединить(ОбластьЦенника);
    КонецЕсли;
    
    ТекСтолбец = ТекСтолбец + 1;
    
    Если ТекСтолбец = 3 Тогда
    ТекСтрока  = ТекСтрока + 1;
    ТекСтолбец = 0;
    КонецЕсли;
    
    Если ТекСтрока = строки Тогда
    ТекСтрока = 0;
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    
    ТабДокумент.ТолькоПросмотр = Истина;
    
    Возврат ТабДокумент;
    
    КонецФункции // ПечатьЦенника()
    
    
    


    Сейчас вроде не ругается, но все равно шрифт не присваивает новый!?
  11. TopicStarter Overlay
    serega2671
    Offline

    serega2671 Опытный в 1С

    Регистрация:
    18 май 2009
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    все вроде получилось-)
  12. tim2004
    Offline

    tim2004

    Регистрация:
    15 дек 2007
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    А подробнее?

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