Из чего состоит тег в 1с
Перейти к содержимому

Из чего состоит тег в 1с

  • автор:

1С html. Cоздание поля html документа

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

Рассмотрим пример. Разработаем обработку, которая будет представлять элемент справочника Пользователи в виде поля html документа. Для разработки примера я использовал демо БСП 3.1 (управляемое приложение).

Выведем в документ следующие поля справочника:

  • Наименование и Комментарий в виде текста;
  • ФизическоеЛицо и Подразделение в виде ссылок;
  • Фотографию пользователя;
  • Контактную информацию в виде таблицы.

Размещение реквизитов на форме

Для начала создадим внешнюю обработку и добавим форму. На форме создадим два реквизита Пользователь (тип СправочникСсылка.Пользователи) и ПредставлениеHTML (тип Строка неограниченной длины). Перетащим реквизиты в дерево элементов. Для элемента ПредставлениеHTML выберем вид Поле HTML документа и отключим отображение заголовка. Должно получится так:

Форма для поля html документа 1с 8

Теперь поработаем над программной частью формы:

  • Заполнять html поле данными будем при изменении пользователя. Поэтому создадим для него обработчик события ПриИзменении;
  • Работа же с самим полем потребует перехода на сервер, так как нам необходимо выполнять запрос и получать данные из хранилища значений. Поэтому для заполнения данных html создадим функцию ЗаполнитьHTMLПредставление с директивой НаСервереБезКонтекста. В качестве параметра передадим в нее ссылку на пользователя;

В итоге должно получиться следующее:

Получение данных

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

Функция возвращает структуру, в которой содержится две выборки. Первая, ВыборкаДанных — содержит одну строку с основными данными пользователя. Вторая, ВыборкаКонтактов — содержит контактную информацию пользователя, в разрезе двух полей: Вид и Представление. Вызов функции получения данных выглядит так:

Заполнение стилей 1с html поля

Теперь в функции ЗаполнитьHTMLПредставление будем описывать html документ. Начнем с обязательных тегов <html> и <head>. После чего перейдем к заполнению стилей (тег <style>), которые будут применяться во всем документе, а также в отдельных его блоках.

Рассмотрим заполнение стилей более подробно:

  • body — описание стилей тела документа. Так как заголовки у нас отсутствуют, стили будут действовать для всего документа.
    Свойство Описание
    margin-top Отступ от верхнего края документа
    margin-left Отступ от левого края документа
    font-family Шрифт
    font-size Размер шрифта
  • table — описание стилей таблиц.
    Свойство Описание
    border Описание границы (толщина: 1px, одинарная линия: solid)
    border-collapse Отображение границы вокруг ячеек таблицы (collapse: одна линия между ячейками)
  • td — описание стилей ячеек таблиц. th — описание стилей заголовочных ячеек таблиц.
  • a:link — описание стилей ссылок, a:hover — описание стилей ссылок, на которые наведен курсор.
    Свойство Описание
    color Цвет текста
    text-decoration Оформление текста подчеркиванием (underline — подчеркнутый текст)
  • p — описание стилей абзацев. Margin-top в данном контексте, означает отступ сверху абзаца.
  • img — описание стилей изображений. Задавать стили можно и для каждого отдельного изображения. Но если изображение одно (как у меня) или все они однотипные, то удобнее описать их в общем блоке стилей.
    Свойство Описание
    width Ширина
    height Высота

Создание тела html документа в 1с 8

После описания стилей займемся формированием тела документа. Для этого используем тег <body>.

Вывод изображения в html

Начнем с вывода фотографии пользователя. В элементе справочника она хранится в реквизите Фотография, в виде хранилища значения. Его мы получили вместе с остальными данными пользователя, при помощи запроса.

