Metadata.js для построения дешевых высоконагруженных сервисов
Что такое Metadata.js?
- Движок ссылочной типизации для браузера и nodejs
- Библиотека для разработки бизнес-ориентированных и учетных offline-first браузерных приложений
Если коротко, то метадата предоставляет веб-программисту высокоуровневые объекты данных, аналогичные тем, которыми пользуются программисты 1С (перечисления, справочники, документы, регистры и т.д.)
Кроме привычных 1С-ных вкусностей в виде автоматического интерфейса, наши дата-объекты умеют работать в автономном режиме и прозрачно реплицируются с сервером при возобновлении соединения.
Еще, metadata.js можно рассматривать, как "БСП для веб", предлагающую готовые решения для:
- разграничения прав на уровне объектов, записей и элементов управления
- авторизации пользователей
- подключаемых внешних модулей, отчетов и обработок
- управления параметрами сеанса
- автономной работы и репликации с сервером
- автоматической генерации форм объектов и списков
- подписок на события дата-объектов и события глобального контекста
- маршрутизации url, журнала регистрации и мн. др.
Если у кого-то возник вопрос «а не очередной ли это велосипед», вынужден возразить: я достаточно ленивый человек, чтобы повторять функциональность, реализованную другими. Если бы нужную математику можно было купить, сделал бы это без долгих размышлений – это всегда дешевле и быстрее. Я старался не дублировать работу, проделанную уважаемым javascript-сообществом и по возможности использовать стандартные библиотеки. Вот список основных зависимостей:
Серверная часть
- couchDB, NoSQL база данных с поддержкой master-master репликации
- nginx, высокопроизводительный HTTP-сервер
Управление данными в памяти браузера
- metadata.js, движок ссылочной типизации для браузера и Node.js
- pouchDB, клиентская NoSQL база данных с поддержкой автономной работы и репликации с CouchDB
- alaSQL, SQL-интерфейс к массивам javascript в памяти браузера и Node.js
- aes, библиотека шифрования/дешифрования строк
- xlsx, библиотека для чтения и записи XLSX / XLSM / XLSB / XLS / ODS в браузере
UI библиотеки и компоненты интерфейса
- dhtmlx, кроссбраузерная библиотека javascript для построения современных веб и мобильных приложений
- handsontable, компонент для отображения и редактирования табличных данных
- daterangepicker, компонент визуализации и редактирования диапазона дат
- filesaver.js, HTML5 реализация метода saveAs
- moment.js, библиотека форматирования интервалов и дат
- numbro, библиотека форматирования чисел
- rubles.js, библиотека форматирования чисел - сумма прописью
Зачем это нужно и что даёт?
- Масштабируемость и надёжность. Сервер средней мощности может обслуживать тысячи клиентов и эти клиенты сохранят работоспособность при перебоях связи
- Неограниченная свобода в дизайне отзывчивого интерфейса
- Новое качество веб-приложений, сочетающее мощь бизнес-объектов 1С с эффективностью и открытостью веб-технологий
Предыстория

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

Система должна рассчитать геометрию элементов, спецификацию, стоимость и отправить эту информацию в план завода.
Типичный оконный завод производит до 1000 изделий в день, сотрудничает с большим количеством дилеров (от 200 до 500).
Из задачи вытекали спецтребования:
- Редактору геометрии требовалась интенсивная работа с данными в браузере в реальном времени – по каждому смещению мыши на сервер не набегаешься
- Должно работать при плохой связи и в автономном режиме
- Нужен гибкий отзывчивый интерфейс с поддержкой, в том числе, мобильных устройств
- Нужно нулевое администрирование на клиентах
- Хотелось сэкономить на лицензиях и серверном оборудовании
Имелся 1С-ный прототип для управления позаказным производством. В нём были подсистемы расчета спецификации, сложного ценообразования, диспетчеризации и учета - надстройка над 1С:КА 1.1. Повторить такой проект "в лоб", на языке программирования общего назначения - задача нереальная даже в теории. Решил разделить эту задачу на части:
- Делаем платформу, которая позволит использовать структуру объектов и синтаксис ala-1С
- Транслируем 1С-ный прототип в термины этой платформы
- Бинго! Имеем дешевый функциональный отказоустойчивый сервис
Преемственность синтаксиса
Свойства и методы объектов metadata схожи, но не повторяют и не ограничиваются возможностями 1С.
Например, у нашей табличной части (TabularSection) есть метод НайтиСтроки (find_rows). Кроме стандартного поиска по равенству полей, добавлен синтаксический сахар:
// поиск в 1С
Результат = ТабЧасть.НайтиСтроки(Новый Структура("Поле1", Значение1));
// поиск, "как в 1С"
res = ts.find_rows({Поле1: Значение1});
// поиск на неравенство
res = ts.find_rows({Поле1: {not: Значение1}});
// поиск по списку значений
res = ts.find_rows({Поле1: {in: [Значение1, Значение2]}});
// логическое ИЛИ
res = ts.find_rows({or: [{Поле1: Поле1}, {Поле2: Поле2}]});
// поиск с произвольным условием
res = ts.find_rows({Поле1: function(v, key){if v[key] > 3 return true;}});
// поиск с условием SQL выполняется на клиенте, без обращения к серверу
res = alasql("select * from ? where `Поле1` > 3", ts._obj);
Сравнение производительности
В offline-режиме, приложение metadata подобно локальной файловой базе 1С. Оба движка работают в этом режиме весьма шустро.
При работе с длинными списками, в metadata чуть больше свободы:
- Можно построить сложные, составные или фасетные индексы
- Если позволяет железо, можно работать с таблицами в памяти
- Можно наоборот, пожертвовать производительностью в пользу экономии памяти - всё зависит от задачи
Если metadata используется, как альтернативный лёгкий клиент к серверу 1С, получаем значительное ускорение даже на типовых конфигурациях. В эксперименте использованы:
- Один и тот же сервер – физически он расположен в Германии
- Она и та же информационная база
- Один и тот же канал в интернет ping ~ 90ms
- И даже документ мы один и тот же открываем
Наш, и 1С-ный клиенты находятся в абсолютно равных условиях.
Важно: перед замерами в 1С, несколько раз открываем и закрываем формы объектов и списков, чтобы прогреть кеш 1С-ного сервера.
Итак, время открытия типового заказа покупателя в веб-клиенте 1С занимает примерно 2.5 секунды.

В metadata та же операция выполняется за 400 мс.

Теперь посмотрим сетевой трафик. В metadata json прочитанного заказа занимает порядка 7 Кб.

В 1С, только передача пакета отъела 700 мс, и этот пакет занимает 180 Кб.

Таблица объединяет данные результаты измерений:
| Операция | Metadata | Веб клиент 1С | Выигрыш времени, раз |
Выигрыш трафика, раз |
|---|---|---|---|---|
| Мин. время реакции сервера | 150мс | 150мс | - | - |
| Загрузка и вход в программу | 4сек/4Mb | 20сек/6Mb | 5 | 1,5 |
| Открытие формы "Заказа" | 400mc/8Kb | 2200mc/180Kb | 5 | 20 |
| Открытие формы выбора справочника | 300мс/0Kb | 600мс/10Kb | 2 | >> |
| Поиск в динсписке кешируемых объектов | 200мс/0Kb | 300мс/10Kb | 1,5 | >> |
| Поиск в динсписке с обращением к серверу | 300мс/10Kb | 300мс/10Kb | - | - |
Чудес не бывает. Понятно, что ускорение достигнуто ценой снижения функциональности – например, у наших форм нет условного оформления.
Я не критикую платформу 1С. Технологии веб-клиента 1С и легкого клиента отличаются очень сильно.
Наш лёгкий клиент не предназначен для замены традиционного веб-клиента в тех задачах, с которыми платформа 1С справляется хорошо.
Конкурировать с 1С на её поле - глупо и бесперспективно. Зато, с metadata.js можно сделать бизнесу выгодное предложение в тех областях, куда 1С вообще не заглядывает. Появляется возможность добавить в дешевые веб-приложения такие функции, которые ранее были доступными только в тяжелых учетных системах.
Совмещаем сильные стороны 1С и современного web для решения бизнес-задач
Есть встречное движение:
- 1С в глобальную сеть
- Традиционный web – в область задач автоматизации бизнеса
Чтобы лучше понять это движение и интересы участников, рассмотрим наиболее сильные и слабые стороны 1С и веб-технологий:
- Веб-технологии содержат фантастические по изяществу и выразительности инструменты, но, к сожалению, там нет необходимого для бизнес-задач уровня абстракции. Посмотрите на сайты платежных систем, заказа билетов на самолет, поезд, личные кабинеты операторов сотовой связи – функциональность скудная, так как в языке, на котором думают постановщик и разработчик, нет слов для описания решаемой задачи.
- Платформа 1С - это очень мощный инструмент для построения учетных систем, но он сильно отстал от современного веб. Дело в том, что в 2008-2009 годах, когда проектировалась архитектура управляемого приложения, Javascript был другим. В браузерах не было автономной работы, в языке отсутствовали инструменты для управления свойствами объектов. В результате тонкий и веб-клиент 1С умеют лишь показывать данные и принимать ввод пользователя. В конце нулевых годов, такому подходу, наверное альтернативы не было. Но сегодня, когда любой телефон содержит несколько вычислительных ядер и несколько гигабайт ОЗУ, использование только серверного рендеринга и отказ от данных на клиенте – это непозволительная роскошь.
- В metadata.js
- Задействованы возможности современных браузеров
- Реализован уровень абстракции, доступный ранее только в платформе 1С
- Часть вычислительной работы и хранение коротких списков - справочников и перечислений перенесена на клиента.
Это позволило значительно улучшить производительность, снизить нагрузку на сервер, повысить скорость и качество разработки
Инструменты metadata.js могут украсить жизнь как разработчикам 1С, так и веб-программистам. Но и те, и другие пока не проявляют интереса к нашей математике.
Рассчитывают отсидеться на освоенных технологиях. Конкуренция пока небольшая, «пирога» всем хватает.

