gifts2017

JavaScript в 1С

Опубликовал Юрий Коляда (kolyada) в раздел Программирование - Практика программирования

Ну вот не хватает в 1С средств работы с графикой. А в некоторых областях (производство окон ПВХ, мебели и т.п.) это довольно востребовано. Перебробовав много вариантов, я остановился на таком средстве как JS  и VML. Оказалось всё это прекрасно работает в 1С.

Посмотрел я на вот на эти разработки: http://infostart.ru/public/22429/ http://infostart.ru/projects/1989/ и подумал - зачем так сложно то? Добавить на форму 1С аналоговые часы можно гораздо проще и без использования ВК. Вот набросал пример. На его создание у меня ушло меньше времени (включая поиск скриптов в интернете), чем вот на это описание.

Да и вообще - такой объект 1С  как "ПолеHTML" программистами почти не используется. В то-же время это довольно мощный инструмент. Например, года полтора назад я с помощью его реализовывал в 1С интерактивный графический конструктор для расчета окон ПВХ (VML+JS это единственный способ работы с графикой в 1С без использования ActiveX или ВК). "ПолеHTML" - представлено в 1С в виде DOM модели (тем кто знаком с XML разобраться ничего не стоит). Можно менять прямо из 1С любые свойства и дочерние объеты (отладчик Вам в помощь :)). Для этого объекта в 1С доступны многие события (элементарно делается обратная связь или что-либо интерактивное). Работают любые скрипты, которые работают в IE (в приложенной обработке я привёл пример).

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

Скачать файлы

Наименование Файл Версия Размер
JSв1С 1205
.zip 16,45Kb
25.11.09
1205
.zip 16,45Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Трактор Трактор (Трактор) 28.09.09 11:28
Прикольно. Но не для 8.2. Для 8.2 надо по-другому писать.
stoptime; djon10000; +2 Ответить 1
2. Ярослав Тарарака (slaviksoft) 28.09.09 11:55
чего-то вторые часы не работают есть тока круг
3. Роман Ершов (MRAK) 28.09.09 12:01
4. Трактор Трактор (Трактор) 28.09.09 12:08
(2) У тебя ИЕ глючит. Всё работает.
5. Alxd (salexdv) 28.09.09 12:25
Супер! Ну это однозначно - плюс!
6. Alxd (salexdv) 28.09.09 12:28
Ну теперь понесется душа в рай :D Новых панелей на ИС появится бесчисленное количество :)
7. Владислав Цылёв (vet7777) 28.09.09 12:30
и игрушек типа арканоид )
8. sound sound (sound) 28.09.09 12:50
9. Asdam (Asdam) 28.09.09 14:31
Блин, а фотошоп в 1с можно засунуть? :)
10. Igor Kox (IgorKox) 28.09.09 14:54
11. BlackAvgur (BlackAvgur) 28.09.09 14:56
+ Области применения... :idea:
12. Юрий Коляда (kolyada) 28.09.09 15:57
(1) Попробовал всё то-же самое сделать в 8.2 на тонком клиенте. В принципе, работает аналогично как и в 8.1. Только присвоение текстового значения полю НТМЛ делается не командой "УстановитьТекст", а просто "=". Сами скрипты JS работают в 8.2 и в 8.1 одинаково.
13. Трактор Трактор (Трактор) 28.09.09 16:58
(12) прикольно. Жаль что эта красотища жёстко привязано к ИЕ.
14. Александр Аверков (Аверков) 28.09.09 17:06
15. Юрий Коляда (kolyada) 28.09.09 17:31
(13) думаешь если снести IE (со своим компом не хочу эксперементировать), то работать не будет? Не уверен. Но и на такой случай есть ещё SVG (вместо VML) - то же с помощью текстовых скриптов (текстовые чем хороши - их на "лету" можно генерировать или редактировать как хочешь) рисует графику и работает в FireFox.
16. Трактор Трактор (Трактор) 28.09.09 17:34
(15) >> думаешь если снести IE ..., то работать не будет?
Не думаю. Знаю. Поле ХТМЛ документа это и есть ИЕ.

в web клиенте точно работать не будет. Ни в ИЕ ни в Фирефоксе. Там нет такого элемента управления.
17. Юрий Коляда (kolyada) 28.09.09 17:50
(16) почему нет такого элемента управления? Обычная неограниченная строка на форме может быть представлена в 8.2 как ПолеHTML (есть в свойствах спец. выпадающий список)
18. Трактор Трактор (Трактор) 28.09.09 17:51
(17) Если ошибаюсь, то буду очень рад. Пока проверить не могу.
19. Роман Зиновьев (Широкий) 28.09.09 23:57
20. Алексей Коробов (WiseSnake) 29.09.09 07:14
21. stanislav (stasyan) 29.09.09 08:22
Классно, уверенный Плюс!
22. Алексей Заболотнов (z-alexey) 29.09.09 08:40
Прикольно. Еще бы пример с обратной связью посмотреть :)
23. Ярослав Радкевич (WKBAPKA) 29.09.09 10:34
а что это за объект такой часы, это нарисовано или готовый?
24. Юрий Коляда (kolyada) 29.09.09 10:42
(23) векторная графика в ПолеHTML
25. ediks (ediks) 29.09.09 10:48
Отлично, ПЛЮС! Эта обработка даже сподвигла меня на изучение JavaScript. На основе ее я себе сделал "До конца рабочего дня:" по мотивам аналогичной обработки на ВК. :)
26. Трактор Трактор (Трактор) 29.09.09 11:00
18+ Я таки ошибаюсь! :D

http://users.v8.1c.ru/Info/Platform/8_2_9_356/V8UpdateFrom829Test.htm
События поля HTML-документа будут отработаны и в тонком и веб-клиенте, если в поле помещен HTML-текст или ссылка, указывающая на тот же домен, что и домен приложения.
События поля HTML-документа будут отработаны только в тонком клиенте, если в поле помещен HTML-текст или ссылка, указывающая на чужой (по отношению к домену приложения) домен. Это поведение связано с политикой безопасности браузеров.
27. Юрий Коляда (kolyada) 29.09.09 11:27
(22) У меня есть пример только в составе конфигурации (а она очень большая), если будет не лень - попытаюсь вырезать оттуда. Хотя наверное проще что-либо простенькое набросать.

(25) Вот! Вчера поместил обработку и человеку хватило одного дня чтобы изучить (пусть не в деталях) JS. Я же говорил - простой язык :)

(26) Ну вот видишь - скрипты спокойно отработают хоть в толстом клиенте, хоть в тонком, хоть веб. Да и странно было бы чтобы скрипты на JS (заточенные для интернета) не работали бы на Веб-клиенте, который и сам то из них в основном состоит.

28. Алексей Заболотнов (z-alexey) 29.09.09 12:58
(27) ну вот например тут есть календарь:
http://scripts.protoplex.ru/scripts_show/2217.html

пользователь выбирает дату. Можно сделать пример - сообщить дату, которую он выбрал. :)
29. Юрий Коляда (kolyada) 29.09.09 14:42
(28) Ну это очень просто: в модуле формы 1С создаёшь процедуру соотв. событию onclick ПоляHTML. Второй параметр который передаётся в эту процедуру (pEvtObj) и есть тот объект (рисунок, элемент, таблица, ячейка и т.п.) на который ты нажал. Отладчиком смотришь какие свойства присутствуют у объекта (я, например, просто смотрел Id, который в JS скрипте присваивал всем элементам, но можно что-либо другое анализировать) и в зависимости от значений этих свойств делал то или иное действие.
30. Юрий Португалов (Sprite) 29.09.09 15:06
Эх.... Хорошо было бы для 7.7.....
31. NoMAx (NoMax) 29.09.09 15:37
(30) Да вобщем на два пальца.
возьми http://infostart.ru/public/57767/ и туда вставляй код, да и любуйся :)
32. Олег Пономаренко (O-Planet) 30.09.09 00:38
Прикольно, но кажется, что нишу разработчиков ВК в 7.7 в восьмерке сменят те, кто владеет web-технологиями. Потому, как думается мне, что ВК в 8 менее актуально, чем web.
33. Олег Пономаренко (O-Planet) 30.09.09 00:40
... только VML - это же типа плагин. Он разве не ставится дополнительно?
34. Юрий Коляда (kolyada) 30.09.09 02:33
(33) да нет - не плагин. VML поддерживается IE начиная с 5-ой версии (т.е уже 11 лет). Отдельно устанавливать не надо. Каким образом это работает в 1С - я не разбирался. То ли используются стандартные библиотеки от микрософт, то ли 1С свои поставляет - по мне не так важно.

В принципе я когда разрабатывал приложение где использовал эту технологию, столкнулся только с одной существенной проблемой - не смог стандартными средствами (без ВК) сохранить полученный векторный рисунок (а ведь по сути это набор команд) в растровом формате (типа bmp, jpeg и т.п.). А это было необходимо для определенных функций в программе. Но потом сменил работу и проблемы не стало :)
35. Олег Пономаренко (O-Planet) 30.09.09 02:38
(34) А что там не понимать? Просто 1С строит свой хтмлдокумент на основе com технологий. Т.е., какой на компе IE, такой и хтмлдокумент.

Мммм... А есть краткое (и не очень) описание функционала VML?

