8.х Печатная форма не выводить пустые реквизиты

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем ILDARIAN, 29 апр 2013.

  1. TopicStarter Overlay
    ILDARIAN
    Offline

    ILDARIAN Опытный в 1С

    Регистрация:
    6 янв 2013
    Сообщения:
    131
    Симпатии:
    1
    Баллы:
    29
    Такая проблема. Есть справочник "контрагенты" и есть макет печатной формы элемента справочника. На печатную форму выводятся реквизиты справочника в столбик, но есть реквизиты которые не заполнены.

    Как сделать так чтобы не выводились на печатную форму пустые реквизиты. Форма создавалась конструктором печатных форм.

    Процедура Печать() Экспорт
    ТабДок = Новый ТабличныйДокумент;
    Макет = Справочники.КонтрагентыСчета.ПолучитьМакет("Печать");
    Шапка = Макет.ПолучитьОбласть("Шапка");

    Шапка.Параметры.Заполнить(ЭтотОбъект);

    ТабДок.Вывести(Шапка);



    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    КонецПроцедуры

    Такой вот простой макет

    Вложения:

    • 111.png
      111.png
      Размер файла:
      276,9 КБ
      Просмотров:
      42
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    сделайте в макете 1 параметр (например Адрес) и выводите примерно так

    Код:
    Процедура Печать() Экспорт
    ТабДок = Новый ТабличныйДокумент;
    Макет = Справочники.КонтрагентыСчета.ПолучитьМакет("Печать");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    //Шапка.Параметры.Заполнить(ЭтотОбъект);
    Шапка.Параметры.Адрес = "" + ЭтотОбЪект.Наименование + Символы.ПС + "ул." + ЭтотОбЪект.Улица + Символы.ПС + "м." + ЭтотОбЪект.Город + Символы.ПС + ЭтотОбЪект.Индекс;
    ТабДок.Вывести(Шапка);
    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    КонецПроцедуры
    только на вашем скрине я область Шапка не вижу.
  3. TopicStarter Overlay
    ILDARIAN
    Offline

    ILDARIAN Опытный в 1С

    Регистрация:
    6 янв 2013
    Сообщения:
    131
    Симпатии:
    1
    Баллы:
    29
    а как быть с полями которые не заполнены? например если город пустой, его не нужно выводить.
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    простите не доделала малость, вот так можно поправить
    Код:
    Шапка.Параметры.Адрес = "" + ?(ЗначениеЗаполнено(ЭтотОбЪект.Наименование), ЭтотОбЪект.Наименование + Символы.ПС, "") + ?(ЗначениеЗаполнено(ЭтотОбЪект.Улица), "ул." + ЭтотОбЪект.Улица + Символы.ПС, "") + ?(ЗначениеЗаполнено(ЭтотОбЪект.Город), "м." + ЭтотОбЪект.Город + Символы.ПС, "") + ?(ЗначениеЗаполнено(ЭтотОбЪект.Индекс), ЭтотОбЪект.Индекс, "");
    если надо, чтоб пустые строчки оставались, то конструкцию "Символы.ПС" надо вынести в каждом случае за скобки

    отладка наверное все равно потребуется, это так набросок кода
  5. TopicStarter Overlay
    ILDARIAN
    Offline

    ILDARIAN Опытный в 1С

    Регистрация:
    6 янв 2013
    Сообщения:
    131
    Симпатии:
    1
    Баллы:
    29
    Ошибка: Преобразование объекта по типу булево не может быть выполнено. Вроде все так как у Вас сделал



    Код:
    ТабДок = Новый ТабличныйДокумент;
    Макет = Справочники.КонтрагентыСчета.ПолучитьМакет("Печать");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(ЭтотОбъект);
    Шапка.Параметры.Наименование = "" + ?(ЗначениеЗаполнено(ЭтотОбъект.Наименование),ЭтотОбъект.Наименование + Символы.ПС,"") +
    ?("ФИО" + ЗначениеЗаполнено(ЭтотОбъект.Фамилия),ЭтотОбъект.Фамилия,"")+ Символы.ПС +
    
    ?("г." + ЗначениеЗаполнено(ЭтотОбъект.Город),ЭтотОбъект.Город + Символы.ПС,"") +
    
    ?("с." + ЗначениеЗаполнено(ЭтотОбъект.Село),ЭтотОбъект.Село + Символы.ПС,"") +
    
    ?("обл." + ЗначениеЗаполнено(ЭтотОбъект.Область),ЭтотОбъект.Область + Символы.ПС,"") +
    
    ?("Р-н" + ЗначениеЗаполнено(ЭтотОбъект.Район),ЭтотОбъект.Район + Символы.ПС,"") +
    
    ?("ул." + ЗначениеЗаполнено(ЭтотОбъект.Улица),ЭтотОбъект.Улица + Символы.ПС,"") ;
    
    ТабДок.Вывести(Шапка);
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
  6. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну почти
    Код:
    ТабДок = Новый ТабличныйДокумент;
    Макет = Справочники.КонтрагентыСчета.ПолучитьМакет("Печать");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(ЭтотОбъект);
    Шапка.Параметры.Наименование = "" + ?(ЗначениеЗаполнено(ЭтотОбъект.Наименование),ЭтотОбъект.Наименование + Символы.ПС,"") +
    ?(ЗначениеЗаполнено(ЭтотОбъект.Фамилия),"ФИО" + ЭтотОбъект.Фамилия,"")+ Символы.ПС +
    ?(ЗначениеЗаполнено(ЭтотОбъект.Город),"г." + ЭтотОбъект.Город + Символы.ПС,"") +
    ?(ЗначениеЗаполнено(ЭтотОбъект.Село),"с." + ЭтотОбъект.Село + Символы.ПС,"") +
    ?(ЗначениеЗаполнено(ЭтотОбъект.Область), "обл." + ЭтотОбъект.Область + Символы.ПС,"") +
    ?(ЗначениеЗаполнено(ЭтотОбъект.Район),"Р-н" + ЭтотОбъект.Район + Символы.ПС,"") +
    ?(ЗначениеЗаполнено(ЭтотОбъект.Улица),"ул." + ЭтотОбъект.Улица,"") ;
    ТабДок.Вывести(Шапка);
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    конструкция
    Код:
    ?(условие, значение1, значение2) работает по принципу
    Код:
    Если Условие = Истина Тогда
    Значение1;
    Иначе
    Значение2;
    КонецЕсли;
    потому ошибка была в том, что вы в условие сумму строк запихали, посмотрите внимательнее на вашу и мою конструкцию, а так должно отработать
  7. TopicStarter Overlay
    ILDARIAN
    Offline

    ILDARIAN Опытный в 1С

    Регистрация:
    6 янв 2013
    Сообщения:
    131
    Симпатии:
    1
    Баллы:
    29
    Опечатался. Вот такая ошибка : Преобразование значения к типу Булево не может быть выполнено.

    да точно. Все работает отлично, спасибо большое !!!!!
  8. TopicStarter Overlay
    ILDARIAN
    Offline

    ILDARIAN Опытный в 1С

    Регистрация:
    6 янв 2013
    Сообщения:
    131
    Симпатии:
    1
    Баллы:
    29
    все выводилось пока не дошел до реквизита дом


    ?(ЗначениеЗаполнено(ЭтотОбъект.Дом),"Дом. " + ЭтотОбъект.Дом + Символы.ПС,"") ;


    {Справочник.КонтрагентыСчета.МодульОбъекта(23,3)}: Встроенная функция может быть использована только в выражении. (ПС)
    ?<<?>>(ЗначениеЗаполнено(ЭтотОбъект.Корпус),"Корп. " + ЭтотОбъект.Корпус + Символы.ПС,"") ; (Проверка: Толстый клиент (обычное приложение))

    это выдало при проверке синтаксиса
  9. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    весь код выложите
  10. TopicStarter Overlay
    ILDARIAN
    Offline

    ILDARIAN Опытный в 1С

    Регистрация:
    6 янв 2013
    Сообщения:
    131
    Симпатии:
    1
    Баллы:
    29
    Процедура Печать() Экспорт
    ТабДок = Новый ТабличныйДокумент;
    Макет = Справочники.КонтрагентыСчета.ПолучитьМакет("Печать");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(ЭтотОбъект);
    Шапка.Параметры.Наименование = "" + ?(ЗначениеЗаполнено(ЭтотОбъект.Наименование),ЭтотОбъект.Наименование + Символы.ПС,"") +

    ?(ЗначениеЗаполнено(ЭтотОбъект.Фамилия),"ФИО: " + ЭтотОбъект.Фамилия,"")+ Символы.ПС +

    ?(ЗначениеЗаполнено(ЭтотОбъект.Город),"г. " + ЭтотОбъект.Город + Символы.ПС,"") +

    ?(ЗначениеЗаполнено(ЭтотОбъект.Село),"с. " + ЭтотОбъект.Село + Символы.ПС,"") +

    ?(ЗначениеЗаполнено(ЭтотОбъект.Область),"обл. " + ЭтотОбъект.Область + Символы.ПС,"") +

    ?(ЗначениеЗаполнено(ЭтотОбъект.Район),"Р-н. " + ЭтотОбъект.Район + Символы.ПС,"") +

    ?(ЗначениеЗаполнено(ЭтотОбъект.Улица),"ул. " + ЭтотОбъект.Улица + Символы.ПС,"") ;

    ?(ЗначениеЗаполнено(ЭтотОбъект.Дом),"Дом. " + ЭтотОбъект.Дом + Символы.ПС,"") ;

    ?(ЗначениеЗаполнено(ЭтотОбъект.Корпус),"Корп. " + ЭтотОбъект.Корпус + Символы.ПС,"") ;
    //
    //?(ЗначениеЗаполнено(ЭтотОбъект.Офис),"офис: " + ЭтотОбъект.Офис + Символы.ПС,"") ;
    //
    //?(ЗначениеЗаполнено(ЭтотОбъект.Дом),"Дом. " + ЭтотОбъект.Дом + Символы.ПС,"") ;
    ТабДок.Вывести(Шапка);

    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    КонецПроцедуры

    если убрать эту строку то все работает ?(ЗначениеЗаполнено(ЭтотОбъект.Корпус),"Корп. " + ЭтотОбъект.Корпус + Символы.ПС,"") ;
  11. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вы же формируете строку для вывода в отчет. В конце "проблемных строк" стоит ";" - это условие окончания строки, вам же надо "+" для соединения строк

    ";" - должно стоят в самом конце условий, до этого только "+"
  12. TopicStarter Overlay
    ILDARIAN
    Offline

    ILDARIAN Опытный в 1С

    Регистрация:
    6 янв 2013
    Сообщения:
    131
    Симпатии:
    1
    Баллы:
    29
    ой точно, спасибо, туплю ) Огромное спасибо Вам )

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