Есть устоявшиеся стереотипы:
- Для работы браузера нужно подключение к Интернет
- Настольная программа работает быстро, а браузерная - тормозит
- 1С-ный синтаксис есть только внутри 1С
- Система на 1000 пользователей - это очень дорого
- Из браузера трудно достучаться до COM и USB портов и прочего внешнего оборудования
- Автономное веб-приложение - это очень сложно
Metadata.js пытается эти стереотипы пошатнуть.
- Браузер прекрасно работает offline
- Нативному приложению, чтобы приблизиться к качеству веб-интерфейса, сначала нужно реализовать внутри себя браузер
- Синтаксис, подобный 1С-ному, теперь доступен в javascript
- Система на 1000 пользователей - это реально дешево
- Из javascript легко управлять COM, USB и сетевыми устройствами
- Автономное веб-приложение - это очень просто
Пользуйтесь и зарабатывайте на внедрениях.
*****************
Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2015 CONNECTION 15-17 октября 2015 года.
Приглашаем вас на новую конференцию INFOSTART EVENT 2019 INCEPTION.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
WEB-интеграция Рабочее место Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Пользователь 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 10 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)
Программный продукт "Управление доставками в 1С" позволяет обмениваться с личным кабинетом Boxberry, СДЭК, Энергия, Почта России, DPD, ПЭК, Grastin, Деловые Линии, КСЕ, Dalli, ЯндексДоставка. Упрощает создание заявок и резервирование заказов прямо в интерфейсе 1С
24400 руб.
10.03.2016 76067 321 100
WEB-интеграция Разработчик Аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)
Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.
17568 руб.
20.12.2024 7741 35 4
Сайты и интернет-магазины WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)
Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.
42700 руб.
03.08.2020 25811 42 26
WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)
Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStars разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.
20740 руб.
13.05.2025 3065 6 0
WEB-интеграция Оптовая торговля Розничная торговля Разработчик 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)
Модуль интеграции 1С с OpenCart 2.x, 3x позволяет обмениваться данными между OpenCart (самая популярная бесплатная cms для интернет-магазинов) и 1С:Предприятие 8.
6914 руб.
17.11.2015 135231 477 143
WEB-интеграция Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия Управленческий учет Платные (руб)
Хорошая основа вашего решения импорта данных статистики Яндекс.Метрики в информационную базу 1С. Получение счетчиков, запрос статистики, получение данных - все в одной обработке.
5094 руб.
21.06.2022 11400 12 0
WEB-интеграция Загрузка и выгрузка в Excel Разработчик Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Россия Платные (руб)
Расширение освободит вас от необходимости вручную обновлять информацию о товарах в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически формирует файлы yml для дальнейшей загрузки в группы в ВК. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.
12200 руб.
29.08.2025 3741 7 8
WEB-интеграция Аналитик Бухгалтер Пользователь 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения Россия Платные (руб)
Доступ в виде подписки к сервисам 1СПАРК Риски и 1С:Контрагент в «старых», но широко используемых конфигурациях.
6100 руб.
30.01.2019 28899 104 6
Конфигурация сервера зависит от задачи. Если нужно совсем автономное рабочее место (например, учет личных финансов), работать может вообще без сервера - по аналогии с локальной файловой 1С.
Через неделю планирую опубликовать статью "Helloworld на metadata.js" с пошаговыми инструкциями и примерами кода. Надеюсь, статья ответит на базовые вопросы.
Примеры
Особенности:
Коммерческая лицензия на разработчика стоит €300 и позволяет использовать и распространять ПО в любом количестве неконкурирующих продуктов, без ограничений на количество копий
Для коммерческих проектов нужны плюс лицензии задействованных библиотек: и
Важно: все лицензии на разработчика. Их можно использовать для неограниченного числа автоматизируемых рабочих мест на неограниченном количестве серверов.
Если открыть то же самое без jsfiddle-обёртки, разметка нормальная.
Еще год назад примерно смотрел ваш продукт Metadata.js, интересная реализация, даже для экспериментов делал у себя некоторые доработки. Но вопрос - какая лицензия? На каких условиях распространяется продукт?
Этот вопрос меня останавливал использовать его в продакшене у клиентов.
18000 рублей
Но!
в состав Metadata.js входит dhtmlx цена на который для проектов больше 1 - от 1000 у.е.
К тому же в лицензии написано :Распространение ПО в составе продуктов, являющихся конкурентами metadata.js, или обладающих схожей с функциональностью - запрещено
То есть вместе с 1С ее нельзя использовать.
- В коммерческую лицензию метадата не входят лицензии dhtmlx и handsontable
- metadata умеет работать на сервере или в браузере без визуализации. В этом случае, dhtmlx и handsontable не нужны. Вы можете манипулировать объектами данных с помощью metadata, а показывать их пользователю с помощью своего кода
- для opensource проектов работает agpl, по которой ничего покупать не надо
metadata умеет работать на сервере или в браузере без визуализации. В этом случае, dhtmlx и handsontable не нужны.
Если я буду работать на сервере без визуализации, я просто из 1С впишу/прочитаю данные в БД.
Это будет по крайней мере безопаснее, нежели использовать такую прослойку как у вас. И абсолютно точно не съест лицензий, кроме серверной.
А отобразит их веб программист с помощью своего кода.
Народ то возбуждается как раз на отображение в виде аля 1С, а оно стоит как серверная лицензия 1С.
Приведите пожалуйста пример opensource проекта на 1С.
Кстати. Прошел год с вашего доклада и насколько я вижу на всех значимых форумах по 1С вы тогда отписались.
Есть Success Stories успешных внедрений?
Дилеры оконных заводов не в счет, им то я понимаю в добровольно/приказном порядке систему внедрили.
Программист в metadata не использует XHR и не работает с DOM. Он пишет обработчики событий "при создании", "при изменении реквизита", "перед записью" и т.д. в модулях объектов и менеджеров
В заголовке написано: "Движок ссылочной типизации" - ни слова про "отображение"
Метадата умеет рисовать интерфейс, но в этом она не оригинальна. Есть сотни библиотек про рисование интерфейсов.
Зато, библиотек про оффлайн/онлайн данные с методами и свойствами, как в 1с, я в интернете не нашел.
Приложения на metadata.js умеют работать в разных режимах:
- Распределенная система - в этом режиме, CouchDB реализует шину данных, к которой подключены веб-клиенты и одна или несколько ИБ 1С. Базы могут быть разной структуры и располагаться в разных датацентрах. Репликация с 1С выполняется в фоновых заданиях
- Клиент-серверный режим без 1С - в этом режиме, используем ту же шину данных, но 1С к ней не подключена рантайм. Обмен с 1С может выполняться отдельными обработками
- Локальный однопользовательский режим без 1С - отдельный компьютер или мобильное устройство без доступа к сети. Обмен с внешним миром через дискету или флешку
- Лёгкий клиент 1С - должны быть опубликованы http-сервисы 1С. Веб-приложение обращается напрямую к серверу 1С. В этом (и только в этом) режиме, требуются клиентские лицензии 1С по числу одновременно выполняющихся запросов. Не путать с количеством клиентов, в браузерах которых открыто веб-приложение. Технически, лицензии не нужны. Сервер 1С из пула лицензий при работе http-сессии ничего не откусывает. Юридически, в разных документах у 1С на этот счет разные толкования. Я вёл переписку с отделом лицензирования 1С. Внятного официального ответа так и не получил. Думаю, если возникла потребность именно в лёгком клиенте, проще эти 1С-ные лицензии просто купить. Не такая уж это большая сумма на фоне общей стоимости проекта
- AGPLv3 - имеете право ничего никому не платить, но обязаны предоставить по первому требованию исходные тексты всего вашего проекта, плюс, обязаны упомянуть в титрах все использованные библиотеки. Проект может быть коммерческим, Вы можете брать деньги за лицензии и сопровождение. Главное, соблюсти два условия: открытый код + упоминания авторов
- Коммерческая лицензия - наша лицензия стоит 18 тыс. руб. на разработчика и позволяет выпускать и тиражировать прикладные решения с закрытым кодом. Решения не должны конкурировать с самим движком metadata. Например, будет незаконно переименовать метадату в ala1c, изменить стили оформления и выдавать за свою разработку. Кроме нашей коммерческой лицензии, потребуются коммерческие лицензии всех остальных, задействованных в вашем проекте библиотек (их состав зависит от вашего проекта)
Но противопоставлять себя грандам... да еще на сайте сообщества 1С :)
Сколько не занижай приору, ламборджини из нее не выйдет.
Кроме метаданных, под капотом 1С достаточно серьезные решения.
Команда программистов, постановщиков задач и т.п.
И до вас и после будут проекты пытающиеся оперировать бизнес-объектами.
Тырить логику конфигурации у 1С дело не хитрое.
Собственно в этом и все совмещение вашей платформы и 1С ?
Я в каждом абзаце подчеркиваю, что если некая задача хорошо решается в 1С, не надо тратить время на метадату.
Я не предлагаю заменить метадатой настольную 1С. Напротив, предлагаю распространить подходы 1С в большой веб и мобильные приложения.
Там реально непаханое поле и сообщество 1С могло бы эффективно на этом поле поиграть.
Если бы Вы дали себе труд посмотреть в исходники, Вам бы тоже очень понравилось, как эта интеграция устроена изнутри
Например в 2005 - 2010 годах при повальном переходе с 1С:7.7 на конфигурации 1С:8 отсутствовала возможность качественного переноса данных.
В тот период пользовались регулярным спросом программы по переносу данных в УПП , ЗУП ,БП, УТ из ТиС, Комплексной, ЗиК, Бух-7.7
Да, прошло время и 1С наконец-то сделали свои рабочие версии переносов данных
При этом несколько лет им было просто не до этого.
А работать надо.
P.S. Интересно было бы услышать комментарии автора насчет лицензии и конечно побольше примеров работы с metadata.js
1С знаете сколько человекочасов потратило на свой продукт, а хотя бы ты же microsoft на Visual Studio Code оооо.. Только вряд ли они пели про стратегию голубого океана и прочее, при этом забывая о такой сущей мелочи как сторонняя лицензия в тысячу баксов, ага.
P.S. Я однозначно не за халяву, сам программист., но очень любопытно узнать как человек/компания собирается создавать рынок, с таким отношением и стратегией)) Часто у вас потенциальные клиенты спрашивают сколько ваш труд стоит человекочасов и как они счастливые готовы за это платить? Опять же, 18 000 это копейки, я про "скрытые" лицензии. Насчет безопасности само собой вопрос открытый.. Но все равно, задумка хорошая и однозначно стоит наблюдать за эволюцией, кто знает может будет Angular в мире 1C)
Цитата из синтакс-помощника:
Итог (Total)
Синтаксис:
Итог(<Колонка>)
Параметры:
<Колонка> (обязательный)
Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:
Тип: Число; Неопределено.
Описание:
Суммирует значения всех строк в указанной колонке.
Цитата из :
aggregate ( [dimensions] [resources] [aggr] [ret_array] ) Number | Array
Вычисляет агрегатную функцию по табличной части
Не изменяет исходный объект. Если пропущен аргумент aggr - вычисляет сумму.
Стандартные агрегаторы: SUM, COUNT, MIN, MAX, FIRST, LAST, AVG, AGGR, ARRAY, REDUCE
AGGR - позволяет задать собственный агрегатор (функцию) для нестандартного расчета итогов
Параметры:
[dimensions] Array | String optional - список измерений
[resources] Array | String optional - список ресурсов
[aggr] String optional - агрегатная функция
[ret_array] Boolran optional - указывает возвращать массив значений
Возвращает:
Number | Array:
Значение агрегатной фукнции или массив значений
То есть вместе с 1С ее нельзя использовать. "
Распространение - это продажа и реализация, а не эксплуатация. Использовать можно так как в предложении : "Распространение ПО в составе продуктов, являющихся конкурентами metadata.js, или обладающих схожей с функциональностью - запрещено" - здесь идет запрет о совместной продаже и с юридической точки зрения запрет совместного распространения и запрет эксплуатации - НЕ ОДНО И ТОЖЕ
В 1С Сделайте документ "Коммерческое предложение" состоящее из 2 различных частей.
1. Товары и услуги.
2. Рекомендуемые дополнения.
в 1 прописывается основной комплекс предлагаемых товаров и работ, оказываемых услуг, а во второй сделаете рекомендуемые для совместной работы, которые заказчик может в дальнейшем приобрести. В таком порядке условия соглашения никак не нарушаются и согласно пункту такому-то о :
"Распространение ПО в составе продуктов, являющихся конкурентами metadata.js, или обладающих схожей с функциональностью - запрещено" условия полностью соблюдаете. юридически это граммотно и более целесообразно. 1С выступал бы не как продукт в составе основного комплекта ПО, являющихся конкурентами metadata.js, или обладающих схожей с функциональностью, а лишь как рекомендуемое дополнение.
Ситуация довольно примитивная, но позволяет обойти условия не нарушая при этом таковые вышеизложенные условия лицензии.
Юристы верят бумажкам и доказательствам, а не словам
Примеры драматически старые. В ближайшие недели запланирована публикация новых примеров + статья с пошаговыми инструкциями для быстрого старта
Угу.
Я распечатываю список контрагентов и в газпроме распечатывают список контрагентов.
Значит я работаю в газпроме.
На вашей системе кроме вас кто то еще создал коммерческие решения или год пиару прошел зря ?
Я не понимаю, почему так много скептических комментариев или придирок к цене.
Классный высоко-технологичный проект!
И есть множество задач, когда нужно дать пользователю простой интерфейс со связью с 1С и в идеале чтобы просто в браузере работало на чем угодно.
Пишу этот ответ, чтобы подстегнуть работы по демо-примеру. Заставить себя работать трудно, но обещание придется исполнять
Где эти задачи ?
Вы отделяйте мух от котлет.
Есть веб программисты, они привыкли к своим языкам программирования и своей среде исполнения.
Есть программисты 1С у них свой язык программирования и своя среда исполнения.
Стыковка происходит элементарным обменом, формат стандартизован.
А вы почему то считаете, что сайты должен делать 1С ник ?
Это так же непросто, там есть свои тонкости, не говоря уже об элементарной безопасности.
Этот проект никто не ломает потому лишь, что на нем никто не работает.
Это если говорить о "простой интерфейс со связью с 1С"
А если говорить о проекте как об учетной системе, то уверяю вас их сотни и большая часть тоже имеет встроенный конфигуратор.
Откройте любой каталог ПО
И все они стыкуются или будут стыковаться с 1С. И многие из них хотели бы здесь рассказать какие они классные.
Я с удовольствием сверну работы по метадата и приму участие в развитии более грамотного движка.
- Они не понимают и не хотят понимать бизнес-процессов учета и управления
- Они каждый раз изобретают велосипед на языке низкого уровня вместо того, чтобы воспользоваться такими бизнес-объектами, как документ и регистр
Что вебщики рисуют нормальные интернет-магазины и личные кабинеты.
Я утверждаю, что сегодняшние веб-решения изнутри - это Ад и Израиль.
Почитайте исходники хоть вордпресса, хоть битрикса, или, например, opencart.
Читать предлагаю недалеко от туалета - вас обязательно вырвет.
Их множество, то что сразу приходит на ум:
Вы оптовая компания и вам нужно дать своим партнерам доступ типа в личный кабинет (акт сверки, заказы) - будете делать это на 1С? Купите лицензий по числу партнеров?
Вам нужно дать кладовщику простой интерфейс для подтверждения факта отгрузки товара по накладной - будете ставить ему 1С? ему хватит простого web'чика с одним полем ввода и кнопкой.
Есть веб программисты, они привыкли к своим языкам программирования и своей среде исполнения.
Есть программисты 1С у них свой язык программирования и своя среда исполнения.
В том то и дело, что с каждым днем эта грань стирается! Есть крутые 1C-инженеры, которые знают/изучают Python, JavaScript, Docker и вот это вот все и есть посредственные, которых не интересует ничего дальше границ 1С.
Обмен и реалтайм работа - сильно разная работа.
ИМХО, речь в публикации вообще не о сайтах. Речь о решении, которое предлагает классный способ дать удобные web-интерфейсы к 1C.
Ок, если страшно, начните использовать это в интранете, т.е. там где вы полностью контролируете инфраструктуру и периметр.
Стоимость лицензий, конечно, имеет значение, но позиционирование у меня другое:
- Metadata жрёт в 20 раз меньше трафика. Это инженерный факт. Оспаривать его бессмысленно. Как следствие, работает при плохой связи и даже в автономном режиме
- У нас намного проще и надежнее серверная инфраструктура. Для обслуживания 1000 клиентов, CouchDB использует меньше ОЗУ и процессорного времени
- Metadata предоставляет веб-программисту высокоуровневые объекты данных, прямого аналога которым просто нет в других фреймворках
Например, рабочее место контролера ОТК, где требуется регистрировать готовность изделия + наличие и характер дефектов. Обычные ТСД и сканер не годятся, т.к. дефекты надо привязать к элементу изделия. Решено использовать смартфон + bluetooth сканер. При сканировании этикетки, выводим на экран смартфона чертёж изделия с возможностью выделить любые элементы и указать в контекстном меню маршрут исправления.
Еще, есть цеховая безбумажка, где для отображения данных использованы бытовые телевизоры. Метадата прекрасно справляется с задачей, работая внутри встроенного в телевизор браузера.
Понятно, что этой реализации, предшествовали безуспешные попытки сделать то же самое в веб-клиенте 1С. Возможно, проблема в моей низкой квалификации, а может быть и в чем-то другом.
Не могли бы вы пояснить по лицензированию AGPL? Что именно вы причисляете к проекту, исходники которого должны быть открыты? Например, если делать личный кабинет дилера к конфигурации 1С: Управление торговлей (10 или 11)?
У меня есть заготовка и живой демо-пример
Личные кабинены - это самое типовое и самое понятное назначение метадаты.
Еще, напрашиваются проекты "Розница" и "Мобильное рабочее место торгового представителя". По ним, так же, готов предложить совместную работу.
Технологии используемые в Metadata.js(NodeJs, CouchDB,...) это просто сказка, наконец-то современные технологии добрались до 1с)
Единственное, требуется активное сообщество для этого продукта, которое выстроит современную архитектуру, будет писать тесты, исправлять ошибки оперативно и добавлять красоту и новые функции.
Подскажите, для чего используется AlaSQL на стороне клиента? Ведь есть уже PouchDB..
для чего используется AlaSQL- Хранение структурированных данных в озу браузера (быстрый синхронный кеш)
- SQL интерфейс к этим данным
- Хранение данных в indexeddb
- Синхронизацию этих данных с CouchDB
Почему за столько лет так и не создали обычную .dll'ку/.so для подключения к базам 1С? Зачем нужен "зоопарк" всех версий 1С и COMобъектов в системе, когда нормальные программисты все реализуют на уровне версий протоколов в одной компоненте, дорабатывая её с каждой новой версии и оставляя обратную совместимость. Даже мелкие утилиты размером в несколько десятков килобайт имеют встроенные https серверы (а иногда и целый ворох серверов) для возможности использования API, а 1С обязательно нужно использовать внешний Web сервер, с отдельным установленным плагином к этому типу сервера, чтобы хоть как-то задействовать тот же OData. Использование ActiveX InternetExplorer'a и разгребание косяков связанных с разными версиями браузера меня тоже убивает. Движки браузеров типа WebKit или Chromium внедряют в свои приложения уже со школьной скамьи... Это я пишу после недельной безуспешной попытки собрать win32ole на node.js в Windows 10/Windows7, чтобы хоть как-то их подружить. В итоге всё свелось к подключению через прекомпилированный "edge" для Node.js 6 версии, т.к. в 8 версии edge не собирается точно также. На выходе имеем плагин edge, который на языке JavaScript, передает коде на язык C#, который создает подключение к COM объекту 1С, чтобы использовать его на языке 1С... Это похоже на удаление зуба через задний проход.
1. Имеете негативный опыт разработки на традиционных веб-технологиях. Если за плечами есть внедренная самописная crm, cms или как минимум - интернет-магазин, вам будет проще воспринять наши идеи. Вы очень быстро увидите, что метадата позволяет экономить тысячи строчек кода и сотни часов вашего времени. С точки зрения веб, метадата - очень высокоуровневый инструмент.
2. Есть реальная задача, где требуется высокая доступность данных и которую не получается решить на 1С из-за ограничений платформы. Открыв метадату, вы будете опьянены безграничной свободой, по сравнению с 1С, метадата - очень низкоуровневый инструмент.
При желании, вы можете запустить приложение на метадате вообще не в браузере, а на любом устройстве с поддержкой js.
Демо-пример "Hello, world" смоделировали, дошли до авторизации, авторизация под пользователем "Гость" прошла, но при переходе в список "Перемещение денег" выдает ошибку (скрин). Заранее спасибо за помощь!
создавать еще один инструмент в довесок или как альтернативу или к уже существующей технологии - это интересно только для чистых программеров. В нашей (1Сной) области - чистым программеров предложенный инструмент - не интересен потому, что "чистые" 1С-программеры влияния на бизнес-процессы и выстраивание архитектуры - не имеют (нагружать себя лишним инструментарием, неприменяемым в области зарабатывания денег это или непродуктивно или только хобби). А бизнес-программисты 1С - им этот дополнительный инструмент вообще побоку. им хватает головняка и с платформой, и с конфами, и с бизнес-вопросами.
Итого: невнятное позиционирование для ШИРОКИХ масс не дало результата.
Как-то так я себе представляю.
Итог, в целом - хороший. Голубой океан никуда не делся. Внешних и внутренних проектов хватит на пять жизней. Внедрённые на метадате решения подтвердили высокую эффективность выбранных технологий.
1С хвастается проектами на 1000 пользователей и считает это highload. Сейчас, мы работаем над проектом с плановой нагрузкой в миллион подключений и нет сомнений, что проект будет успешно реализован.
По поводу веб-клиента 1С полностью согласен. Неуклюжий, тормозной, морально устаревший. Также удручает способ реализации асинхронных методов 1С.
Выводы: такие opensource проекты, как react, angular, node и пр. находятся на острие web developments и поддерживаются всемирным сообществом. Будут появляться новые. Попытки создать фрэймворки заточенные под конкретные задачи всегда будут иметь очень узкое локальное применение и всегда будут иметь риски морального устаревания и субъективного подхода. В результате можно пойти не той дорогой. Такие гиганты как SAP имеют право на ошибку. Отдельным энтузиастам сложнее в этом плане.
Да, скорость разработки в специализированных решениях выше. Но тут вопрос выбора разработчика, готов ли он продвигаться в рамках только этого решения или хочет расти в тренде со всем мировым сообществом разработчиков.
P.S. Это лично мое субъективное мнение, никак не претендующее на истину.
P.P.S. И да, проблема пользовательского интерфейса существует, и пока нет решения. Каждый пытается решать по своему. Понятно, что надо смотреть в сторону web технологии, как наиболее универсальной в данный момент. SAP в этом плане пошел дальше 1С, но и сравнивать их возможности некорректно.
P.P.P.S. Вам респект за такой подвиг и желание создавать продвинутые решения. Возможно еще не время для широкого принятия этой идеи. Корпоративный сектор очень консервативен в своих решениях.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 535370
Создание 08.08.16 08:37
Обновление 08.08.16 08:37
Просмотры 46418
Загрузки 0
Рейтинг
211
Комментарии 103
Код открыт Не указано
Рубрики WEB-интеграция Языки и среды
Кому Разработчик
Тип файла Нет файла
Платформа Не имеет значения
Конфигурация Универсальные
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)