По поводу сохранения... Можно было бы, наверное, что-то придумать. Вплоть до скрина области экрана средствами IE.
37. Сергей Толмачев (sss999) 30.09.09 07:09
блин тока писать умею а читать нет,ниче нимогу сказать
38. dushelov (Душелов) 30.09.09 10:10
39. volod (volod) 30.09.09 10:44
Даешь еще примеры в обработку
40. Дмитрий Герасименко (Winston) 30.09.09 17:16
А пример с обратной связью..
41. Виталий Фролов (vita8383) 30.09.09 17:18
А книжку можешь подсказать по JS, чтобы разобратся в коде
42. ediks (ediks) 30.09.09 17:26
(41) можно http://www.w3schools.com. Правда, все английском, но примеров туча.
43. Виталий Фролов (vita8383) 30.09.09 17:31
а на русском что-нибудь есть? :D
44. Юрий Коляда (kolyada) 30.09.09 17:35
(43) я уже приводил ссылку на пред. странице. Перейди там в оглавление.
46. Александр Волков (aavolkoff) 01.10.09 01:14
Ндя... только вот для увеличения юзабельности в типовых конфах давным-давно яваскрипт используется (зачастую исключительно для красивости, но все же))))
47. Олег Черкасов (oleg974) 01.10.09 08:29
Спасибо. Какая перелесть.
48. Аркадий Кучер (Abadonna) 01.10.09 18:17
Спасибо автор, за пинок в нужном направлении ;)
Я теперь знаю как всадить часики прям на окно MDI (тёмно-серое в 1С).
А хоть бы и ИС туда при старте 1С :D
49. Аркадий Кучер (Abadonna) 01.10.09 18:45
Вот, например, привет прям из 1С без всяких внешних форм ;)
Прикрепленные файлы:
50. Аркадий Кучер (Abadonna) 01.10.09 20:40
О, блин, 1С-кое Поле HTML Документа не поддерживает, оказывается, всех свойств HTML -кода :cry:
Нет ни контекстного меню по правой кнопке, ни других свойств актив-икса.
Я у себя порадовался, что у часиков из макета 2 можно открыть/закрыть крышку, решил проверить на на разработке автора - ни фига :(
Че-то не долелали они...
Прикрепленные файлы:
51. Аркадий Кучер (Abadonna) 02.10.09 12:40
(9)>Блин, а фотошоп в 1с можно засунуть?
Я уже попросил Билла, они готовят к выпуску релиз Windows1C, там внутри всё будет :D
52. Александр Кузин (sashocq) 04.10.09 10:45
53. Alex_Sun (Alex_Sun) 05.10.09 08:59
А как что-то похожее написать с ноля?
54. tnnick (tnnick) 21.10.09 13:46
Ну как минимум - ОТЛИЧНО!!! Немного модификации и работает плеер (не актив Х). Если автору будет в охотку, может заменить на "прикрепленную" :)
Прикрепленные файлы:
JSв1С.epf
55. Юрий Коляда (kolyada) 21.10.09 15:38
(54) прикрепленный файлик у меня не скачивается почему-то. Лучше сам сделай обработку и выложи отдельно.
56. Юрий С (G_Re) 11.11.09 10:06
Попробовал смоделировать в 7.7
Тексты HTML те же.
http://infostart.ru/public/60137/
57. Сергей Гуров (hansel) 30.11.09 22:55
Просто. Великолепно.
Просто великолепно :idea:
58. onlineoff (onlineoff) 15.09.11 13:28
59. tvv (pmtvv) 07.10.11 20:30
60. Виталий Журавлев (dmd) 11.10.11 19:45
Идея реализации понравилась. Скачал работает. Переделал под собственные нужды
61. me Halyna (mehalyna) 16.10.11 19:55
Спасибо, пригодилось. Немного переделала под себя. красота!
62. GSA3D 16.01.12 14:21
Очень интересно. А получится ли сделать показ изображений из внешних файлов через JS на 1с?
63. Сергей Кудашкин (sikuda) 13.03.13 18:54
Это VML от Microsoft (schemas-microsoft-com:vml). Но развитие не последовало. Работает в IE7,8 и 1С
А с html5 в 1c пока все грусно http://infostart.ru/public/174856
64. Andrey Maevski (t955938) 11.02.14 12:55
Очень интересное решение. Давно искал способ использование графики для 1с
65. Сергей Кудашкин (sikuda) 20.02.14 17:25
66. Алексей Смолинский (NewLifeMan) 10.04.14 13:19
(63) sikuda, а причем тут 1С и HTML5? 1С работает с движком ИЕ, так что все зависит от того, какая версия ИЕ установлена на машине, где все это запускается..
67. Сергей Кудашкин (sikuda) 20.06.15 20:58
(66) NewLifeMan, Да но работает ie в 1С в режиме совместимости. И в этом универсальность для 1С и сложность применения для интернет технологий.
68. Дмитрий Копылов (марксист) 03.05.16 01:02
а есть толковая статья о работе с Полеhtml и js в 1с?подскажите пожалуйста
69. Юрий Лазаренко (TitanLuchs) 03.05.16 07:29
(68) марксист, а что именно интересует? Скажите, напишу вам статью.
70. Дмитрий Копылов (марксист) 08.05.16 23:34
(69) TitanLuchs, меня интересует практически все,от вывода ссылок на элементы,до обработки событий мыши.потому что в веб технологиях я не очень,а какой то структурированный материал для начала понимания очень тяжело найти(буду очень благодарен за статью)
71. Алексей Мигачев (slipers) 10.11.16 10:23
VML+JS это единственный способ работы с графикой в 1С


Как вариант можно использовать processing https://p5js.org/examples/