1с html в управляемой форме. Создание ссылки на объект базы данных

27
При интеграции 1С с веб-сайтами всегда встает вопрос о передачи некоторых данных на веб-сервер. Будь то это передача параметров запроса для получения данных от веб-сервера в 1С или же передача данных из 1С, которые... 14
У разработчиков на платформе 1С иногда возникает задача по взаимодействию системы 1С: Предприятие с различными почтовыми программами и протоколами. 1С Предприятие 8.0 имеет довольно удобные средства для отправки... 9
При обмене данными с веб-сайтами зачастую используется формат JSON. К сожалению, в 1С нет стандартных процедур для работы с данным форматом. В процессе реализации одного из проектов мной был разработан ряд процедур и... 8
Формат JSON в 1С до версии 8.3.6 не реализован, но нижет я приведу примеры функций которые можно использовать для полноценной работы JSON в 1С предыдущий версий. JSON (JavaScript Object Notation) это текстовый формат обмена данными,... 5
В этой статье я постараюсь описать процесс парсинга сайтов средствами 1С с примером. Это статья не является инструкцией к применению, а лишь демонстрирует возможности 1С. Что мы имеем? 1. Сайт в интернете, на котором...

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

  • Работать с компонентами ActiveX;
  • Вызывать Javascript;
  • Создавать и использовать ссылки на различные объекты базы данных.

Этот объект называется в 1С полеHTMLдокумента.

Элемент управления ПолеHTMLДокумента имеет одно существенное ограничение в использовании – его нельзя использовать для расположенных в таблице полей.

Создание собственного браузера в 1С

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

Проверим, как это работает.. Получим картинку (Рис.4)
Рис.4.

Проанализируем, что мы видим:

  1. Открылось поисковое окно, со ссылкой на сайт, при этом поиск осуществляется с помощью поисковой системы, назначенной по умолчанию;
  2. Обработка работает, интернет страницы открываются, переходы по ссылкам осуществляются;
  3. При вызове ресурса произошла ошибка сценария.

С чем связана ошибка? С тем, что ПолеHTMLДокумента – это фактически типовой Internet Explorer, причем не самой последней версии, который не поддерживает большинство современных ресурсов. Так что сайты, не поддерживающие режим совместимости, будут открываться с ошибками в сценарии.

Для удобства пользователя можно на форме создать навигационные команды «Вперед» и «Назад», которые будут описывать соответствующие перемещения.

Создание ссылки на объект базы данных

Задача состоит в следующем:

  • Создать список каких-либо объектов, допустим элементы справочника «Сотрудники»;
  • Получить ссылку на каждый из них;
  • Открывать их непосредственным нажатием на соответствующую ссылку.

Создадим нашу обработку и форму на ней.


Подробнее рассмотрим, что мы сделали:

  1. Создали текстовый документ, который содержит «тело» нашего сайта;
  2. Начало и окончание документа, а так же тело нашего ХТМЛ документа мы описали с помощью соответствующих тегов;
  3. Записали в него каждого сотрудника;
  4. В записях сотрудников у нас содержится информация, которая нам понадобится позже, когда мы будем открывать элементы кликая на ФИО сотрудников;
  5. Установили нашему полю текст, который описывает структуру.

Попробовав сейчас активировать любую из имеющихся гиперссылок мы столкнемся с тем, что «Такая страница не найдена»(Рис.8)
Рис.8

Продолжим описывать обработчик.

Создадим процедуру, которая обрабатывает клик мышки по гиперссылке на элемент справочника (Рис.9).

Рис.9

Рассмотрим её подробнее:

  1. Прежде всего отключим стандартную обработку щелчка по гиперссылке;
  2. Получим строку, характеризующую наш элемент, для этого в ДанныеСобытия получим значение параметра Element.id;
  3. Разделим полученную строку в соответствии с правилами, по которым мы её формировали (название справочника и уникальный идентификатор, разделенные между собой тире);
  4. Получаем ссылку на элемент, используя функцию ВозвратСсылки;
  5. Открываем элемент по полученной ссылке.

Протестируем выполнение созданного кода.

