- Маска /<!---/g в html шаблона отчета
- Поддержка типа кеширования doc_ram для регистров сведений
- Проверка типа при фильтрации по подстроке
- couch_direct = true по умолчанию
- Доппроверки в OTabular
- Для иерархических объектов данных, добавлены методы _children и _hierarchy
- Удалена информация о часовом поясе при сериализации дат
- Управление acl правами пользователей перенесено из отдельного справочника users_acl в общий справочник users
- Исправлена ошибка в методе $p.iface.check_exit()
- Улучшено поведение поля ввода OCombo - выбор значения при потере фокуса
- Добавлен метод $p.utils.docxtemplater(blob), подключающий библиотеку https://github.com/open-xml-templating/docxtemplater
- Метод bases() в Meta и pouch.remote, тип кеширования remote в sync_grid
- class_name при записи объекта в pouch.save_obj
- google maps api key to IPInfo
- Форма ввода адреса удалена из основной поставки и выделена в отдельный компонент
- Новый тип кеширования doc_ram
- В методе $p.record_log поддержано логирование ошибок из свойства _data._err
- Свойство _obj в классе OTabular
- Добавлен контроль типа _mgr в методе value_mgr()
- Клавиатурная навигация в OTabular теперь генерирует событие onRowSelect
- В метод _clone прототипа Object добавлен параметр exclude
- В методе _find_rows _top по умолчанию увеличен с 300 до 1000
- Метод clear_svgs удалён из класса InterfaceObjs
- Исправлена ошибка в _move_row класса OTabular
- Метод open_selection в OCombo и eXcell_ocombo
- Исправлены ошибки в OCombo и OHead_fields
- В прототип CatObj добавлен метод in_hierarchy
- Дополнена структура scheme_settings
- Добавлен метод query_value - диалог ввода значения
- Добавлена возможность изменять порядок строк в OTabular
- Расширена функциональность SpreadsheetDocument - добавлены методы append и print
- daterangepicker исключен из metadata.js. Если он нужен в клиентском приложении, его следует загрузить отдельным скриптом
- Общий код scheme_settings v0.12 и v2.0
- Исправлена ошибка редактирования булевых типов в OTabular
- В элемент управления OTabular добавлен фильтр по подстроке
- В элемент управления OTabular добавлена возможность сортировки по одному или нескольким полям
- Реализован режим couchdb_direct без кеширования данных в indexeddb браузера
- В отборе по связям параметров выбора добавлена проверка владельца для подчиненных справочников
- Доработан алгоритм перезагрузки страницы при обновлении метаданных
- Методы подготовки системных метаданных (журнал регистрации, системные перечисления, настройки отчетов и динсписков) удалены из 1С и перемещены в конструктор Meta
- Подключаемый обработчик нажатия кнопок панели инструментов формы wnd_selection
- В атрибутах метода Pouch.save_obj учтено значение db, что позволяет сохранить текущий объект в другой базе. Например, зарегистрировать изменения объекта с типом кеширования ram на сервере
- Исправлена ошибка при выборе составного типа в элементе управления OCombo
- В конструктор OTabular добавлен параметр ts_captions, позволяющий задать индивидуальную настроку колонок табчасти
- Исправлена ошибка OTabular при работе с булевыми типами дополнительных реквизитов
- Внешние метаданные, указанные в конструкторе OTabular, теперь транслируются в элементы OCombo при редактировании строки
- При добавлении строк компонентом OTabular с наложенным отбором, новая строка заполняется по умолчанию значениями отбора
- В атрибуты form_list и form_selection добавлена обработка свойства smart_rendering, переключающего режим работы grid (пагинация или динамическая загрузка)
- В job_prm добавлен параметр noreplicate для баз pouchdb
- Добавлена возможность создавать несколько экземпляров MetaEngine в контексте одного веб-приложения (для одновременной работы с несколькими базами данных)
- Код взаимодействия metadata.js с хранилишем данных в браузере и внешними источниками данных, решено отделить от ядра и перенести в плагины
- Реализованы бета-версии плагинов:
- metadata-abstract-adapter - виртуальный класс для адаптеров данных
- metadata-pouchdb - адаптер для взаимодействия с pouchdb
- metadata-redux - генераторы и обработчики событий в терминах redux
Ядро и плагины - невизуальные. UI для v2 пока отсутствует
Пример инициализации для приложения react с адаптером pouchdb:
import MetaEngine from 'metadata-core'
import metadata_pouchdb from 'metadata-pouchdb'
import metadata_redux from 'metadata-redux'
MetaEngine
.plugin(metadata_pouchdb) // подключаем pouchdb-адаптер к прототипу metadata.js
.plugin(metadata_redux) // подключаем свойства redux к прототипу metadata.js
const $p = new MetaEngine()
Вариант без react и pouchdb (например, angular с прямым подключением к 1С):
import MetaEngine from 'metadata-core'
import metadata_1с from 'metadata-1с'
MetaEngine
.plugin(metadata_1с) // подключаем адаптер 1С к прототипу metadata.js
const $p = new MetaEngine()
- Для metadata v2, реализован механизм плагинов
- Реализована структура плагина metadata-redux для подключения metadata-core в приложениях react-redux
- Для управления multipackage-repo задействавана библиотека lerna
- Реализовано управление html-кешем средствами serviseWorker
- Лицензия AGPL изменена на MIT
- Метод russian_names удалён из прототипа Messages
- Версия pouchdb изменена с 6.0 на 5.4 - downgrade из-за проблем с установкой leveldown под windows
- Собран пререлиз metadata-core v2.0.0-beta.1
- В параметры конструктора OCombo добавлено поле hide_frm, скрывающее формы объекта и выбора в командах выпадающего списка
- Исправлена ошибка фильтрации списка OCombo
- Метод DataManager.form_selection() теперь возвращает Promise, если для подготовки данных формы используются асинхронные вызовы
- В автоформах списка поддержан sql фильтр in(...)
- В прототип CatUsers_acl добавлен метод get_acl(class_name), возвращающий права доступа по имени класса
- Оптимизирован код контроля прав доступа в формах и элементах управления
- Реализовано оперативное обновление загруженных в ОЗУ объектов с типом кеширования doc по событию pouch_change
- В автоформы списка документов добавлена сортировка по дате с использованием индекса doc/by_date
- Для определения mime-типов вложений, задействована база mime-db
- Исправлены ошибки при работе с присоединенными файлами в формах объектов. Теперь, кроме программного, поддержан интерактивный интерфейс для добавления-удаления вложений к любым ссылочным объектам
- Метод new_number_doc перенесен из прототипа DocObj в DataObj и теперь доступен для всех объектов данных
- В заголовок формы DocObj добавлена информация о преведенности документа
- Исправлена ошибка отображения заголовка формы объекта в разбивке карусель
- Исправлена ошибка в обработчике события onrotate мобильного устройства
- Компонент dhtmlxTree удалён из сборки dhtmlx
- Вызовы dhtmlxTree в автоформах заменены вызовами dhtmlxTreeView
- Добавлен визуальный компонент Setting2col - типовая страница настроек программы
- Добавлен визуальный компонент All_meta_objs - типовая страница "все объекты" - похожа на подменю "все функции" тонкого клиента 1С с возможностью наложить фильтр на список типов объектов
- В коллекцию виджетов добавлен компонент OBtnAuthSync
- Вместо динамического создания конструкторов объектов и менеджеров
new Function(text)
при старте приложения, реализован gulp-плагин, формирующий prebuild.js файл на этапе сборки проекта. Это решает сразу несколько проблем:- Повышается наглядность и удобочитаемость кода
- Появляется autocomplit в IDE по классам и реквизитам объектов данных
- Исключается возможность конфликта версий метаданных
- При разработке модификаторов, появляется возможность явно ссылаться на конструкторы объектов данных
- Отпадает необходимость в перезагрузке страницы при первом старте или после сброса данных
- Сокращается время загрузки страницы (выигрыш 0.1-0.2 сек)
- В класс DataProcessorsManager добавлен новый метод form_rep - форма отчета
- Для визуализации и редактирования диапазона дат реализован компонент ODateRangePicker на базе daterangepicker
- Для форматирования дат и диапазонов, задействована библиотека moment
- Вспомогательные методы MetaEngine объединены в отдельный класс Utils
- В панели инструментов OTooolBar добавлена возможность указать индивидуальные css стили для каждой кнопки. Ранее, стили устанавливались на панель в целом
- Оптимизирован код поля со списком ссылочного типа OCombo
- В элемент управления OTabular добавлены команды клавиатурной навигации
- Исправлена ошибка поля со списком OCombo, при которой в связанном объекте оставались активные обсерверы после выгрузки из памяти элемента управления
- Обновлено и опубликовано описание API metadata.js
- Метод attache_event в прототипе DataManager переименован в on
- Для метода $p.eve.attache_event, добавлен синоним $p.on
- Изменены процедуры инициализации. Вместо вызова статических обработчиков, задействованы подписки на события $p.on
- Исправлена ошибка при записи регистра сведений с дубликатом ключа
- В структуру метаданных реквизита добавлено поле mandatory - проверка заполнения
- Числовое поле ввода с калькулятором адаптировано для мобильных устройств
- Метод all() удалён из прототипа RefDataManager
- Все методы RefDataManager перенесены из конструктора в прототип
- Добавлен универсальный контроль обязательных реквизитов при записи DataObj. Ранее, заполненность реквизитов контролировалась только пользовательскими подписками на событие перед записью
- При получении данных динамическим списком, добавлена поддержка startkey и endkey. Например, для фильтрации диапазона дат по ключу, а не фильтром javascript
- В прототип $p.current_acl добавлен метод role_available(name) проверяющий доступность роли name для текущего пользователя
- Объект current_acl дополнен разрешениями пользователя на чтение, запись, просмотр и изменение для каждого объекта метаданных
- Права пользователей учтены в формах объектов и списков
- Реализован абстрактный регистр накопления, как map/reduce индекс CouchDB
- Механизм репликации с CouchDB дополнен фильтрами, реализующими ограничения на уровне записей в соответствии с правами пользователя
- В комплект поставки включен исходный код библиотеки интеграции с 1С
- Реализованы автоформы регистров сведений и наклпления. Ранее, автоформы генерировались только для объектов ссылочных типов
- В прототип DataManager добавлены подписки на события при добавлении и при удалении строк табличных частей
- В прототип DataManager добавлен метод pouch_load_view, позволяющий загрузить в ОЗУ массив объектов, обрезанный view
- !important Геттеры и Сеттеры полей и табличных частей DataObj сделаны переопределяемыми (в конструкторе defineProperty свойство configurable установлено в true). Теперь, еще больше свободы в определении и переопределении поведения объектов данных со стороны приложения
- Исправлена ошибка при выгрузке из памяти незаписанного DataObj
- Для объектов данных реализовано свойство Модифицированность
- В формах объектов при закрытии реализован анализ свойства Модифицированность, вопрос о записи или отмене сделанных изменений
- Исправлена ошибка потери модальности при открытии вложенных форм объектов и списков
- Исправлена ошибка сброса признака Модифицированность при записи в PouchDB
- В параметры работы программы добавлено свойство keep_hash, задающее режим открытия вложенных форм - через глобальное изменение hash url или модальное открытие без регистрации в history
- В ядро интегрирована библиотека Aes для шифрования и дешифрования данных
- Реализованы отборы по массиву значений типа перечисление для свойства метаданных ПараметрыПыбора. Ранее, перечисления фильровались только по подстроке синонима
- В формах списка и выбора grid.reload теперь возвращает промис
- В прототипы DataObj и TabularSection добавлен метод
_silent
, отключающий нотификацию об изменениях объекта - Реализована синхронизация с 1С и CouchDB объектов с составным ключом: таких, как Регистр сведений и Регистр накопления. Ранее, прозрачная синхронизация поддерживалась только для объектов ссылочного типа
- Исправлена ошибка компонента OHeadFields при работе с табличными частями допреквизитов с включенным отбором строк
- Изменена стркутура журнала регистрации для совместимости с новым форматом RegisterRow
- Добавлена возможность отложенной инициализации геокодера Google для ускорения загрузки
- Добавлен класс SpreadsheetDocument (аналог табличного документа в 1С) и методы формирования печатных форм на стороне клиента, в том числе, в автономном режиме. Ранее, отчеты и печатные формы можно было сформировать только на сервере средставми платформы 1С
- В прототип Number добавлен метод in_words, формирующий сумму прописью rubles.js
- В формы списков добавлена поддержка иерархических справочников, кешируемых в базе doc PouchDB. Ранее, формы иерархических списков могли работать только с объектами, кешируемыми в ОЗУ или на севрере
- Самописный движок репликации заменён библиотекой PouchDB - промышленный стандарт CRDT
- Основным серверным движком данных теперь является не информационная база 1С с опубликованными веб-сервисами, а NoSQL база CouchDB. Прямое обращение к ресурсам 1С сохранено для совместимости
- Свойство lc_changed удалено из прототипа DataObj
- Удалены устаревшие обработчики событий AppCache
- В метаданных регистров сведений, бухгалтерии и накопления поддержано семейство Реквизиты
- Код, проверяющий, удовлетворяет ли объект условию selection, вынесен в публичный метод _$p.selection()
- В прототипе DataManager реализованы методы загрузки и фильтрации данных, хранящихся в локальной PouchDB
- Для документов, кешируемых в PouchDB, реализовн обработчик установки нового номера
- В элементах управления OTabular и OHeadFields добавлена поддержка событий клавиатуры {Ins} и {Del}
- В классе DataObj реализованы методы extra_fields и extra_properties для получения списка дополнительных реквизитов и сведений объекта, заданных в справочнике НаборыДополнительныхРеквизитовИСведений
- Изменён способ хранения информации об именах предопределенных элементов для совместимости с базами 1С - ссылочным типам добавлено свойство ИмяПредопределенныхДанных
- В прототипах DataObj и DataManager реализованы методы для работы с вложениями и присоединенными файлами PouchDB
- В классе Toolbar_filter поддержано добавление пользовательских отборов и связанных с ними элементов управления
- В динамических списках реализована поддержка индексов design_doc/view PouchDB
- Состав метаданных дополнен объектом Роль, что позволит реализовать стандартные, на уровне ядра, механизмы уарвления видимостью и доступностью элементов управления и записей базы данных
- Оптимизирована работа с составными типами Ссылка + Строка + Число
- Реализован метод Свернуть для класса TabularSection
- Реализован метод Сортировать для класса TabularSection
- Реализован метод aggregate для класса TabularSection, вычисляющий произвольную агрегатную функцию по колонкам табличной части
- Добавлена поддержка классов данных Бизнес процесс и Задача
- Библиотека dhtmlx обновлена до версии 4.6
- Служебные графические файлы dhtmlx заменены base64-строками и включены в css и js
- Изменена структура каталогов проекта для совместимости с cdn.jsdelivr.net
- Реализована возможность указать в метаданных объекта специальные url, которые будут использованы для получения данных через irest
- Новый метод менеджера ссылочных типов load_cached_server_array - догружает с сервера объекты, которых нет в локальном кеше
- Иконки на кнопках типовых форм заменены с png на шрифтовые fonticon
- Унифицирована математика для работы с присоединенными файлами БСП
- Сборщик проекта заменён с LMD на Gulp
- Методы, используемые сервером metadata (postgres + nodejs), вынесены в отдельный модуль
- Дерево ODynTree теперь может содержать не только папки, но и входящие в эти папки элементы
- Поддержана возможность переключения скинов (тем оформления)
- Новый визуальный компонент - ODropdownList - гиперссылка с выпадающим списком
- Задействован иконошрифт fontawesome
- Сторонние библиотеки теперь загружаются из cdn.jsdelivr.net, а не с нашего сервера
- Metadata.js опубликована в cdn и доступна по адресу //cdn.jsdelivr.net/metadata/latest/metadata.min.js
- Пример подключения ServiceWorker для тонкого управления кешированием
- Добавлен журнал регистрации системных и пользовательских событий
- Дерево динамического списка оформлено в виде компонента (раньше был плоский код в автоформе)
- Библиотека dhtmlx обновлена до v4.5 - задействовано gpl-ядро + модификаторы и расширения
- Новое свойство device_type (phone, tablet, desktop) и событие on_rotate
- Новый визуальный компонент - DynDataView
- Добавлен midi beeper для звукового сопровождения сканирования (пример в безбумажке)
- Дополнены методы WSQL для работы с indexedDB
- Реализована запись оффлайн и синхронизация с 1С для регистратора штрихкодов (пример в безбумажке)
- Драйвер клавиатурного сканера оформлен в виде компонента (раньше был плоский код в модуле безбумажки)
- Добавлены префиксы локального хранилища. Нужны, когда несколько сйтов крутятся на одном домене и отличаются только папками
- Новое событие on_grid_inited в автоформе списка и выбора
- Новый тип поля грида - pwd для ввода паролей
- Пример фоновой синхронизации в отдельном потоке (WebWorker в безбумажке)
- Обновлена документация по API