Разберем представленный код:

  • Хранилище содержит двоичные данные изображения, их необходимо получить. Используем для этого метод Получить(), который распаковывает данные хранилища;
  • В html мы можем вывести изображение либо указав ссылку на него, либо использовав его двоичные данные, в кодировке base64. Для этого используем метод Base64Строка;
  • После подготовки данных, можно выводить их в документ.
    • Используем тег <img>, применяемый для вывода изображений;
    • Атрибут src указывает адрес выводимого изображения или его данные. У нас это двоичные данные, поэтому в дополнение к ним необходимо использовать префикс data:image/ и указание типа данных base64.

    Для того чтобы отделить изображение от следующей информации, используем тег <p>. Он означает начало нового абзаца. При описании стилей мы указали, что перед началом нового абзаца устанавливается отступ в 10 пикселей.

    Вывод текстового реквизита в html

    После фотографии выведем основные данные пользователя в следующем формате:

    Начнем с имени пользователя:

    Разберем представленный код:

    • Для того, чтобы имя реквизита не сливалось с его содержанием, выделим его другим цветом. Для этого используем свойство <font>, позволяющее изменять характеристики текста. В нашем случае это цвет color.
    • После вывода данных используем тег <br>. Он предназначен для перехода на следующую строку.

    Вывод ссылки в html

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

    Разберем представленный код:

    • Для создания ссылок используется тег <a>. Его атрибут href задает адрес ссылки. Для удобства работы создадим шаблон для вывода навигационной ссылки на физлицо. В параметр %1 будем выводить ссылку, а в параметр %2 текст ссылки;
    • Для получения навигационной ссылки используем метод ПолучитьНавигационнуюСсылку(<Ссылка>);
    • Заполним параметры шаблона, используя строковую функцию СтрШаблон;

    Далее нам необходимо будет вывести еще один текстовый реквизит и еще один ссылочный. Для того чтобы не дублировать код вынесем добавление реквизита в html в отдельную, универсальную процедуру.

    Вывод всех реквизитов будет выглядеть следующим образом:

    Вывод таблицы в html 1с

    Осталось вывести таблицу контактной информации пользователя. Это делается довольно просто.

    • Для вывода таблицы используется тег <table>;
    • Для вывода строки таблицы тег <tr>;
    • Тег <td> отвечает за вывод ячейки;
    • Для вывода ячейки заголовка используется тег <th>.

    На этом формирование поля html документа в 1с завершено. Осталось только закрыть теги и вернуть сформированный текст.

    В итоге у нас получается html поле, заполненное следующим образом:

    Html документ сформированный в 1с

    Обработка нажатия на ссылку

    В нашей обработке мы используем не веб ссылки, а на навигационные ссылки 1с. По этой причине система не может корректно обработать их нажатие. Это можно исправить, создав обработчик события ПриНажатии, для Поля HTML документа.

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

    Новый взгляд на теги

    Система тегов (категорий) довольно удачно приживается во многих интернет-проектах.
    Тегами удобно помечать информации с тем, чтобы затем ее быстро находить.
    Обычно на интернет-порталах встречается плоская система тегов, т.е. объекты (записи в дневниках, статьи, картинки и т.п.) можно помечать некоторым тегом. При этом в некоторых случаях предпринимается попытка ввести синонимы, т.е. например тег «медведь» и «медведи» считаются одинаковыми.
    На самом деле, механизм тегов или категорий в умелых руках может быть гораздо выразительнее, если добавить несколько опций.
    Опция 1. Иерархия тегов.
    Вводится обычная древовидная иерархия тегов. Например, тег « Windows » является родителем тега « Windows XP », « Windows 2000», « Windows 95» и т.п.
    Такая иерархическая система позволяет осуществлять поиск по более общим категориям и назначать объектам более частные категории, не беспокоясь, что мелкие категории затеряются в большом массиве тегов.
    Опция 2. Составные теги.
    Можно завести специальные составные теги, которые ссылаются на несколько других тегов. Если объект помечен составным тегом, то считаем, что он помечен и всеми тегами, из которых состоит составной. Такая опция позволяет более просто классифицировать объекты.
    Примеры:
    Одним тегом «крутые мысли» можно помечать объект, вместо использования двух тегов «круто» и «мысли».
    Одним тегом «интересно о животных» можно помечать объект, вместо использования двух тегов «интересно» и «животные».

    Поля HTML-документа

    С момента перехода конфигураций с обычных форм на управляемые формы, все больше развиваются и становятся популярны различные web-инструменты. К примеру, одно из самых популярных — это текстовое поле HTML.

    Давайте разберемся, что это за объект в нашей базе.

    В большинстве случаев это реквизит формы, в который выводится информация, необходимая пользователю, которая сохранена в виде html-документа. Другими словами, чтобы уметь использовать поле ввода HTML, необходимо владеть минимальными навыками и знаниями языка HTML.

    В основном этот объект формы – поле HTML – используется для вывода необходимой ссылки на форму и отображает информацию по этой ссылке.

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

    2. Вывод печатной формы

    Также существует еще один вариант использования поля HTML в 1С. Этот использование этого поля для вывода печатной формы. Существуют ситуации, когда заказчику необходимо точно соблюсти шаблон предоставленного макета печатной формы. В таком случае необходимо использовать наше поле HTML-документа, конечно, перед этим необходимо будет создать макет HTML-документа, в котором сохраним точную копию шаблона.

    В более новых версиях БСП, уже имеются процедуры и функции, которые помогают преобразовывать необходимые данные в формат, который подходит для поля HTML-документа.

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

    В коде, который отображается в поле формы HTML, возможно использовать не только HTML, но и JavaScript.

    Также в новых релизах конфигурации существуют специальные процедуры для редактирования отображения информации в реквизите.

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

    Чем большую популярность набирает WEB, тем больше развиваются инструменты взаимодействий с объектами, которые к нему относятся. Ранее не было такого широкого использования поля HTML-документа в 1С, но с развитием системы и началом использования баз также через браузеры, места использования объекта увеличились и необходимо было улучшать его, чтобы соответствовать текущим реалиям в мире.

    Руководство администратора

    Теги, начинающиеся с 1С, определяют настройки системы "1С:Предприятие", а начинающиеся с TC — настройки "Первой Формы" (TC — это аббревиатура TaskCenter, одной из ключевых внутренних подсистем "Первой Формы").

    Общие настройки синхронизации

    Экземпляр настроек синхронизации, используется один тег на XML настройку.

    Имя настроек, используется для отображения в списке настроек

    Адрес сервиса "1С:Предприятие"

    Имя пользователя в "1С:Предприятие" для доступа к сервису

    Пароль пользователя в "1С:Предприятие" для доступа к сервису

    Адрес сервиса "Первой Формы"

    Имя пользователя в "Первой Форме" для доступа к сервису

    Пароль пользователя в "Первой Форме" для доступа к сервису

    Признак, публиковать в процессе синхронизации комментарии об изменении ДП ( true ) или нет ( false ).

    Данный признак устанавливается только в общих настройках синхронизации, а не в настройках отдельных категорий

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

    Для каждой базы "1С:Предприятие", с которой будет синхронизироваться "Первая Форма", нужен отдельный ДП для хранения GUID

    Название справочника в "1С:Предприятие", содержащего пользователей для синхронизации

    Интервал проверки очереди, в формате HH:mm:ss. Например, 00:05:00

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

    Если реквизит установлен как true, то фильтрация пользователей будет происходить на стороне "Первой Формы", что позволит фильтровать по виртуальным реквизитам. Однако этот метод работает значительно медленнее, чем фильтрация по физическим реквизитам на стороне "1С:Предприятие"

    Настройка логирования первичной выгрузки из 1С.

    • 0 — лог-файлы синхронизации 1С отключены

    • 1 — лог-файлы синхронизации 1С полные (настройка по умолчанию)

    • 2 — в лог-файлах синхронизации 1С отображаются только ошибки

    Настройка, позволяющая включить (true) и отключить (false) синхронизацию в 1С связанных ДП типа Lookup в Первой форме

    Настройка, позволяющая записывать комментарий в задаче и сообщение в логе об ошибке. По умолчанию (если опция не указана или пустая) устанавливается значение true

    Настройка, позволяющая опционально обновлять, создавать или обновлять+создавать при первичной выгрузке записи в 1Ф из 1С

    • 0 — Только создание

    • 1 — Только обновление

    • 2 — Создание и обновление (по умолчанию)

    Список настроек справочников для синхронизации, дочерний тег для SyncSettings. Содержит теги Record.

    Настройки синхронизации одного справочника, элемент списка SyncRecords.

    Системное имя справочника/документа в "1С:Предприятие"

    Псевдоним справочника/документа в "1С:Предприятие"

    ID категории в "Первой Форме", созданной для синхронизации с этим справочником/документом

    Название категории в "Первой Форме"

    Источник данных (только в источнике можно создавать задачи/документы. Таким образом, влияет только на создание задач)

    • _1C — источник "1С:Предприятие"

    • _TC — источник "Первая Форма"

    • Both — любая из сторон может выступать источником

    Направление синхронизации, влияет на любые изменения

    • TwoSided — двусторонняя синхронизация

    • From1CtoTC — данные синхронизируются только из "1C:Предприятие" в "Первую Форму"

    • FromTCto1C — данные синхронизируются только из "Первой Формы" в "1С:Предприятие"

    Обработка входящих событий (при ошибке и не только)

    • NotAssigned — не назначено. Ошибка будет проигнорирована.

    • Ignore — проигнорировать ошибку, не будет выполнено никаких дополнительных действий помимо уведомления.

    • ForceAddToQuery – не пытаясь выполнить в реальном времени, сразу добавлять событие в очередь и выполнять позднее

    • AddToQuery – при ошибке добавить в очередь и выполнить позднее

    • Cancel — запретить и отклонить событие

    Способ уведомления при ошибке для справочника, по умолчанию

    • NotAssigned — не уведомлять пользователя

    • Comment — добавить комментарий к задаче/документу

    • Alert — выдать предупреждение

    • Both — добавить комментарий к задаче/документу и выдать предупреждение

    Сообщение об ошибке при синхронизации, по умолчанию; используется если не указано сообщение для конкретного события

    Сообщение при успешной синхронизации, по умолчанию; используется если не указано сообщение для конкретного события

    ID смарт-фильтра в категории, для фильтрации данных, отправляемых из "Первой Формы" в 1С (если не все задачи должны синхронизироваться)

    • 0 — фильтрация отключена

    Если значение False , то при синхронизации тексты задач в "Первой Форме" автоматически заменяются на тексты из 1С.

    Если значение True , то тексты задач в "Первой Форме" остаются без изменений

    • False (по умолчанию)

    Секция настроек синхронизации файлов для конкретного справочника.

    Имя справочника "1С:Предприятие", в котором хранятся приложенные файлы

    Имя реквизита "1С:Предприятие", в котором хранятся двоичные данные файла

    Имя реквизита "1С:Предприятие", в котором хранится имя файла

    Имя реквизита "1С:Предприятие", в котором хранится ссылка на документ-владелец

    Допустимое направление синхронизации файлов

    • TwoSided — двусторонняя синхронизация

    • From1CtoTC — данные синхронизируются только из "1С:Предприятие" в "Первую Форму"

    • FromTCto1C — данные синхронизируются только из "Первой Формы" в "1С:Предприятие"

    Список настроек реквизитов для синхронизации, дочерний для Record, содержит список элементов Property

    Настройки синхронизации одного реквизита.

    Системное имя реквизита в "1С:Предприятие"

    Имя реквизита в "1С:Предприятие"

    ID доп. параметра в "Первой Форме"

    Имя доп. параметра в "Первой Форме"

    Тип доп. параметра в "Первой Форме"

    • Checkbox — флажок да/нет

    • Combobox — выбор из выпадающего списка

    • DateTime — дата и время

    • LookUpField — ссылка на задачу (документ)

    • Select — выбор из выпадающего списка

    • TextArea — большой текст

    • TextareaWOFormat — большой текст без форматирования

    • URL — нетипизированная ссылка

    Обязателен ли для заполнения. При создании категории в "Первой Форме" будет создано соответствующее ограничение

    Для типов "ссылка" (lookup). Указывается имя справочника, на который указывает ссылка (или нескольких справочников, если ДП настроен на сводный раздел)

    Не заполняется вручную. ДП, хранящий GUID для синхронизации ссылок с "1С:Предприятие" (см. здесь)

    Для типов Дата, ДатаВремя — формат, в котором передаётся время в "1С:Предприятие". Пример: “HH:mm:ss”.

    (больше не используется, см. Примечание 3)

    Объекты в иерархии справочников (для документов не актуально), для которых можно использовать данный реквизит

    • ДляГруппыИЭлемента — для любого объекта

    • ДляГруппы — только для группы

    • ДляЭлемента — только для элемента

    Если true и указан тип "ссылка", то будет передаваться как текстовое представление, без выгрузки подчиненного словаря

    Примечание 1 . Таблица соответствия типов ДП "Первой Формы" и данных "1С:Предприятие":

    Тип в "Первой Форме"

    Тип в "1С:Предприятие"

    Типизированная ссылка на справочник или документ (ДокументСсылка, СправочникСсылка)

    NumericValue, Money, Numerator

    Text, TextArea, TextAreaWOFormat

    Строка либо УникальныйИдентификатор

    Примечание 2. Любой тип можно отобразить на ДП типа "Текст". В таком случае в "Первую Форму" будет выгружено текстовое представление реквизита.

    Примечание 3. Чтобы избежать проблем, вызванных различиями региональных настроек серверов 1С, при отправке и получении данных в форматах Дата, Число и Булево всегда используются следующие маски:

    • Дата: dtYYYYMMDDHHMMSS , где dt — простой текстовый префикс, а HHMMSS — необязательные разряды (если тип поля Дата, а не ДатаВремя, то их можно пропускать);

    • Число: nm-123456.897 где nm — префикс, десятичный разделитель — точка, число разрядов до и после точки — любое, разделители тысяч не используются;

    • Булево: false и true .

    Список разрешенных значений (для ДП "Выбор из нескольких значений" и для колонки "Выбор из выпадающего списка"). В списке элементы Value.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *