Платформа веб-приложений для бизнеса

Metadata.js — это проект с открытым кодом.
Приглашаем к сотрудничеству всех желающих. Будем благодарны за любую помощь.

Проект начинался с реализации лёгкого javascript клиента 1С (в дополнение к толстому, тонкому и веб-клиентам) и предназначался для чтения и редактирования данных, расположенных на сервере 1С с большим числом подключений (дилеры или интернет-витрина).
Позже, была реализована математика, использующая в качестве сервера хранилище данных на базе CouchDB и PouchDB с поддержкой прозрачной в реальном времени синхронизации с 1С.

Это просто
Кодируйте бизнес-логику в знакомом синтаксисе на сервере 1С. Клиентские формы создаются автоматически по описанию метаданных

Безопасно
Предоставьте внешним пользователям нужные для их работы данные и не беспокойтесь о конфиденциальной информации

Быстро
Создавайте реактивные web-приложения с отзывчивым интерфейсом, недостижимым без кеширования данных на клиенте

Дешево
Обслуживайте сотни и даже тысячи пользователей в одной ИБ 1С на одном физическом сервере

Концепция и философия

В metadata.js предпринята попытка дополнить лучшее из современных технологий обработки данных инструментами,
которых нам не хватало в повседневной работе

metadata_infrastructure

metadata_structure

Презентации

Зачем это надо

  • Для больших — когда нужны сотни подключений
  • Для мобильных — когда должно работать при плохой связи
  • Для личных кабинетов клиентов и дилеров
  • Для нестандартных рабочих мест, которые трудно реализовать привычными средствами 1С

Как это сделано

  • Чудес не бывает — жертвуем функциональностью ради скорости
  • Сохраняем самые ценные свойства платформы 1С:
    • Метаданные и автогенерация форм
    • Объектные и ссылочные типы — справочники, регистры, документы и их менеджеры
  • Добавляем гибкость и эффективность javascript ES2015

Примеры

Codex - code examples

Codex — расширение документации

  • Приложение codex предназначено дополнить документацию примерами javascript
  • Написано на metadata.js, само по себе является демо-приложением (кино про то, как снимают кино)
  • Содержит тестовые данные и описание метаданных, доступные в offline (без обращения к серверу 1С)

Интернет-магазин MetaStore

Интернет-магазин MetaStore

  • Приложение metastore реализует функциональность интернет-магазина для информационной базы 1С
  • Киллер-фича: в личном кабинете клиенту доступны для просмотра все первичные документы, связанные с его покупками (счета, оплаты, отгрузки и возвраты)
  • Информация об остатках, оплатах и заказах, предоставляется в реальном времени — никаких обменов между сайтом и 1С не требуется, так как сайт — это и есть 1С
  • Библиотека является расширением типовых конфигураций и максимально использует методические и программные наработки, накопленные фирмой 1С и её партнерами

Заказ дилера для УПзП

  • Веб-интерфейс (личный кабинет самообслуживания) для дилеров оконных заводов
  • Подробнее в google chrome store
  • Демо доступно без регистрации по адресу https://light.oknosoft.ru

Бухгалтерия предприятия

Счета и реализации для БП

unf: список заказов

Заказ покупателя для УНФ

Безбумажное производство

Пример реализации рабочих мест (в том числе, на мобильных устройствах) для отображения технологической информации, управления станками с ЧПУ и регистрации событий в цехах сборки окон из ПВХ, деревянного и алюминиевого профиля


Создавайте web-программы для бизнеса без клиентского кода

Готовый каркас приложения

  • Структура файлов проекта
  • Обработчики событий интерфейса
  • Обработчики событий объектов данных
  • Взаимодействие с 1С как через собственный http-сервис, так и по стандартному протоколу rest odata

Мощные объекты данных
Реализованы в терминах javascript 1С-подобные объекты Документов, Регистров и Справочников
Front-end программисту доступны большинство методов, привычных для конфигуратора 1С

Динамические формы
Фреймворк умеет генерировать формы объектов, списков и выбора по описанию метаданных. При этом, в менеджерах объектов можно определить, как собственные формы с индивидуальным дизайном, так и переопределить обработчики событий типовой, созданной автоматически формы

Эффективное кеширование
Для достижения максимальной производительности, в зависимости от задач используются:

  • HTML5 Appcache
  • IndexcedDB
  • Таблицы в ОЗУ браузера

Переобучение не требуется
100% преемственность серверного кода. Возможность использования любых серверных методов объектов типовых и изменённых конфигураций 1С, дополняется возможностями прототипного наследования javascript и новыми возможностями ES6

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

Документация

Справочник API

www.oknosoft.ru/upzp/apidocs/classes/MetaEngine.html

Страница проекта на GitHub

https://github.com/oknosoft/metadata.js

Метаданные

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

Объекты и менеджеры данных

Реализуют на клиенте высокоуровневую объектную модель документов, регистров и справочников. Состав свойств и методов наших DataObjects гораздо скромнее 1С-ных. Платформа 1С очень большая. Эффективность и производительность лёгкого клиента обеспечена исключительно тем, что мы реализовали только самые необходимые для работы инструменты, отказавшись от очень удобных, но дорогостоящих бантиков.
В некоторых аспектах, наши объекты получились мощнее прототипа. Например, для кешируемых объектов (большинство справочников, перечисления, некоторые документы) доступен SQL на клиенте. Есть возможность фильтровать, объединять и группировать данные без обращения к серверу, сохраняя при этом разузлование через точку и ссылочную типизацию.

Транспорт и кеширование данных

Низкоуровневые механизмы. Прикладной программист может о них не задумываться, оперируя публичными свойствами объектов данных, но при необходимости, можно опуститься на уровень XMLHttpRequest и поработать с заголовками HTTP.

Rest-сервис ODATA

Используется для типовых конфигураций на полной поддержке.
Функциональности протокола ODATA (во всяком случае, в его сегодняшней реализации сервером 1С), для сложных задач, скорее всего, окажется недостаточно. Либо, придется мириться с потерей эффективности, выполняя N серверных вызовов вместо одного продвинутого http-метода. Вместе с тем, возможность подключиться лёгким клиентом к неизменённой информационной базе выглядит очень эффектно и мы были вынуждены реализовать поддержку автоматического rest сервиса в нашем фреймворке.

HTTP-сервис библиотеки интеграции

Если допустимо внесение изменений в типовую конфигурацию, в дополнение к автоматическому rest-сервису, можно использовать дополнительный http сервис. В этом случае, становятся доступными сложные выборки данных (например, пагинация — select * from table limit 200,100 вернёт из длинной таблицы фрагмент в 100 записей начиная с двухсотой) и обращения к любым методам объектов и общих модулей на сервере 1С.

WS-сервис SOAP

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

UI объекты визуального интерфейса

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

Лицензии

Open Source
Исходные тексты библиотеки metadata.js, файлы примеров и документации, доступны на github.

Важно! В настоящий момент, для визуализации данных используется библиотека dhtmlx. Часть её компонентов — платные.
Для легального использования, кроме нашей лицензии, требуется лицензия на компоненты dhtmlx.

Никаких ключей
Фреймворк не использует программных или аппаратных средств защиты от копирования, не требует для работы получения API-ключей. Ограничения на воспроизведение и использование — только лицензионные.

Демократичные цены
Библиотека metadata.js имеет две схемы лицензирования:

  • Для некоммерческих Open Source проектов доступна лицензия AGPL-3.0
  • Коммерческая лицензия на разработчика стоит €300 и позволяет использовать и распространять ПО в любом количестве неконкурирующих продуктов, без ограничений на количество копий

Обратная связь