Статьи

Механізм використання API на javascript в 1с. Приклад 1С API

У попередній статті "Можливості API на javascript" неодноразово згадувалося використання API від Яндекс. У цій статті буде описаний механізм використання API на javackript в 1с. Усі, хто знайомий з основами програмування в HTML і JavaScript, можуть не читати теоретичну вступну та перейти до практичної частини.

Для початку хотілося б нагадати, що для програміста не повинно бути кордонів у вигляді нових мов коду і складних завдань. Нові мови програмування та складні завдання роблять нас сильнішими і досвідченішими.

Щоб успішно виконати завдання по інтеграції API в конфігурацію, бажано мати початкові знання програмування HTML і JavaScript. Але якщо ви ними не володієте, то короткий лікнеп і лістинг коду зможуть вам допомогти.

Якщо ми звернемося до документації по API Яндекс.Карти, то побачимо подібний текст:


Це Код, написаний на HTML. Текст, укладений в трикутні дужки, називається тегом. Тег в перекладі загальнодоступною мовою - це коробка з назвою, відкриваючи яку ми очікуємо побачити ту чи іншу річ. Якщо коробка буде називатися "Вивіски", то відкривши її, ми очікуємо побачити саме таблички з текстом, а не печиво або цукерки. Те ж саме відбувається і тут. Наприклад, Тег означає, що всередині лежить заголовок сторінки з важливою технічною інформацією.

У наведеному вище прикладі бачимо, що в ньому зазначено новий Тег з назвою "script", який передбачає знаходження в ньому або команди до виконання, або адреса на код, який буде необхідно реалізувати. Як і вказано в документації до API, скрипт виконує підключення карти до нашого макету в 1С. Що ж нам потрібно, щоб цей код у нас запрацював?