Так как в настройках нашей программы запрещено использование модальных окон, выполнение выше приведенного кода завершилось ошибкой (Рис.10). В противном случае все бы отработало нормально.

Рис.10

Зайдем в конфигураторе в меню Текст->Рефакторинг->Нерекомендуемые синхронные вызовы->Преобразовать вызовы модуля. По прошествии некоторого времени текст нашего модуля будет выглядеть как на Рис.11

Рис.11

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

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

Пара слов о Javascript

Вызовы функций JS в ранних версиях программы осуществлялись через параметр поля document.parentWindow.MyFunk(), однако в современных браузерах эта возможность была утрачена. Не срабатывают так же вызовы через eval().

Выход состоит в использовании специальной функции fireEvent, которая является универсальным механизмом обмена данными между 1С и Javascript.

HTML-редактор используется для создания пользовательских описаний в виде HTML-документов. Окно редактора содержит три закладки, позволяющие осуществлять просмотр и редактирование документа.

На закладке Редактирование документ отображается в текстовом и графическом виде:

На закладке Текст разработчик имеет возможность редактировать HTML-текст документа:

Закладка Просмотр предназначена для отображения документа в том виде, в котором он будет показан пользователю:

Работа с HTML-документом напоминает работу в обычном текстовом редакторе, однако HTML-редактор предоставляет ряд дополнительных возможностей, которые обусловлены использованием формата HTML:

Форматирование текста

Текст HTML-документа можно форматировать: устанавливать его стиль, абзацные отступы, выбирать размер шрифта, параметры, гарнитуру и т.д.:

При копировании текста из других текстовых редакторов (например, Word) HTML-редактор сохраняет исходное форматирование текста.

Таблицы

В HTML-документ можно вставлять таблицы и редактировать как параметры отдельных ячеек таблицы, так и изменять внешний вид и параметры всей таблицы:

Картинки

В HTML-документе могут быть размещены картинки. Разработчик имеет возможность задавать размеры картинки, ее положение и толщину рамки вокруг картинки:

Надписи

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

Меня всегда интересовал вопрос, как дела обстоят у российской фирмы 1С в плане web графики на html5. Посмотрим версии 1С 8.2.61 и 8.3.3.641. Зайдем на www.w3schools.com/html/html5_canvas.asp и перенесем примеры в обработку 1С.



Результаты не радуют. 1С в Internet Explorer, как и в тонком клиенте Windows не работает ничего. Видно проверка в 1С идет именно на IE и все замещается и не работает. Без библиотеки excanvas.js(спасибо ее разработчикам и Google) она просто ругается, но и она не спасает. Все остальные браузеры показывают правильный результат. В версии на Linux тоже все хорошо. Но там все предсказуемо из-за web-kit.

Меня 1C научила никогда не отступать от решения задачи, насколько сложной она не казалась с первого раза. Для этого надо понять, а как работает библиотека excanvas. Посмотреть на пример на Инфостарте и вспомнить, что до html5 Microsoft усиленно толкала свою систему VLM (http://msdn.microsoft.com/en-us/library/ee384217%28v=vs.85%29.aspx). Вот она и прекрасно работает со старыми версиями движков IE. И excanvas это эмуляция функций обрисовки графиков html5 через эту систему. Значит 1С надо немного помочь. Посмотрев как эта библиотека работает в старых IE, получилось решение что нужно добавить в для 1С. Делаем дополнительный флаг «Довесок для 1С» и добавляем внутри элементы , которые 1С сама не делает. Ура, заработало и в тонком клиенте и в IE. Делаем 1С ближе к HTML5.

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

К сожалению с выходом версии 8.3 ситуация не изменилась. Появился новый интерфейс Такси, но вышеописанные проблемы остались. Зато наш труд не пропал даром и все прекрасно работает в Такси.

Если кто захочет поэкспериментировать, скачивайте обработку на моем сайте: http://sikuda.ru/1s-i-html5

Теги: 1с, html5, canvas, ie10, ie7, ie9, 1c 8.3

Данная статья не подлежит комментированию, поскольку её автор ещё не является