Выполнить JavaScript в 1С:Предприятии
В 1С:Предприятии есть возможность использовать COM-объекты. Доступность объектов сторонних приложений значительно, расширяет возможности для программирования. COM технология в 1С системе, позволяет выполнять функции написанные на других языках программирования.
Выполнить JavaScript в COM-объекте «MSScriptControl.ScriptControl»
COM-объект «MSScriptControl.ScriptControl» применяется для выполнения функций написанных на языке JavaScript. Например, чтобы сложить два числа необходимо написать функцию на языке JavaScript.
Пример
Число1 = 2
Число2 = 3
Сумма = 5
Функция ПолучитьСумму(Число1, Число2)
Попытка
ОбъектSC = Новый COMОбъект("MSScriptControl.ScriptControl");
ОбъектSC.Language = "JScript";
Исключение
Сообщить("Объект не создан: " + ОписаниеОшибки());
Возврат 0;
КонецПопытки;
СтрокаJS = "function Summa(a, b)
| | var c = a + b;
| return c;
|>";
ОбъектSC.AddCode(СтрокаJS);
СтрокаВызоваФункции = "Summa(" + Число1 + ", " + Число2 + ");";
Сумма = ОбъектSC.Eval(СтрокаВызоваФункции);
Возврат Сумма;
КонецФункции
Данная функция выполняет JavaScript функцию, которая возвращает сумму двух чисел. Синтаксис языка JavaScript подробно описывается во многих специализированных книгах по программированию.
Выполнить JavaScript в COM-объекте «HtmlFile»
В данном COM-объекте JavaScript выполняется на html странице.
Функция ПолучитьСумму(Число1, Число2)
Текст = "";
НовыйHTMLДокумент = Новый COMОбъект("HtmlFile");
НовыйHTMLДокумент.open("text/html");
НовыйHTMLДокумент.write(Текст);
НовыйHTMLДокумент.close();
Возврат НовыйHTMLДокумент.documentElement.outerText;
КонецФункции
Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться
О сайте | Обратная связь | Правила | Новости 1С | Copyright © 2023 Цитирование материалов (тексты, изображения, программный код) допускается только с размещением активной ссылки на сайт 1CLenta.ru |
COM Объект для HTML
а нужно чтобы обработка искала файлы в определенной
директории, потом обращалась через ком объект к ниму
вот вообщем и все. Сейчас именно проблема обратиться к файлу как COM Объекту.
html не более чем разметка, о каком com-е идет речь? 😀 Подозреваю, что вам просто нужно распарсить html. в конфигураторе F1 поиск DOM.
про поиск файлов — тоже поиск в справке — НайтиФайлы
Поиск файлов и весь основной функционал парсинга реализованы уже
Просто сейчас я помещаю html файл в табличное поле на форме обрабтки
потом обращаюсь к нему ЭлементыФормы.ПолеHTMLДокумента2.Перейти(«D:\имя.htm»);
и дальше работаю с ним через ком объект. Просто для работы таким образом
через элементы формы обращаться к HTML документу неудобно. Сейчас я делаю
чтобы обработка выбирала файлы из каталога перебирала их по одному получала
СОМ объект для каждого файла. Перебор это ерунда, его я уже сделал
основная проблема получить СОМ объект. Пробовал ConHTML = ПолучитьCOMОбъект(ФайлHTML.ПолноеИмя)
1С ругается на раширение файла
«ПолеHTMLДокумента.Документ
ПолеHTMLДокумента (HTMLDocumentField)
Документ (Document)
Использование:
Только чтение.
Описание:
Тип: COMОбъект. Предоставляет доступ к HTML документу.
Описание объекта, в целом, определяется стандартом»
(3) я же написал, что html не более чем разметка, почитайте справку, посмотрите типовую обработку «Обозреватель» (кажется так называется), если удобно так, то считывайте html как текст, затем методом УстановитьТекст()
ConHTML = ПолучитьCOMОбъект(ФайлHTML.ПолноеИмя) — возвращает com объект по названию
ПолеHTMLДокумента.Документ
ПолеHTMLДокумента (HTMLDocumentField)
Документ (Document)
Использование:
Только чтение.
Описание:
Тип: COMОбъект. Предоставляет доступ к HTML документу.
Описание объекта, в целом, определяется стандартом» — это уже сам COMобъект.
Смотри описание функций и процедур ПолеHTMLДокумента
ConHTML = ПолучитьCOMОбъект(ФайлHTML.ПолноеИмя) — возвращает com объект по названию
Такой результат. Этот метод я пытался использовать в самом начале
: Ошибка при вызове метода контекста (ПолучитьCOMОбъект)
ConHTML = ПолучитьCOMОбъект(ФайлHTML.ПолноеИмя);
по причине:
Ошибка получения объекта COM: Расширение имени файла задано неверно
А как можно получить ОболочкаHTMLДокумента
Нашел решение если кому интересно
МассивФайлов = НайтиФайлы(ЭлементыФормы.ПолеВвода1.Значение, «*»);
Для Каждого ФайлHTML Из МассивФайлов Цикл
Сообщить(ФайлHTML.ПолноеИмя);
objIE = Новый COMОбъект(«InternetExplorer.Application»);
objIE.Navigate(ФайлHTML.ПолноеИмя);
ТелоДокумента = objIE.Document.body;
МассивTBODY = ТелоДокумента.getElementsByTagName(«TBODY»);
Основной код
(7) Честно говоря никому не интересно. Тоже самое можно сделать и через ПолеHtmlДокумента. и к тому же лучше делать objIE.Visible = false , а создавать в цикле objIE это вообще жесть, вынеси из цикла
(7) помнишь я писал про DOM? . если что-то непонятно погуглить и получить http://www.script-coding.com/DOM.html
да и все еще название темы меня пугает. COM для html это что-то странное. objIE или ПолеHtmlДокумента это не html. это оболочки над IE, использующие в том числе com технологию для взаимодействия.
Для будущих html-разбирателей — советую использовать следующий набор инструментов
fiddler, firebug+firepath+mozzila, tidy, curl
Основная идея сводить с помощью tidy html в xml и получать нужную информацию через xpath. есть еще htmlquery, который доступен по com.
1С 8.x : Формирование HTML-документа, содержащего ссылки на объекты базы данных
В данной статье рассматривается способ программного формирования HTML документа, содержащего ссылки на объекты базы данных 1С, такие как справочники, документы и т.д. Показан пример построения обработчика события OnClick ПоляHTMLДокумента, для обработки клика на html-ссылке.
Предисловие
Однажды, дописывая обработку, создающую и модифицирующую, не суть важно какие документы, я подумал, что неплохо было бы вывести для пользователя некое резюме:
“Создан документ такой-то”
“Изменен документ такой-то” и т.д.
От обычного, в таких случаях, вывода информации в окно сообщений я сразу отказался, так как не удобно это, сначала читать в окне сообщений “Создан документ … ” а потом запоминать его номер, открывать соответствующий журнал (или форму списка) и искать там этот документ. А если документов много и пользователь хочет посмотреть все документы?(или выборочно) Насколько это неудобно я убедился при отладке обработки …
То, что в форме есть элемент управления именуемый ПолеHTMLДокумента я конечно знал, но вот представилась возможность познакомиться с ним поближе. Было решено реестр обработанных документов выводить в виде html документа содержащего ссылки на эти самые документы, а по клику на ссылке открывать форму соответствующего документа. Здесь мне многие могут возразить: “А почему бы для этих целей не использовать обычный макет, выводимый в табличный документ, а для открытия документов использовать расшифровку? И чем Ваш способ лучше?” Отвечаю: Конечно можно использовать, и мой способ ничем не лучше. Он просто другой. Ведь у хорошего программиста для решения одной задачи должно быть в арсенале несколько инструментов.
Итак, перейдем от слов к делу, в рамках данной статьи рассмотрим следующую задачу: Сформировать html-документ, содержащий ссылки на элементы справочника номенклатура, по клику требуется открывать форму соответствующего элемента. Создаем новый отчет, его форму, на форме размещаем элемент управления ПолеHTMLДокумента.
Текст модуля формы:
Код 1C v 8.х
Процедура ДобавитьТекстHTML(ТекстHTML, Элемент);
// Ссылку будем формировать хитро:
// Предполагаем что символ "-" не входит в имена объектов метаданных,
// учавствующих в формировании html
// Тогда ссылка будет иметь следующий вид:
// Номенклатура-d341d377-b3b1-11dc-a100-0011d85708ff
// Передавать нашу ссылку будем через атрибут id
СсылкаНаЭлемент = Элемент.Метаданные().Имя+"-"
+Элемент.Ссылка.УникальныйИдентификатор();
ТекстHTML.ДобавитьСтроку(" + Элемент + """ >"+Элемент+"");
КонецПроцедуры
Процедура ДействияФормыСформировать(Кнопка)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура");
ТекстHTML = Новый ТекстовыйДокумент;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДобавитьТекстHTML(ТекстHTML, Выборка.Ссылка);
КонецЦикла;
ЭлементыФормы.ПолеHTMLДокумента.УстановитьТекст(ТекстHTML.ПолучитьТекст());
КонецПроцедуры
Ну вот html мы сформировали, теперь чтобы ссылки “ожили” надо написать обработчик события OnClick элемента управления ПолеHTMLДокумента.
Код 1C v 8.х
Заключение
Обратите внимание что ссылку я формировал следующим образом:
— это сделано для того, чтобы в обработчике onclick можно было определить к какому объекту метаданных относится данный УникальныйИдентификатор, потому что имея ТОЛЬКО УникальныйИдентификатор невозможно определить к какому объекту метаданных он относиться. Точнее возможно, но уж слишком долго и неудобно – путем перебора всех метаданных в цикле, для каждого объекта метаданных выполнять попытку .ПолучитьСсылку(Новый УникальныйИдентификатор(НашУникальныйИдентификатор))
Хотя в нашем примере только один справочник, и указывать его вид было необязательно, и так понятно что это УникальныйИдентификатор элемента справочника Номенклатура, но вдруг Вам потребуется работать с несколькими справочниками, вот тут то мой способ задания ссылки Вам и пригодится. Скачивать файлы может только зарегистрированный пользователь!
P.S. Платформа 8.2 имеет встроенный механизм работы со ссылками на объекты БД и данная задача наверняка упростится, но это уже другая тема.
Источник: obrabotki.com
Похожие FAQ
10060 (0x0000274C): Попытка установить соединение была безуспешной 24
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает 🙂 И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей. COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=» D:ВашаБаза1с77″ ; Пользователь= Посмотреть все результаты поиска похожих
Еще в этой же категории
Передача файлов и данных на веб-сервер из 1С методами GET и POST 46
При интеграции 1С с веб-сайтами всегда встает вопрос о передачи некоторых данных на веб-сервер. Будь то это передача параметров запроса для получения данных от веб-сервера в 1С или же передача данных из 1С, которые должны быть сохранены или каким-то Работа с Почтой в 1С: Предприятие v 8 19
У разработчиков на платформе 1С иногда возникает задача по взаимодействию системы 1С: Предприятие с различными почтовыми программами и протоколами. 1С Предприятие 8.0 имеет довольно удобные средства для отправки сообщений, импорта писем из почтового Работа с форматом JSON в 1С 19
При обмене данными с веб-сайтами зачастую используется формат JSON. К сожалению, в 1С нет стандартных процедур для работы с данным форматом. В процессе реализации одного из проектов мной был разработан ряд процедур и функций облегчающих жизнь програ Обмен данными с сайтом используя формат JSON в 1С 14
Формат JSON в 1С до версии 8.3.6 не реализован, но нижет я приведу примеры функций которые можно использовать для полноценной работы JSON в 1С предыдущий версий. JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко ис Парсер сайта на 1С 10
В этой статье я постараюсь описать процесс парсинга сайтов средствами 1С с примером. Это статья не является инструкцией к применению, а лишь демонстрирует возможности 1С. Что мы имеем? 1. Сайт в интернете, на котором располагается список товаро Посмотреть все в категории Работа с Интернет, Почтой (Mail), FTP