Два параметра в одной ячейке макета 1с

Обновлено: 04.07.2024

Значения ячеек и элементы управления в табличном документе

Табличный документ (ТД) состоит из строк и столбцов, которые образуют ячейки. В этой статье рассмотрены возможности "1С:Предприятия 8", позволяющие разместить в ячейках табличного документа элементы управления для редактирования значений.

Ниже рассмотрены следующие темы:

  • Свойства "Текст" и "Значение"
  • Свойство "Формат"
  • Элементы управления
    • Элементы управления, встроенные в ячейку
    • Элементы управления, не встроенные в ячейку
    • Расширение элементов управления, расположенных в поле табличного документа

    Свойства "Текст" и "Значение" ячейки табличного документа

    Основные свойства у каждой ячейки табличного документа — это Текст и Значение , причем по умолчанию доступно свойство Текст , а свойство Значение заблокировано.

    ВАЖНО! Свойства Текст и Значение не могут быть использованы одновременно! Если свойство-признак СодержитЗначение установлено в значение Истина , то свойство Текст недоступно, и наоборот, если свойство-признак СодержитЗначение равно Ложь , то свойство Значение недоступно, а также все связанные другие свойства, например, ТипЗначения и ЭлементУправления .

    Ниже на рисунке показана палитра свойств для ячейки табличного документа. Обратите внимание, что флажок Содержит значение не установлен, поэтому данная ячейка будет отображать Текст .


    Свойство Текст имеет тип Строка . Если в ячейке необходимо разместить какую-либо текстовую информацию, необходимо использовать именно свойство Текст , например:

    Обратите внимание, что даже если вы присвоите свойству Текст значение другого типа (не строкового), то оно все равно будет интерпретировано как строка. Значения базовых типов преобразуются к строке, а для ссылочных типов данных (элементов справочников, документов и т. д.) берется их представление. Если же необходимо разместить в ячейке значение другого типа, например, число, булево, дату или ссылку, и при этом не преобразовывать это значение к строке, то нужно использовать свойство Значение .

    Для того чтобы появилась возможность использовать свойство Значение , необходимо явно присвоить свойству ячейки СодержитЗначение значение Истина или установить флажок Содержит значение в палитре свойств, как это показано на следующем рисунке:


    Для ячейки, у которой установлен признак СодержитЗначение , можно задать тип значения, размещаемого в ячейке. На следующем рисунке указан тип Строка , но есть также возможность указать несколько возможных типов, используя составной тип данных:


    Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка:

    Свойство "Формат" ячейки табличного документа

    Для ячейки табличного документа можно задавать формат вывода данных. Для этого используется свойство Формат , которое содержит форматную строку. Приемы работы с форматной строкой полностью совпадают с функцией Формат() системы "1С:Предприятие 8". Свойство Формат может быть установлено как интерактивно — через палитру свойств, так и программно — из встроенного языка, например:

    Элемент управления в табличном документе

    Элементы управления, встроенные в ячейку

    Для ячейки, у которой установлен признак СодержитЗначение , можно также задать элемент управления, который будет использоваться для редактирования этого значения.

    Элемент управления можно назначить через палитру свойств или из встроенного языка с помощью метода УстановитьЭлементУправления() . Чтобы проверить в программе, установлен ли элемент управления для конкретной ячейки, можно использовать свойство ЭлементУправления , которое возвращает элемент управления, назначенный для ячейки.

    Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом, и в ней отображается флажок:


    Ниже показан пример установки элемента управления типа Флажок из встроенного языка:

    Элементы управления, не встроенные в ячейку

    Существует еще один способ размещения элемента управления в ячейке: использование независимого элемента управления и его "привязка" к нужной ячейке. В этом случае сама ячейка не участвует в процессе работы, а ее значения и свойства ни на что не влияют. Значения нужно будет непосредственно получать из элемента управления как обычного элемента формы. Ячейка при этом используется только как область размещения (привязки) элемента управления.


    Ниже показано, как могут выглядеть такие элементы управления (не встроенные в ячейку):

    В следующем фрагменте приводится пример размещения не встроенного в ячейку элемента управления в табличном документе:

    Расширение элементов управления, расположенных в поле табличного документа

    Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:


    Разберем самые важные свойства и методы:

    • Свойство ВстроенВЯчейку имеет тип Булево и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
    • Свойство Видимость позволяет показать или скрыть элемент управления.
    • Свойство Значение предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
    • Метод Расположить позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.

    Для элементов управления, расположенных в табличном документе, можно обрабатывать события, например, При изменении . Процедура-обработчик события должен находиться в модуле формы. Вот почему элементы управления имеет смысл располагать в табличном документе, только если он выводится в диалог формы (в поле табличного документа).

    Свойство "Защита" ячейки табличного документа

    Это свойство имеет тип Булево и содержит признак защиты ячейки от редактирования. В режиме просмотра в табличном документе недоступны для редактирования ячейки и рисунки, у которых установлено свойство Защита .

    Исходный отчет


    Для формирования данного отчета необходим один справочник «Сотрудники» с реквизитами «ДатаРождения», «Должность». Пусть фамилия, имя и отчество сотрудника хранятся вместе в одном поле по умолчанию – «Наименование». Для указания должности сотрудника существует другой простой справочник «Должности» с полями по умолчанию. Структура необходимых справочников приведена на рисунке ниже.

    Структура данных

    Теперь создадим новый отчет и назовем его «СписокСотрудников». Перейдем на вкладку «Макеты» и создадим новый макет типа «ТабличныйДокумент».
    Перед нами откроется пустой табличный документ, готовый к работе. Теперь нам нужно представить необходимый отчет в виде макета.
    Для этого сначала скопируем исходный отчет в чистый табличный документ, т.е. в макет отчета. Получится что-то вроде этого:

    Исходный макет

    Приведем макет в порядок – сделаем выравнивание заголовков по центру, для таблицы зададим отображение границ и удалим из таблицы все данные, кроме первой записи. Она у нас будет для образца.
    Разобьем готовый отчет на области следующим образом:

    Области макета

    Для каждой области необходимо присвоить соответствующее имя, для этого необходимо выделить нужную область (в данном случае все области представляют собой группы строк) и нажать на кнопку с пиктограммой, или комбинацию клавиш Ctrl+Shift+N. В появившемся окне нужно вписать имя данной области. Назовем области так, как они указаны на рисунке.
    Теперь те ячейки таблицы, в которых должны выводиться данные из информационной базы, необходимо обозначить как содержащие шаблон. Для этого выделяется это поле, и в контекстном меню (правая клавиша мыши) выбирается «Свойства». В выпадающем списке свойства ячейки «Заполнение» необходимо выбрать «Шаблон» (пример на рисунке ниже).

    Заполнение=Шаблон

    После этого если в тексте ячейки встретится выражение в квадратных скобках, то оно будет восприниматься системой 1С как параметр. Например, если текст ячейки следующий:

    Меня зовут [МоеИмя],

    то для вывода текста «Меня зовут Иван» достаточно параметру «МоеИмя» присвоить значение «Иван».
    В нашем случае шаблоном будет дата вывода отчета, а также все столбцы из строки, содержащей данные сотрудника. В итоге после всех манипуляций макет отчета будет выглядеть следующим образом:

    Итоговый макет

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

    Gigi --> Gigi



    Просмотр профиля

    или на пример не шаблон, а просто ячейка с заполнением параметр:

    Flexy --> Flexy



    Просмотр профиля

    Глобальный контекст (Global context)
    Формат (Format)
    Синтаксис:

    Bernet --> Bernet



    Просмотр профиля Gigi @ Сегодня, 16:20 ,
    Устанавливайте формат сразу при передаче параметра в шаблон, например:
    Дописываю конфигурации на платформе 8.х.
    - Управление торговым предприятием для Украины
    - Управление производственным предприятием для Украины
    - Управление небольшой фирмой для Украины
    - Бухгалтерия для Украины;
    - Общепит для Украины
    - Ресторан (Рарус)
    - Розница Gigi --> Gigi



    Просмотр профиля Устанавливайте формат сразу при передаче параметра в шаблон, например: Petre --> Petre



    Просмотр профиля

    Основы формирования табличного документа на основе макета

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

    Области макета предназначены для однократного или многократного вывода, например, ниже представлен макет для печати расходной накладной:

    Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7.7, в ячейку нельзя вписать выражение. В версии 8.0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию "Параметры" объекта "ТабличныйДокумент".

    Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы. К области можно обратиться по имени или по координатам. Можно также обращаться к пересечению областей, используя вертикальную черту (как в версии 7.7).

    Общая схема

    Общая схема формирования печатной формы на основе макета:

    1. Создание макета в табличном редакторе (определение областей, имен параметров, форматирования).
    2. Создание нового табличного документа (этот пункт не требуется, если отчет выводится в элемент управления ПолеТабличногоДокумента).
    3. Получение макета в переменную (метод ПолучитьМакет).
    4. Получение областей макета (метод ПолучитьОбласть).
    5. Заполнение параметров области (свойство Параметры).
    6. Вывод области в табличный документ (методы Вывести и Присоединить).
    7. Установка свойств отображения табличного документа (сетка, заголовки, только просмотр и т.д.).
    8. Отображение табличного документа на экране (а может быть отправка на принтер или сохранение).

    Пример вывода табличного документа

    Ниже приведен пример формирования печатной формы расходной накладной из модуля документа:

    Процедура Печать(ТабДок) Экспорт

    //создание нового табличного документа
    ТабДок = Новый ТабличныйДокумент ;

    //получение макета для печати расходной накладной
    Макет = Документы.РасходнаяНакладная. ПолучитьМакет ("Основной");

    //получим область "Заголовок" как новый табличный документ (!)
    Область = Макет. ПолучитьОбласть ("Заголовок");

    //укажем параметры области
    Область. Параметры .НомерДокумента = Номер;
    Область.Параметры.От = Дата;
    Область.Параметры.Кому = Контрагент;

    //выведем заполненную область "Заголовок" в табличный документ
    ТабДок. Вывести (Область);

    //выведем область "Шапка" в табличный документ
    ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));

    //получение области "Строка"
    //обратите внимание, что это можно сделать до цикла по строкам
    Область = Макет.ПолучитьОбласть("Строка");

    //вывод строк документа в печатную форму
    Для Каждого СтрСостава Из Состав Цикл

    //заполнение параметров области из строки табличной части
    Область.Параметры. Заполнить (СтрСостава);

    //вывод сформированной области в табличный документ
    ТабДок.Вывести(Область);

    КонецЦикла;

    //вывод области "Подвал"
    Область = Макет.ПолучитьОбласть("Подвал");
    Область.Параметры.ИтогоКоличество = Состав.Итог("Количество");
    Область.Параметры.ИтогоСумма = Состав.Итог("Сумма");
    ТабДок.Вывести(Область);

    //установим параметры отображения табличного документа
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Истина;
    ТабДок.ОтображатьСетку = Ложь;

    //покажем табличный документ на экране
    ТабДок. Показать ();

    Читайте также: