HTML в новой версии 8.3.14 на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX

Публикация № 991938

Разработка - Практика программирования

HTML HTML5 javasript chart диаграмма диаграмма Ганта

Тестируем возможности HTML в новой версии 8.3.14 платформы на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX.

На момент написания статьи 14-я платформа доступна только в тестовой версии, все тесты я проводил на версии 8.3.14.1494, в файловом режиме работы.

Итак, в новой версии платформы разработчики отказались наконец от использования Microsoft Internet Explorer в поле HTML-документа. Далее выдержка из описания изменений:

 

Клиентские приложения, работающие под управление ОС Windows, для работы со справочной системой,
синтакс-помощником, а также с полем HTML-документа, планировщиком, форматированным документом 
и редактором HTML-документа используют библиотеку WebKit. Microsoft Internet Explorer для данных 
целей больше не используется.
Библиотека поставляется вместе с платформой и не требует дополнительной установки.
Типом значения свойства ПолеHTMLДокумента.Документ стал ВнешнийОбъект. Изменилась DOM-модель, 
которая доступна при обращении к данному свойству.
Рекомендуется провести анализ использования элемента формы ПолеHTMLДокумента и исправить 
реализацию в том случае, если реализация использовала возможности, которые специфичны только 
для Microsoft Internet Explorer.

Вместо IE теперь используется какой-то вебкит, больше ничего полезного на первый взгляд. Но существует гораздо более информативная и подробная статья, что же собственно произошло с HTML в 1С, рекомендую ознакомиться https://habr.com/ru/company/1c/blog/425713/. Если вкратце, ребята описывают муки выбора браузерного движка для замены IE и почему вообще возникла такая проблема. В конце статьи они отговаривают использовать HTML для реализации бизнес логики, но нас такими пустяками не испугать. Итак, приступим к тестированию возможностей чартинга

AmCharts

https://www.amcharts.com/

Библиотека от литовских разработчиков

Лицензия: Proprietary. Можно использовать бесплатно, но в углу чартов будет маленькое лого. От него можно избавиться, заплатив денежку.

Больше всего статей на инфостарте как раз по этой библиотеке. Отмечу большое разнообразие чартов, интерактивное взаимодействие с данными, но диаграмма Ганта по возможностям довольно скудная.

 

Bubble Chart

Кликом можно отключать видимость серий


 

Chord Diagram

Анимация летающих шариков работает как надо, смотрится завораживающе


 

Layered Column Chart

Масштабирование выделением области мышкой работает

 

Variable-height 3D Pie Chart

Здесь почему-то сектора не прорисованы до конца, в то время как в оригинале они выглядят объемными.

оригинал:


 

Funnel with Gradient Fill

Воронка тоже прорисовалась плохо, возможно я что-то криво подключил, пишите в комментариях, если знаете как побороть.

оригинал:


 

Polar Area Chart

Масштабирование выделением области мышкой работает


 

Selecting Multiple Areas Map

Множественный выбор стран работает, выглядит круто. Масштабирование колесиком мыши работает.


 

GANTT Chart With Dates

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


 

Роли и пользователи в Treemap

Демонстрация работы с данными 1C на примере вывода ролей в диаграмму Tree Map, ресурсом выступает количество пользователей с такой ролью (HTML текст взят с другой рабочей базы на старой платформе, поэтому использую вкладку "Свой код")


 

Свой код

В поле «Вид диаграммы» можно выбрать значение «Свой код», этот вариант пригодится, если вы захотите потестировать остальные демо примеры библиотек с сайта. Для этого просто скопируйте javascript код на вкладку «HTML» и нажмите кнопку «Обновить» на вкладке «Диаграмма».


 

HighCharts

https://www.highcharts.com/

Библиотека от норвежских разработчиков Highsoft

Лицензия: Proprietary. Бесплатно для личного и некоммерческого использования. Для коммерческого использования придется заплатить денежку.

По это библиотеке статей на ИС поменьше. Библиотека очень богата на различные экзотические, но функциональные чарты, хороший интерактив, отличная диаграмма Ганта. На мой взгляд, она по всем параметрам чуть-чуть лучше AmCharts, так что присмотритесь к ней, если будете выбирать на чем строить визуализацию данных.

 

Basic Area

Кликом можно отключать видимость серий


 

Packed Bubble Chart

Кликом можно отключать видимость серий


 

User Supplied Data

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


 

Draggable Box 3D

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


 

Gantt Resource

В обработке используется ресурсная диаграмма для того, чтобы можно было сравнить с AmCharts, но на самом деле возможности HighCharts гораздо шире. Есть проектные диаграммы со связями, поддерживается интерактивное изменение сроков, прогресс, картинки в интервалах и т.д.


 

Роли и пользователи в Packed Bubble