В першу чергу нам потрібна одна обробка (можна використовувати і інші об'єкти), один макет з типом HTML документ - саме в нього ми і поміщаємо код. Записавши код, ми виконали перший крок до використання заповітного, багатофункціонального API. Подібна методика працює і з іншими API на JavaScript.

Важливо! Всі відкриті теги повинні бути закриті після використання. Ми ж не хочемо, щоб все знаходиться в нашій коробці, зіпсувалося або пропало. Запам'ятаємо це основне правило:

відкрили - закрили.

Розібравшись з тим, як влаштований перший код, ми можемо його розмістити в наш макет. Але так як ми підключаємо карти до HTML документу, за фактом WEB сторінки в 1С, нам необхідно оголосити її такою. Для цього нам знадобиться наступний код:


Даний тег вказує правила для нашого HTML макета. Детальний опис ви зможете знайти на сайті
Даний тег вказує правила для нашого HTML макета
Для того, щоб ми могли працювати з картою, передавати і отримувати дані, нам потрібно оголосити всі питання, що цікавлять нас процедури і функції в тезі:, & # 1085; & # 1077; & # 1079; & # одна тисяча сімдесят два; & # +1073; & # 1 099; & # 1074; & # одна тисяча сімдесят два; & # 1077; & # 1 084; & # 1079; & # одна тисяча сімдесят два; & # тисяча вісімдесят два; & # 1088; & # 1 099; & # 1090; & # 1100; & # 1090; & # 1101; & # 1075; & # 1087; & # 1086; & # +1089; & # 1083; & # 1077; & # 1079; & # тисяча сімдесят-два; & # 1087; & # 1080; & # 1089; & # 1080; & # 1074; & # 1089; & # 1077; & # +1093; & # Тисячу вісімдесят п'ять; & # 1077; & # 1 086; & # 1 073; & # 1093; & # 1 086; & # 1076; & # 1080; & # 1084; & # +1099; & # 1093; & # 1087; & # 1 088; & # 1 086; & # 1 094; & # 1077; & # 1076; & # тисяча дев'яносто-один; & # 1 088; & # 1080; & # +1092; & # тисячу дев'яносто одна; & # 1 085; & # 1082; & # 1094; & # 1080; & # тисячу вісімдесят один; type>. Параметр type = "text / javascript" має на увазі, що всередині тега буде знаходиться код JavaScript, який ми і будемо викликати в подальшому. Ознайомившись максимально поверхнево з HTML, нам доведеться «поглянути в очі» JavaScript. Для читання код менш зручний, тому в ньому можна легко заплутатися. Але боятися не варто. Ви впораєтеся. Приклад коду:

Не має сенсу докладно описувати в статті, що робить цей код, так як він розписаний в документації до API, а ось синтаксис необхідно засвоїти. По-перше, "var" це оператор оголошення змінної, аналог "Перем". А ось і перша процедура ymaps.ready (init). Так як ми раніше вже підключилися

до простору імен, то об'єкт Yamaps вже зберігає всі необхідні нам функції, які ми можемо викликати. Тут, як і в 1С, ми звертаємося до подпространству імен через символ точка. Як описано на сайті по API: відбувається ініціалізація карти, після цього ми можемо творити все, що нам заманеться (в межах розумного і дотримуючись синтаксис). Але ось для того, щоб відбулася ініціалізація, нам необхідно описати функцію, яку ми передамо на сервер Яндекс.
Ми створимо карту. Це Функція function init () тут код дуже схожий на 1С. Так в JavaScrit відбувається оголошення функцій. На цьому схожість закінчується. Якщо 1С розуміє, що після "Процедура Процедура1 ()" йде код процедури, то для JavaScript потрібно вказати початок і кінець фігурними дужками. Все, що всередині дужок {є тілом (кодом функції)}. І все, що вказано всередині цього блоку, ми зможемо знову ж проробити на сайті з документацією. Аналогічними методами ми описуємо весь код цікавий для нас, і ми зможемо його використовувати в 1С. Тільки виникає питання: як це зробити? Тут починається практична частина. Вона коротка, але найважливіша.
Для того, щоб ми могли передавати і приймати дані через HTML документ, нам необхідно створити на формі Реквізит з типом HTML документ і використовувати подібний код при відкритті форми:


Після чого наш HTML документ на формі буде пов'язаний з макетом і буде передавати всі необхідні дані. Отримання результату же за коштами API буде відбуватися за допомогою події "ondatasetcomplete" на HTML. А за допомогою методу document.parentWindow.eval ми зможемо відправляти команди з нашої конфігурації на сервер Яндекс. Відповідно код для виклику функції на сервері Яндекс буде виглядати наступним чином:

Де FindAdres - це ім'я оголошеної функції, а Подання - це дані, що передаються. Для того, щоб скрипт зміг правильно прочитати строкове значення з 1С, його необхідно укласти в одинарні лапки, як показано в прикладі.

У свою чергу в подію (ondatasetcomplete) ми отримаємо результат з сервера за допомогою наступного коду:

ЕлементиФорми.HTML.document.getElementById ( "CoordALL"). Value

Де (CoordALL) назва змінної, що зберігає цікавий для нас результат. Для того, щоб змінна отримала значення з сервера в макеті, нам необхідно заздалегідь вказати її при оголошенні функції:

Для того, щоб змінна отримала значення з сервера в макеті, нам необхідно заздалегідь вказати її при оголошенні функції:

І оголосити в тезі наступним чином:
І оголосити в тезі наступним чином:   Отже, ми маємо один макет, в якому описуємо цікавлять нас функції і змінні для виведення результату, і одну форму, на якій вказуємо код для відправлення параметрів і отримання результату
Отже, ми маємо один макет, в якому описуємо цікавлять нас функції і змінні для виведення результату, і одну форму, на якій вказуємо код для відправлення параметрів і отримання результату.

Роман Єфремов,
розробник 1С компанії ТОВ "Кодерлайн"

Що ж нам потрібно, щоб цей код у нас запрацював?
Тільки виникає питання: як це зробити?

Новости