Демонстрация работы с данными 1C на примере вывода ролей в диаграмму Packed Bubble Chart, ресурсом выступает количество пользователей с такой ролью. Подписи выводятся только для ролей, у которых более 10 пользователей.


 

Свой код

Для тестирования демо примеров с сайта HighCharts, придется выполнить несколько действий. Разберем вариант просмотра кода в СodePen, нажмите соответствую кнопку на сайте под демо диаграммой — откроется окно онлайн редактора CodePen. Здесь нас интересует раздел HTML, скопируйте его содержимое в обработку, на вкладку «HTML». Далее надо скопировать код на javascript. Копируем код из раздела «JS» онлайн редактора и вставляем в обработку после предыдущего копипаста, обрамив этот участок кода тегом <script>. Для упрощения этой процедуры в обработке предусмотрена кнопка «<script>», которая обрамляет выделенный участок текста этим тегом. Опционально можно скопировать раздел «CSS» онлайн редактора, вставив его перед разделом JS и обрамив тегом <stylesheet>(в обработке есть соответствующая кнопка); на работоспособность он не влияет, но может менять внешний вид диаграммы. Нажмите кнопку «Обновить» на вкладке «Диаграмма».


 


 

DHTMLX

https://dhtmlx.com/

Библиотека от литовских разработчиков Dinamenta UAB (Литва прям лидер по JS визуализации :)

Лицензия: GNU GPL. Можно использовать бесплатно с некоторыми ограничениями даже в коммерческих проектах. За деньги дают некоторые продвинутые фишки, описанные на сайте разработчика.

По этой библиотеке совсем нет статей на ИС. Выглядит довольно сурово, но обладает неплохими возможностями по визуализации данных. Особенно хорошо проработана здесь диаграмма Ганта, на мой взгляд, она даже более продвинутая чем в AmCharts или в HighCharts. Остальные чарты выглядят скромнее и не отличаются сильным разнообразием.

 

Simple Gantt

Простая проектная диаграмма Ганта, поддерживается интерактивное изменение сроков, добавление задач, изменение связей. По задачам строится иерархическая структура


 

Rightside Columns Gantt

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


 

Task Calendars Gantt

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


 

Keyboard Navigation Gantt

Диаграммой можно управлять с клавиатуры, поддерживаемые сочетания клавиш видно на скриншоте.


 

Сессии по журналу регистрации

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


 

Свой код

Для тестирования демо примеров с сайта DHTMLX, придется выполнить несколько действий. Для начала перейдите в специальный демо раздел сайта, отсюда проще копировать код: https://docs.dhtmlx.com/gantt/samples/

Откройте какую-нибудь диаграмму и выберите через контекстное меню «Просмотр кода страницы» (Ctrl+U). Откроется текст страницы, скопируйте его в обработку на вкладку «HTML». Нажмите кнопку «Обновить» на вкладке «Диаграмма».


 

Что из себя представляет обработка

Весь код выводимых диаграмм сосредоточен в макете «Чарты», по ячейке на каждый чарт. Можно по аналогии добавлять с сайтов любую новую диаграмму в следующую ячейку (прописав соответствующий код вывода). Дополнительно в обработку внедрен исходный код из библиотек AmCharts, HighCharts, DHTMLX, который подставляется в код диаграммы, заменяя html ссылки на исходный код. Такая замена позволяет использовать javascript библиотеки вообще без подключения к интернету, из чего вытекает и минус — версии библиотек остаются неизменными, теми, которые зашил программист при обновлении обработки. При выборе вида диаграммы из списка HTML текст подгружается из соответствующей ячейки макета «Заготовка» и после замены ссылок на файлы библиотек на текст кода из соответствующих макетов HTML, строка присваивается данным элемента «Поле HTML документа».

По мере тестирования, обнаружил, что часто приходится вписывать однотипные теги, поэтому добавил пару кнопок на форму обработки

«<script>» - вставляет вокруг выделенного куска текста теги <script>...</script>

«<style>» - вставляет вокруг выделенного куска текста теги <style type="text/css">...</style>


 

Выводы

Наконец 1С развязал нам руки в плане использования современного HTML прямо на форме. Пусть пока в тестовой версии, но через некоторое время 8.3.14 выйдет в релиз и можно будет использовать эти возможности в работе. На ум приходят следующие сферы применения HTML полей: визуализация данных, 3D моделирование и анимация, сложные и динамически изменяемые формы ввода информации.

Update

31.01.2019 вышла релизная версия 8.3.14.1565, можно полноценно использовать HTML5 в работе!

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

Наименование Файл Версия Размер
HTML в новой версии 8.3.14 на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX:

.epf 1,13Mb
103
.epf 1,13Mb 103 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. rpgshnik 2488 30.01.19 06:00 Сейчас в теме
УРА УРА УРА! Даже не обратил внимание на такую роскошь в 8.3.14.
2. JIEX@ 4 30.01.19 07:45 Сейчас в теме
3. manlak 77 30.01.19 09:42 Сейчас в теме
4. KEV8383 20 30.01.19 10:03 Сейчас в теме
5. CyberCerber 753 30.01.19 10:36 Сейчас в теме
6. Sla 30.01.19 10:50 Сейчас в теме
Огромная работа! Респектище!!!
Возможно ли подключить к-л библиотеку для динамической проверки орфографии (подчеркивать красным как в Word-e)?
10. Synoecium 712 30.01.19 14:12 Сейчас в теме
(6) попробуйте API Яндекс.Спеллер https://tech.yandex.ru/speller/, там есть REST интерфейс, который можно использовать на любой версии платформы 1С, проверяя то, что ввел пользователь в реквизит формы. По идее через JSON интерфейс тоже можно использовать этот API, но зачем? Разве что для какого нибудь продвинутого текстового редактора, который будет выдавать варианты подчеркнутых слов.
Для онлайн сервисов обычно есть ограничения, например у Яндекса:
на количество обращений к Сервису - в размере 10 тысяч обращений в сутки;
на объем проверяемого текста - в размере 10 миллионов символов в сутки.
Можно еще рассмотреть оффлайн спеллер, но для этого вам нужен будет словарь корректных слов, по которому надо искать слова из текста, введенного пользователем. Это можно сделать даже средствами 1с, если устроит производительность (навскидку, грузим словарь в соответствие и парсим текст наколеночным парсером в 1с, чтобы проверять отдельные слова в соответствии)
antonio_i; Sla; +2 Ответить
7. loda 26 30.01.19 10:50 Сейчас в теме
8. Synoecium 712 30.01.19 11:18 Сейчас в теме
(7) а еще Chart.js и с десяток других библиотек. Целью статьи не является сравнение всех библиотек, это скорее демонстрация возможностей HTML поля в 1С на новой платформе, поэтому я взял то, с чем сам пробовал работать. Для интересующихся отличиями и возможностями рекомендую самим пройти по сайтам с демо примерами и подобрать нужный фреймворк, также обзорную информацию можно получить вот здесь: https://en.wikipedia.org/wiki/Comparison_of_JavaScript_charting_libraries
suepifanov; antonio_i; rpgshnik; CyberCerber; user774630; +5 Ответить
9. loda 26 30.01.19 11:22 Сейчас в теме
(8) Понятно. Просто вдруг в google charts что то не понравилось и вы могли бы этим поделиться.
Спасибо за проделанную работу.
11. dmarenin 310 30.01.19 18:46 Сейчас в теме
(0) проксирование в контекст 1с js eventов не завезли еще(в вашем примере перемещение, создание ганта например)? а то есть там поле Документ.defaultView.V8EventProxyObject а что с ним делать пока не понятно. Кто то уже знает?
13. dmarenin 310 31.01.19 18:06 Сейчас в теме
(11) кто не понял, сможет ли web kit в 3.14 так? если да то как?
Прикрепленные файлы:
42. eugeniezheludkov 32 05.05.20 01:58 Сейчас в теме
(13) С переходом на вебкит Похоже эти фишки полностью сломали (контекст формы 1С не передается в JS), а новые не добавили. свои события из JS->1C никак не вызвать, гуглил. Зря я обновил платформу , красивый отчет слетел, точнее перестал динамически вызывать адинэсовский код из JS, пробовал даже dispatchEvent(evt) и window.open() , 1С их не видит в упор
43. dmarenin 310 05.05.20 10:07 Сейчас в теме
(42) в (13) не используется dispatchEvent. в (13) пример использования хром ембедид. по вашему вопросу ответ ниже, повторюсь. используйте ws soket https://learn.javascript.ru/websockets. в (13) ивенты летят через com prc(аналогично событию "обработкавнешнегособытия"). в ws socket по сети. подход по ws универсален и не зависит от целевой платформы, клиентского приложения
Synoecium; +1 Ответить
44. dmarenin 310 05.05.20 10:13 Сейчас в теме
+ (43) хочу добавить:
1. с одной стороны ws socket на стороне js кода и вк для ws socket для стороны 1с
2. либо нттр сервис на стороне 1с и get\post из js кода

короче вариантов может быть >1
45. eugeniezheludkov 32 06.05.20 08:15 Сейчас в теме
(43) я нашел решение которое у меня работает
			function return1c(name,data1){
				 var evt = document.createEvent ("MouseEvent");
                    		evt.initMouseEvent ("click", true, true, window, 0, 
                                                0, 0, 0, 0, 
                                                0, 0, 0, 0, 
                                                0, null);
                
				let lnk = document.getElementById("lnk");
				evt.data = data1;
				
  				lnk.dispatchEvent(evt);
			} 
Показать

оказалось лишь некоторые эвенты принимает 1С.

так же нажав в поле HTML CTRL+ALT+SHIFT+F12 немного исследовал V8EventProxyObject у него всего 1 метод .proxyOnEvent знать бы как им пользоваться .

Про вебсокеты видимо я пропустил тот момент когда 1С научилась из внешней обработки поднимать сервер для вебсокетов из коробки , а ниже в комментариях только вариант с использованием внешней компоненты . вариант httpсервер + get|post из js (вообще было бы интересно проверить пустит ли безопасность ВебКита на внешний ресурс ajax) , но тоже как то нецелесообразно как по мне , должно быть простое лаконичное решение proxyOnEvent для этого подходит, но еще нет документации
Synoecium; +1 Ответить
46. Synoecium 712 06.05.20 08:18 Сейчас в теме
(45) спасибо за информацию. Сам пока не упирался в эти ограничения, так как текущие задачи не предусматривают HTML, но может придется в будущем.
12. antonio_i 67 31.01.19 14:17 Сейчас в теме
Супер. Наконец-таки это свершилось! (почти)
14. amd1986 01.02.19 13:55 Сейчас в теме
кто нибудь знает как подключить веб камеру к "Поле HTML документа"? Не используя внешних компонент и ресурсов. Т.е. уже встроенными средствами 1С. На 8.3.14.
15. Synoecium 712 03.02.19 11:27 Сейчас в теме
(14) покопался в вопросе подключения камеры в HTML5, в общем в веб клиенте работает (первый раз нужно разрешить использовать камеру), а вот в тонком клиенте запустить не получилось. Скорее всего тонкий клиент не поддерживает использование GetUserMedia(). Если кто в курсе как подключить, пишите в комментариях.
Прикрепляю обработку, которая демонстрирует захват с камеры в веб-клиенте.
Прикрепленные файлы:
ПроверкаВебки.epf
16. dmarenin 310 04.02.19 16:56 Сейчас в теме
(15) поле html в веб-клиенте - это iframe. через него дотянутся до родительского окна вряд ли получится.
17. amd1986 04.02.19 19:28 Сейчас в теме
(16)Жалко. Очень хотелось доработать механизм распознавания лиц из 1С не используя внешние компоненты. Придется пока костылять по старому..
18. amd1986 04.02.19 20:21 Сейчас в теме
19. KAV2 116 12.02.19 13:37 Сейчас в теме
Интересно, работает ли обработка событий? То есть чтобы по клику открыть расшифровку в СКД?
20. Synoecium 712 12.02.19 13:42 Сейчас в теме
(19) имеете ввиду чтобы в 1с СКД отчете при расшифровке ячейки показывать html поле с javascript визуализацией? По идее делается достаточно просто. Или вы имеете ввиду другую обработку событий - события из javascript диаграммы, перехватываемые в 1с?
21. KAV2 116 12.02.19 14:34 Сейчас в теме
(20) Да, я имею в виду второе, то есть перехват клика по html, и открытие уже 1С-ного отчета в качестве расшифровки.
kuznecov_egor; +1 Ответить
22. kuznecov_egor 12.02.19 15:51 Сейчас в теме
(21) Было бы интересно, если бы кто-нибудь пояснит, как это делается)
sergio199; +1 Ответить
27. s_vidyakin 09.04.19 15:04 Сейчас в теме
(22) Ничего сложного, вставляете в HTML data-атрибуты и при клике считываете, передаете в 1С функцию
23. Synoecium 712 13.02.19 08:25 Сейчас в теме
(21) Смотрите, у поля html в 1с есть событие ПриНажатии(), в нем есть доступ к данным события через параметр "ДанныеСобытия", в нем уже надо смотреть какие данные вам нужны для конретной диаграммы.
Например, в моей обработке есть диаграмма HighCharts->User Supplied Data, добавляем следующий обработчик нажатия на поле html:
&НаКлиенте
Процедура ХТМЛтекстПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
	Сообщить("x = "+ДанныеСобытия.Event.xAxis["0"].value);
	Сообщить("y = "+ДанныеСобытия.Event.yAxis["0"].value);
КонецПроцедуры


теперь при создании точки на диаграмме в 1с будет выводиться сообщение с её координатами
24. KAV2 116 13.02.19 08:42 Сейчас в теме
(23) Спасибо! Здорово что это работает в 8.3.14!
25. molot 280 23.03.19 14:38 Сейчас в теме
Блин, ну всё отлично работает в 8.3.14, но... В яндекс-картах перетаскивание не работает вообще никак! Вот печаль-беда... Может, я что не так делаю...
26. Steelvan 43 09.04.19 09:59 Сейчас в теме
Как вариант, взаимодействие ПолеHTMLДокумента <-> 1С можно настроить через веб-гнезда с использованием библиотеки https://infostart.ru/public/937068/

Не проверял, выкладка теоретическая

Обработка (на которой находится ПолеHTMLДокумента) при открытии должна запускать сервер веб-гнезд с прослушиванием определенного местного порта, например 127.0.0.1:2347. Соответственно, если обработок несколько, то порт++.
ПолеHTMLДокумента должно содержать js код для работы с веб-гнездами. ПолеHTMLДокумента при открытии должно создавать соединение с этим сервером, которое работает в оба конца для приема и передачи. И через веб-гнездо выполнять двусторонний обмен данными ПолеHTMLДокумента <-> 1С при разных событиях в ПолеHTMLДокумента или в 1С.
Для тонкого клиента должно работать.
28. gudun_ku 61 10.04.19 17:01 Сейчас в теме
Вопрос - зачем оборачивать все это великолепие в формы 1С?
Soloist; acanta; +2 Ответить
29. Steelvan 43 13.04.19 11:32 Сейчас в теме
(28) Намек на попытку компенсировать ущербность ? ;)
30. acanta 13.04.19 11:41 Сейчас в теме
(29) Она оказалась неудачной? Жаль. Надеюсь, что не последняя.
31. jif 03.07.19 11:43 Сейчас в теме
Есть возможность, например в User Supplied Data, изменять представление точки? т.е. другую фигуру, либо картинку? Спасибо!
32. Synoecium 712 03.07.19 12:05 Сейчас в теме
(31) да, причем возможности довольно широкие. Посмотрите пример по ссылке:
https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/sa­mples/highcharts/plotoptions/series-marker-symbol/
там вместо точек используются различные значки, вплоть до произвольной картинки.
вкратце надо добавить в раздел series блок такого вида (для примера сделаем треугольные отметки радиусом 10):
          marker: {
            radius: 10,
            symbol: 'triangle'
            },
33. jif 03.07.19 12:56 Сейчас в теме
Спасибо за труд!! Интересная статья!
34. axelerleo 304 22.10.19 15:22 Сейчас в теме
Коллеги, а кто ответит на простой вопрос - как теперь в чудесной и прекрасной 8.3.14 обращаться к элементам DOM модели из 1С?
Document.getElementByID теперь нет, какие альтернативы? перебирать дерево DOM, оно же "ВнешнийОбъект"?
35. SlavaKron 22.10.19 15:44 Сейчас в теме
(34) getElementByID у ВнешнийОбъект работает точно так же как и у КомОбъекта.
36. axelerleo 304 22.10.19 15:51 Сейчас в теме
(35)Спасибо! Уже сам разобрался. Это мои кривые ручонки. Забыл про кейс-сенситив :(
37. curdate 24 05.11.19 15:29 Сейчас в теме
В 8.3.13 дергали поле html документа с параметрами в адресе, а в событии ДокументСформирован забирали результат из Элемент.Документ.url. Ну и дальше http запросами...

А в 8.3.15 событие ДокументСформирован после авторизации не вызывается, а как найти ответ в "ПриНажатии" - не понятно:(
38. imbalance 09.01.20 09:42 Сейчас в теме
Не срабатывает событие при изменении у поля HTML документа, что-то нужно добавлять? или это баг?
39. Synoecium 712 09.01.20 13:10 Сейчас в теме
(38) Да, у меня тоже событие ПриИзменении не срабатывает вообще (8.3.15.1700 клиент-сервер), возможно что-то надо прописать на стороне js кода, но я в этом не спец.
Есть предложение создать группу в телеграмме, где можно переписываться именно по теме HTML в 1C, так как вопросов много, и есть люди, которые могли бы поделиться знаниями, но им неудобно мониторить вопросы к связанным публикациям. Плюс все может поменяться с очередной версией платформы, так что не получится создать исчерпывающую публикацию
imbalance; +1 Ответить
40. imbalance 09.01.20 14:36 Сейчас в теме
(39)

Хорошая идея!
У меня уже сейчас ещё вопрос есть)

1С:Предприятие 8.3 (8.3.15.1534)

На форме поле ПолеHTMLдокумента с типом "Поле HTML документа", путь к данным - это реквизит формы с типом строка (длина 1000)

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ДанныеПоляHTMLДокумента = "about:";
КонецПроцедуры


&НаКлиенте
Процедура ПолеHTMLДокументаДокументСформирован(Элемент)
    Элемент.Документ.Body.ContentEditable = "true";
КонецПроцедуры
Показать


Как ускорить формирование поля HTML документа?? Замечено, что без интернета загрузка происходит мгновенно. А если вместо "about:" подставить какой-либо несуществующий адрес, то загрузка происходит быстрее. Что подставить вместо "about:"?
41. eugeniezheludkov 32 04.05.20 18:00 Сейчас в теме
А можно ли как то вызвать из JS метод формы 1С ? раньше такой финт можно было сделать передав в js "ЭтаФорма", но сейчас на стороне js оно боксится в undefined
Hobbit_Jedi; +1 Ответить
Оставьте свое сообщение

См. также

Безопасная работа с транзакциями во встроенном языке Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    38206    tormozit    54    

Как сдать экзамен 1С:Специалист по платформе?

Решение задач на 1С:Специалист v8 Россия Абонемент ($m)

Не пора ли получить сертификат 1С:Специалист по платформе? Для этого ...

1 стартмани

18.01.2021    8637    vasilievil    9    

Запрещаем администратору системы заходить в конфигуратор (внешнее управление сеансами)

DevOps Сервера Конфигурирование 1С v8 Абонемент ($m)

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

1 стартмани

08.01.2021    1872    ardn    5    

Cбор и анализ ошибок при помощи Sentry, или как упростить жизнь себе и пользователям

Практика программирования Интеграция v8 Абонемент ($m)

Цель данной статьи - сделать процесс сбора и анализа ошибок, происходящих в базе, максимально простым, быстрым и удобным, собирать статистику по ошибкам, местам их возникновения и частоте их появления, а также в деталях разобрать все тонкости по интеграции 1С с Sentry.

1 стартмани

09.10.2020    3866    hexhoc    12    

План подготовки к аттестации на 1С: Специалиста по платформе (+ Ссылки на материалы) Промо

Решение задач на 1С:Специалист v8 Россия Абонемент ($m)

Хочу поделиться собственным планом подготовки к аттестации на 1С: Специалист по платформе 8.3 со ссылками на материалы (и указанием стоимости).

1 стартмани

23.12.2017    23933    tmn72.1C    39    

Программная корректировка при выводе отчета СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

08.10.2020    5120    dabu-dabu    10    

Библиотека программного изменения формы (УФ)

Инструментарий разработчика Работа с интерфейсом Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

07.08.2020    5074    BuriyLesha    17    

Работа с хранилищем конфигурации из режима 1С: Предприятие минуя конфигуратор

Хранилище v8 1cv8.cf Абонемент ($m)

Описание приемов работы с хранилищем конфигурации 1С из режима 1С: Предприятие минуя конфигуратор. Статья содержит ряд примеров работы с хранилищем по протоколу HTTP, описание "внутренностей", а также демонстрационную обработку

3 стартмани

11.06.2020    6665    MaxxG    19    

Как выполнить отчет на СКД через COM и получить данные отчета? Промо

Практика программирования v8 УПП1 Россия Абонемент ($m)

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    27573    wowik    3    

История данных и БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

09.06.2020    4202    zeegin    17    

Выбираем российского провайдера для интеграции с WhatsApp

WEB Интеграция v8 Россия Абонемент ($m)

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

1 стартмани

19.05.2020    5318    ripreal1    5    

Telegram bot API - разбор документации с примерами

WEB v8 Абонемент ($m)

Перевод документации на язык 1С.

1 стартмани

06.04.2020    48918    leongl    59    

Как нарисовать граф на 1С Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

09.08.2013    71358    ildarovich    117    

Методика обновления формы объекта данных при изменении объекта

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

09.03.2020    11195    tormozit    14    

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

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

05.03.2020    6454    user5300    3    

Простой способ индексирования интервалов Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

28.09.2016    40362    ildarovich    22    

Конвертация данных 2. Использование исходящих и входящих данных. Свойство "Получить из входящих данных"

Обмен данными 1С Перенос данных из 1C8 в 1C8 v8 КД Абонемент ($m)

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

17.02.2020    19057    Drivingblind    31    

Вывод сообщений в HTML поле средствами 1С

Практика программирования v8 v8::УФ Абонемент ($m)

Пример использования вывода большого количества сообщений в поле HTML. С возможностью открывать ссылочные объекты и создавать новые объекты передавая параметры прямо из HTML поля. Протестировано на релизах 8.3.12 и 8.3.15+

2 стартмани

31.01.2020    6552    burni4    16    

Краткое руководство по внесению изменений в конфигурацию

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.01.2020    19144    sapervodichka    41    

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

1 стартмани

01.02.2018    35895    rpgshnik    49    

Разбираемся с web-kit в 1С, на примере интеграции TinyMCE в управляемую форму в УТ 11.4. Допиливаем обмен с сайтом в УТ 11.4

Обмен данными 1С Интеграция Адаптация типовых решений v8 v8::УФ УТ11 Абонемент ($m)

Многие уже знают, что в релизе платформы 8.3.14.1565, браузер Internet Explorer был заменен на Web-Kit, это на самом деле большой шаг вперед, но я уверен, многим, как и мне, пока не совсем понятно, что к чему. Возник опыт использования web-kit в 1С, вызова JS из 1С и вызова 1С из JS. Давайте вместе попробуем понять, чем одно отличается от другого, и заодно сделаем, что-нибудь полезное. Да и наверняка многим придется переписывать свои подобные поделки после обновления на новую платформу, так что надеюсь мой опыт окажется полезным.

2 стартмани

08.12.2019    8845    Бэнни    25    

Массовое изменение режима поддержки объектов конфигурации

Структура метаданных v8 1cv8.cf Абонемент ($m)

Что делать, если при сравнении/объединении конфигураций нужно изменить режим поддержки для большого количества объектов? Штатного механизма для выполнения подобной задачи в Платформе нет. Изменять режим для всей конфигурации? Описывается способ, позволяющий выполнить изменение режима только для нужных объектов.

05.11.2019    4344    VKislitsin    6    

"Живые" картинки со Snap.SVG

Практика программирования WEB Работа с интерфейсом v8 Абонемент ($m)

В статье рассмотрен пример использования http-сервисов для визуализации данных

1 стартмани

24.10.2019    14137    blackhole321    7    

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    47193    dsdred    43    

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью Rest API сайта. Часть 1. Авторизация

WEB v8 Абонемент ($m)

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью функционала Rest API предоставляемого платформой (CMS) WordPress (WooCommerce). Без дополнительных приложений на PHP/вставьте сюда любой другой язык программирования/.

1 стартмани

12.10.2019    34420    osivv    34    

RLS - дубли условий в запросах к СУБД

Практика программирования Роли и права v8 v8::Права 1cv8.cf Абонемент ($m)

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

1 стартмани

07.10.2019    8880    geron4    4    

Вебхук. Путь Телеграма

Внешние источники данных Интеграция v8 Абонемент ($m)

Долгое (на самом деле нет) и нелегкое путешествие телеграма к неведомым (из за РКН) конфигурациям 1С. Памятка себе.

1 стартмани

03.10.2019    20069    platonov.e    26    

Некоторая работа с данными через COM Промо

Практика программирования v8 Абонемент ($m)

В статье приведены примеры работы с Платформой 8.X через COM (точнее, через объект COMConnector). Примеры кода были использованы при реализации прикладных задач в процессе трудовой деятельности.

2 стартмани

05.12.2012    58453    wowik    32    

Многопоточная обработка данных на примере перепроведения документов

Обработка документов Практика программирования v8 ERP2 УТ11 КА2 Абонемент ($m)

Дальнейшее развитие темы фоновой обработки данных - проведение документов в потоках. Настройка параметров и запуск основного процесса (менеджера потоков). Разбивка документов для проведения на не связанные друг с другом наборы и запуск дополнительных фоновых заданий для отдельных потоков. Отслеживание выполнения каждого потока в родительском сеансе.

1 стартмани

17.09.2019    10163    ids79    46    

Описание формата внутреннего представления данных 1С в контексте обмена данными

Практика программирования Внешние источники данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на "внутреннюю кухню" платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм "быстрого массива", который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно "на лету" программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

1 стартмани

06.09.2019    20330    Dementor    30    

1С и PowerShell - обновление из хранилища

Администрирование данных 1С Инструментарий разработчика v8 Абонемент ($m)

Пример скрипта, упрощающего работу.

1 стартмани

29.08.2019    9285    Jokemas    31    

Работа со схемой запроса Промо

Инструментарий разработчика Практика программирования v8 v8::Запросы Абонемент ($m)

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

1 стартмани

24.04.2018    46094    kalyaka    35    

Удобный просмотр результата запроса с большим количеством временных таблиц

Практика программирования v8 Абонемент ($m)

Если Вам часто приходится просматривать в отладчике сложные пакетные запросы с большим количеством временных таблиц, то эта статья для Вас.

1 стартмани

27.08.2019    11490    ids79    22    

Обмен большими данными между клиентом и сервером

Внешние источники данных v8 Абонемент ($m)

В статье рассматривается вопрос передачи больших объемов данных, превышающих теоретический лимит сеансовых данных (4Гб за вызов) (они же временное хранилище) как с клиента на сервер, так и в обратном направлении.

1 стартмани

27.08.2019    14391    logos    32    

Запуск фонового задания во внешней обработке. Отключение предупреждений защиты от опасных действий в фоновом задании

Практика программирования v8 1cv8.cf Абонемент ($m)

Как запустить фоновое задание из модуля внешней обработки используя БСП. Как отключить безопасный режим и сообщения защиты от опасных действий независимо от профиля безопасности пользователя в фоновом задании во внешней обработке.

2 стартмани

24.08.2019    12662    BenGunn    22    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов Промо

Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Абонемент ($m)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    50009    DarkAn    86    

Изменяющееся контекстное меню в 1С 8.3

Практика программирования Работа с интерфейсом Разработка v8 v8::УФ Абонемент ($m)

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

1 стартмани

06.08.2019    17800    signum2009    16    

Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery с кэшированием

WEB v8 1cv8.cf Абонемент ($m)

В статье описан способ создания "фронтенда" на HTML/CSS/jQuery и скрипт кеширования AJAX запросов на PHP.

1 стартмани

06.08.2019    14304    Sedaiko    25    

Менеджер потоков: реализация "любой" задачи в потоках

Производительность и оптимизация (HighLoad) Инструментарий разработчика v8 Абонемент ($m)

Менеджер потоков – один их новых инструментов, который упрощает работу разработчиков. Насколько легко с ним, на конференции Infostart Event 2018 Education показал начальник отдела автоматизации 1С Иван Филимонов компании «Трансстроймеханизация».

01.08.2019    10265    DarkAn    7    

Агрегатное суммирование строк в запросе – сложно, но не невозможно Промо

Математика и алгоритмы v8 Абонемент ($m)

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

1 стартмани

09.09.2013    80564    ildarovich    54    

Процедура ПриКомпоновкеРезультата

Практика программирования v8 1cv8.cf Абонемент ($m)

Коллекция кода

1 стартмани

26.07.2019    45481    vasilev2015    64    

10 способов получить модуль числа (а может, и больше)

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

Пишем функцию вычисления модуля числа. Сколько способов существует? Давайте посчитаем!

1 стартмани

11.07.2019    10077    sam441    29    

Ловец дедлоков СУБД

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Россия Абонемент ($m)

Анализ простейшего дедлока СУБД в рабочей базе с использованием ЦУП (центра управления производительностью) и profiler MS SQL (Microsoft SQL Server). Эта статья будет полезна людям, изучающим вопросы оптимизации работы 1С, или тем, у кого возникают дедлоки в рабочей базе. UPD 09.07.2019 добавлено воспроизведение блокировки в случае установки управляемой блокировки перед чтением набора записей регистра сведений. UPD 10.07.2019 добавлена тестовая база с примером.

1 стартмани

08.07.2019    11672    azazana    79    

Новый запрос и новая таблица значений как функции Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

27.11.2012    45613    ildarovich    46    

Мониторинг производительности и искусственный интеллект

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Абонемент ($m)

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

1 стартмани

01.07.2019    9686    ivanov660    28    

"Убер на складе": динамический расчет маршрутов с учетом реальных расстояний

Учет ТМЦ Практика программирования Учет ТМЦ v8 УУ Абонемент ($m)

Представляю методику и инструмент для динамического расчета маршрутов отбора на высоконагруженных складах для максимального повышения эффективности склада, ускорения проходимости и, как следствие, экономии денег. Это методика и обработка для интеграции в WMS решения. Тестировалось на 1С 8.3.14.1565.

3 стартмани

24.06.2019    17641    informa1555    17    

1С:Ассемблер. Немного летнего веселья!

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

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

1 стартмани

21.06.2019    30891    Evil Beaver    137    

Уровни, глубина, прародители, циклы и аналоги запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

В продолжение публикации «Транзитивное замыкание запросом» [http://infostart.ru/public/158512/] добавлены другие варианты использования того же приема. Приведены запросы для быстрого определения уровней всех элементов справочника, максимальной глубины справочника, прародителей произвольных элементов справочника, запрос для быстрого определения циклов (на примере справочника спецификаций «1С:Управление производственным предприятием») и определения множеств аналогов номенклатуры (также на примере конфигурации «1С:Управление производственным предприятием»).

1 стартмани

13.11.2012    114698    ildarovich    98    

Простые примеры сложных отчетов на СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Подписи в отчете. Особенности соединения наборов: как соединить несоединяемое. Остатки на дату и обороты по месяцам в одном отчете. Курс валюты на каждую дату без группировок и соединений в запросе. Отчет с произвольными колонками и с произвольной последовательностью. "Неадекватный отчет".

1 стартмани

12.06.2019    31973    Hatson    31    

Работа с графической схемой в объектной модели DOM

Универсальные функции v8 v8::УФ Абонемент ($m)

Пример кода для работы с графической схемой в объектной модели DOM, платформа 8.3.12.

1 стартмани

04.06.2019    8131    botokash    19    

XDTO для чайников

Обмен через XML v8 1cv8.cf Абонемент ($m)

Пример использования XDTO пакетов для выгрузки документа с табличной частью.

1 стартмани

29.05.2019    33625    HAMMER_59    39    

Отладка правил обмена КД2 для подсистемы БСП Обмен данными

Перенос данных из 1C8 в 1C8 v8 1cv8.cf Абонемент ($m)

Уже давно нельзя отлаживать правила обмена при помощи внешних файлов. Попробуем исправить это.

1 стартмани

27.05.2019    12675    fenixnow    8