# v0.12.231

### 08.06.2017
- Маска /<!---/g в html шаблона отчета

### 06.06.2017
- Поддержка типа кеширования _doc_ram_ для регистров сведений

### 01.06.2017
- Проверка типа при фильтрации по подстроке

### 29.05.2017
- _couch_direct = true_ по умолчанию
- Доппроверки в OTabular

### 27.05.2017
- Для иерархических объектов данных, добавлены методы _children и _hierarchy

### 20.05.2017
- Удалена информация о часовом поясе при сериализации дат

### 18.05.2017
- Управление acl правами пользователей перенесено из отдельного справочника _users_acl_ в общий справочник _users_

### 15.05.2017
- Исправлена ошибка в методе $p.iface.check_exit()
- Улучшено поведение поля ввода _OCombo_ - выбор значения при потере фокуса

### 13.05.2017
- Добавлен метод _$p.utils.docxtemplater(blob)_, подключающий библиотеку https://github.com/open-xml-templating/docxtemplater

### 01.05.2017
- Метод _bases()_ в _Meta_ и _pouch.remote_, тип кеширования _remote_ в _sync_grid_
- _class_name_ при записи объекта в _pouch.save_obj_

### 29.04.2017
- google maps api key to IPInfo
- Форма ввода адреса удалена из основной поставки и выделена в отдельный компонент

### 27.04.2017
- Новый тип кеширования _doc_ram_
- В методе $p.record_log поддержано логирование ошибок из свойства _data._err

### 23.04.2017
- Свойство _obj в классе OTabular
- Добавлен контроль типа _mgr в методе value_mgr()

### 30.03.2017
- Клавиатурная навигация в OTabular теперь генерирует событие onRowSelect

### 27.03.2017
- В метод _clone прототипа Object добавлен параметр _exclude_
- В методе _find_rows _top по умолчанию увеличен с 300 до 1000

### 25.03.2017
- Метод clear_svgs удалён из класса InterfaceObjs 

### 22.03.2017
- Исправлена ошибка в _move_row класса OTabular
- Метод open_selection в OCombo и eXcell_ocombo

### 20.03.2017
- Исправлены ошибки в OCombo и OHead_fields

# v0.12.226

### 18.03.2017
- В прототип _CatObj_ добавлен метод _in_hierarchy_

### 06.03.2017
- Дополнена структура scheme_settings
- Добавлен метод _query_value_ - диалог ввода значения
- Добавлена возможность изменять порядок строк в _OTabular_

### 05.03.2017
- Расширена функциональность _SpreadsheetDocument_ - добавлены методы _append_ и _print_

### 05.03.2017
- _daterangepicker_ исключен из metadata.js. Если он нужен в клиентском приложении, его следует загрузить отдельным скриптом

### 03.03.2017
- Общий код _scheme_settings_ v0.12 и v2.0
- Исправлена ошибка редактирования булевых типов в _OTabular_

### 21.02.2017
- В элемент управления _OTabular_ добавлен фильтр по подстроке

### 12.02.2017
- В элемент управления _OTabular_ добавлена возможность сортировки по одному или нескольким полям

### 10.02.2017
- Реализован режим _couchdb_direct_ без кеширования данных в indexeddb браузера

### 16.12.2016
- В отборе по связям параметров выбора добавлена проверка владельца для подчиненных справочников

### 10.12.2016
- Доработан алгоритм перезагрузки страницы при обновлении метаданных

# v0.12.225

### 03.12.2016
- Методы подготовки системных метаданных (журнал регистрации, системные перечисления, настройки отчетов и динсписков) удалены из 1С и перемещены в конструктор _Meta_

### 02.12.2016
- Подключаемый обработчик нажатия кнопок панели инструментов формы _wnd_selection_
- В атрибутах метода _Pouch.save_obj_ учтено значение _db_, что позволяет сохранить текущий объект в другой базе. Например, зарегистрировать изменения объекта с типом кеширования _ram_ на сервере
- Исправлена ошибка при выборе составного типа в элементе управления _OCombo_

### 21.11.2016
- В конструктор _OTabular_ добавлен параметр _ts_captions_, позволяющий задать индивидуальную настроку колонок табчасти
- Исправлена ошибка _OTabular_ при работе с булевыми типами дополнительных реквизитов
- Внешние метаданные, указанные в конструкторе _OTabular_, теперь транслируются в элементы _OCombo_ при редактировании строки

### 14.11.2016
- При добавлении строк компонентом _OTabular_ с наложенным отбором, новая строка заполняется по умолчанию значениями отбора 

### 05.11.2016
- В атрибуты _form_list_ и _form_selection_ добавлена обработка свойства _smart_rendering_, переключающего режим работы _grid_ (пагинация или динамическая загрузка)

### 30.09.2016
- В _job_prm_ добавлен параметр _noreplicate_ для баз _pouchdb_

# v0.11.221

### 16.09.2016
- Добавлена возможность создавать несколько экземпляров _MetaEngine_ в контексте одного веб-приложения (для одновременной работы с несколькими базами данных)
- Код взаимодействия metadata.js с хранилишем данных в браузере и внешними источниками данных, решено отделить от ядра и перенести в плагины 
- Реализованы бета-версии плагинов:
  + _metadata-abstract-adapter_ - виртуальный класс для адаптеров данных
  + _metadata-pouchdb_ - адаптер для взаимодействия с pouchdb
  + _metadata-redux_ - генераторы и обработчики событий в терминах redux

Ядро и плагины - невизуальные. UI для v2 пока отсутствует

Пример инициализации для приложения react с адаптером pouchdb:
```javascript
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С):
```javascript
import MetaEngine from 'metadata-core'
import metadata_1с from 'metadata-1с'
MetaEngine
  .plugin(metadata_1с) // подключаем адаптер 1С к прототипу metadata.js
const $p = new MetaEngine()
```

### 15.09.2016
- Для metadata v2, реализован механизм плагинов
- Реализована структура плагина _metadata-redux_ для подключения _metadata-core_ в приложениях _react-redux_

### 14.09.2016
- Для управления multipackage-repo задействавана библиотека [lerna](https://github.com/lerna/lerna)

# v0.11.220

### 09.09.2016
- Реализовано управление html-кешем средствами _serviseWorker_

### 13.09.2016
- Лицензия AGPL изменена на MIT
- Метод _russian_names_ удалён из прототипа _Messages_
- Версия pouchdb изменена с 6.0 на 5.4 - downgrade из-за проблем с установкой [leveldown под windows](https://github.com/level/levelup/issues/5)
- Собран пререлиз metadata-core v2.0.0-beta.1

# v0.11.219

### 19.08.2016
- В параметры конструктора _OCombo_ добавлено поле _hide_frm_, скрывающее формы объекта и выбора в командах выпадающего списка
- Исправлена ошибка фильтрации списка _OCombo_

### 21.08.2016
- Метод _DataManager.form_selection()_ теперь возвращает _Promise_, если для подготовки данных формы используются асинхронные вызовы
- В автоформах списка поддержан sql фильтр _in(...)_

### 23.08.2016
- В прототип _CatUsers_acl_ добавлен метод _get_acl(class_name)_, возвращающий права доступа по имени класса
- Оптимизирован код контроля прав доступа в формах и элементах управления

### 26.08.2016
- Реализовано оперативное обновление загруженных в ОЗУ объектов с типом кеширования _doc_ по событию _pouch_change_

# v0.11.218

### 12.08.2016
- В автоформы списка документов добавлена сортировка по дате с использованием индекса _doc/by_date_

### 13.08.2016
- Для определения mime-типов вложений, задействована база [mime-db](https://github.com/jshttp/mime-db)
- Исправлены ошибки при работе с присоединенными файлами в формах объектов. Теперь, кроме программного, поддержан интерактивный интерфейс для добавления-удаления вложений к любым ссылочным объектам
- Метод _new_number_doc_ перенесен из прототипа _DocObj_ в _DataObj_ и теперь доступен для всех объектов данных

# v0.11.217

### 08.08.2016
- В заголовок формы _DocObj_ добавлена информация о преведенности документа
- Исправлена ошибка отображения заголовка формы объекта в разбивке _карусель_
- Исправлена ошибка в обработчике события _onrotate_ мобильного устройства

# v0.11.216

### 05.08.2016
- Компонент _dhtmlxTree_ удалён из сборки dhtmlx
- Вызовы _dhtmlxTree_ в автоформах заменены вызовами _dhtmlxTreeView_

### 06.08.2016
- Добавлен визуальный компонент _Setting2col_ - типовая страница настроек программы
- Добавлен визуальный компонент _All_meta_objs_ - типовая страница "все объекты" - похожа на подменю "все функции" тонкого клиента 1С с возможностью наложить фильтр на список типов объектов

# v0.11.215

## Мажорное обновление, существенные изменения API

### 24.07.2016
- В коллекцию виджетов добавлен компонент _OBtnAuthSync_

### 26.07.2016
- Вместо динамического создания конструкторов объектов и менеджеров `new Function(text)` при старте приложения, реализован gulp-плагин, формирующий prebuild.js файл на этапе сборки проекта. Это решает сразу несколько проблем:
  + Повышается наглядность и удобочитаемость кода
  + Появляется autocomplit в IDE по классам и реквизитам объектов данных
  + Исключается возможность конфликта версий метаданных
  + При разработке модификаторов, появляется возможность явно ссылаться на конструкторы объектов данных
  + Отпадает необходимость в перезагрузке страницы при первом старте или после сброса данных  
  + Сокращается время загрузки страницы (выигрыш 0.1-0.2 сек)
  
### 03.08.2016
- В класс _DataProcessorsManager_ добавлен новый метод _form_rep_ - форма отчета
- Для визуализации и редактирования диапазона дат реализован компонент _ODateRangePicker_ на базе [daterangepicker](http://www.daterangepicker.com/)

# v0.11.214

### 20.07.2016
- Для форматирования дат и диапазонов, задействована библиотека [moment](http://momentjs.com/)

### 21.07.2016
- Вспомогательные методы _MetaEngine_ объединены в отдельный класс _Utils_

# v0.10.213

### 26.06.2016
- В панели инструментов _OTooolBar_ добавлена возможность указать индивидуальные css стили для каждой кнопки. Ранее, стили устанавливались на панель в целом

### 30.06.2016
- Оптимизирован код поля со списком ссылочного типа _OCombo_

### 01.07.2016
- В элемент управления _OTabular_ добавлены команды [клавиатурной навигации](https://github.com/oknosoft/windowbuilder/wiki/%D0%9A%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D0%BD%D0%B0%D1%8F-%D0%BD%D0%B0%D0%B2%D0%B8%D0%B3%D0%B0%D1%86%D0%B8%D1%8F-%D0%B2-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0%D1%85)
- Исправлена ошибка поля со списком _OCombo_, при которой в связанном объекте оставались активные обсерверы после выгрузки из памяти элемента управления

### 11.07.2016
- Обновлено и опубликовано описание [API metadata.js](http://www.oknosoft.ru/upzp/apidocs/classes/MetaEngine.html)

### 15.07.2016
- Метод _attache_event_ в прототипе _DataManager_ переименован в _on_
- Для метода _$p.eve.attache_event_, добавлен синоним _$p.on_
- Изменены процедуры инициализации. Вместо вызова статических обработчиков, задействованы подписки на события _$p.on_

### 16.07.2016
- Исправлена ошибка при записи регистра сведений с дубликатом ключа

# v0.10.212

### 22.05.2016
- В структуру метаданных реквизита добавлено поле _mandatory_ - проверка заполнения

### 25.05.2016
- Числовое поле ввода с калькулятором адаптировано для мобильных устройств

### 28.05.2016
- Метод _all()_ удалён из прототипа _RefDataManager_
- Все методы _RefDataManager_ перенесены из конструктора в прототип
- Добавлен универсальный контроль обязательных реквизитов при записи _DataObj_. Ранее, заполненность реквизитов контролировалась только пользовательскими подписками на событие _перед записью_
- При получении данных динамическим списком, добавлена поддержка _startkey_ и _endkey_. Например, для фильтрации диапазона дат по ключу, а не фильтром javascript
 
### 23.06.2016
- В прототип _$p.current_acl_ добавлен метод _role_available(name)_ проверяющий доступность роли _name_ для текущего пользователя

### 24.06.2016
- Объект _current_acl_ дополнен разрешениями пользователя на чтение, запись, просмотр и изменение для каждого объекта метаданных
- Права пользователей учтены в формах объектов и списков
- Реализован абстрактный регистр накопления, как map/reduce индекс CouchDB
- Механизм репликации с CouchDB дополнен фильтрами, реализующими ограничения на уровне записей в соответствии с правами пользователя

### 25.06.2016
- В комплект поставки включен исходный код [библиотеки интеграции с 1С](integration_1c)

# v0.10.211

### 04.05.2016
- Реализованы автоформы регистров сведений и наклпления. Ранее, автоформы генерировались только для объектов ссылочных типов

### 09.05.2016
- В прототип _DataManager_ добавлены подписки на события при добавлении и при удалении строк табличных частей

### 12.05.2016
- В прототип _DataManager_ добавлен метод _pouch_load_view_, позволяющий загрузить в ОЗУ массив объектов, обрезанный _view_

### 13.05.2016
- **!important** Геттеры и Сеттеры полей и табличных частей _DataObj_ сделаны переопределяемыми (в конструкторе _defineProperty_ свойство _configurable_ установлено в _true_). Теперь, еще больше свободы в определении и переопределении поведения объектов данных со стороны приложения

# v0.10.210

### 25.04.2016
- Исправлена ошибка при выгрузке из памяти незаписанного _DataObj_

# v0.10.209

### 29.03.2016
- Для объектов данных реализовано свойство _Модифицированность_

### 31.03.2016
- В формах объектов при закрытии реализован анализ свойства _Модифицированность_, вопрос о записи или отмене сделанных изменений

### 05.04.2016
- Исправлена ошибка потери модальности при открытии вложенных форм объектов и списков
- Исправлена ошибка сброса признака _Модифицированность_ при записи в PouchDB
- В параметры работы программы добавлено свойство keep_hash, задающее режим открытия вложенных форм - через глобальное изменение hash url или модальное открытие без регистрации в history

### 07.04.2016
- В ядро интегрирована библиотека [Aes](http://www.movable-type.co.uk/scripts/aes.html) для шифрования и дешифрования данных
- Реализованы отборы по массиву значений типа перечисление для свойства метаданных _ПараметрыПыбора_. Ранее, перечисления фильровались только по подстроке синонима
- В формах списка и выбора grid.reload теперь возвращает промис 

### 13.04.2016
- В прототипы _DataObj_ и _TabularSection_ добавлен метод `_silent`, отключающий нотификацию об изменениях объекта
- Реализована синхронизация с 1С и CouchDB объектов с составным ключом: таких, как _Регистр сведений_ и _Регистр накопления_. Ранее, прозрачная синхронизация поддерживалась только для объектов ссылочного типа

### 14.04.2016
- Исправлена ошибка компонента OHeadFields при работе с табличными частями допреквизитов с включенным отбором строк

### 15.04.2016
- Изменена стркутура журнала регистрации для совместимости с новым форматом _RegisterRow_

### 16.04.2016
- Добавлена возможность отложенной инициализации геокодера Google для ускорения загрузки

### 17.04.2016
- Добавлен класс _SpreadsheetDocument_ (аналог табличного документа в 1С) и методы формирования печатных форм на стороне клиента, в том числе, в автономном режиме. Ранее, отчеты и печатные формы можно было сформировать только на сервере средставми платформы 1С

### 18.04.2016
- В прототип _Number_ добавлен метод _in_words_, формирующий сумму прописью [rubles.js](https://github.com/meritt/rubles)
- В формы списков добавлена поддержка иерархических справочников, кешируемых в базе _doc_ PouchDB. Ранее, формы иерархических списков могли работать только с объектами, кешируемыми в ОЗУ или на севрере

# v0.10.208

## Мажорное обновление, существенные изменения API

### 18.02.2016
- Самописный движок репликации заменён библиотекой [PouchDB](//pouchdb.com/) - промышленный стандарт CRDT
- Основным серверным движком данных теперь является не информационная база 1С с опубликованными веб-сервисами, а NoSQL база [CouchDB](http://couchdb.apache.org/). Прямое обращение к ресурсам 1С сохранено для совместимости

### 20.02.2016
- Свойство _lc_changed_ удалено из прототипа _DataObj_
- Удалены устаревшие обработчики событий _AppCache_

### 26.02.2016
- В метаданных регистров сведений, бухгалтерии и накопления поддержано семейство _Реквизиты_
- Код, проверяющий, удовлетворяет ли объект условию _selection_, вынесен в публичный метод _$p._selection()_
- В прототипе _DataManager_ реализованы методы загрузки и фильтрации данных, хранящихся в локальной PouchDB

### 16.03.2016
- Для документов, кешируемых в PouchDB, реализовн обработчик установки нового номера

### 18.03.2016
- В элементах управления _OTabular_ и _OHeadFields_ добавлена поддержка событий клавиатуры {Ins} и {Del}
 
### 19.03.2016
- В классе _DataObj_ реализованы методы _extra_fields_ и _extra_properties_ для получения списка дополнительных реквизитов и сведений объекта, заданных в справочнике _НаборыДополнительныхРеквизитовИСведений_
- Изменён способ хранения информации об именах предопределенных элементов для совместимости с базами 1С - ссылочным типам добавлено свойство _ИмяПредопределенныхДанных_

### 23.03.2016
- В прототипах _DataObj_ и _DataManager_ реализованы методы для работы с вложениями и присоединенными файлами PouchDB
- В классе _Toolbar_filter_ поддержано добавление пользовательских отборов и связанных с ними элементов управления

### 25.03.2016
- В динамических списках реализована поддержка индексов _design_doc/view_ PouchDB

### 26.03.2016
- Состав метаданных дополнен объектом _Роль_, что позволит реализовать стандартные, на уровне ядра, механизмы уарвления видимостью и доступностью элементов управления и записей базы данных

# v0.9.207

### 10.02.2016
- Оптимизирована работа с составными типами _Ссылка_ + _Строка_ + _Число_

### 11.02.2016
- Реализован метод _Свернуть_ для класса _TabularSection_

### 13.02.2016
- Реализован метод _Сортировать_ для класса _TabularSection_

### 14.02.2016
- Реализован метод _aggregate_ для класса _TabularSection_, вычисляющий произвольную агрегатную функцию по колонкам табличной части

# v0.9.206

### 27.01.2016
- Добавлена поддержка классов данных _Бизнес процесс_ и _Задача_

# v0.9.204

### 27.12.2015
- Библиотека dhtmlx обновлена до версии 4.6
- Служебные графические файлы dhtmlx заменены base64-строками и включены в css и js

# v0.9.201

### 20.11.2015
- Изменена структура каталогов проекта для совместимости с _cdn.jsdelivr.net_

### 25.11.2015
- Реализована возможность указать в метаданных объекта специальные url, которые будут использованы для получения данных через _irest_

### 26.11.2015
- Новый метод менеджера ссылочных типов _load_cached_server_array_ - догружает с сервера объекты, которых нет в локальном кеше

### 29.11.2015
- Иконки на кнопках типовых форм заменены с _png_ на шрифтовые _fonticon_

### 30.11.2015
- Унифицирована математика для работы с присоединенными файлами БСП

# v0.9.202

### 14.12.2015
- Сборщик проекта заменён с LMD на Gulp

### 16.12.2015
- Методы, используемые сервером metadata (postgres + nodejs), вынесены в отдельный модуль

# v0.9.200

### 06.11.2015
- Дерево _ODynTree_ теперь может содержать не только папки, но и входящие в эти папки элементы

### 10.11.2015
- Поддержана возможность переключения скинов (тем оформления)
 
### 14.11.2015
- Новый визуальный компонент - ODropdownList - гиперссылка с выпадающим списком
- Задействован иконошрифт fontawesome
- Сторонние библиотеки теперь загружаются из cdn.jsdelivr.net, а не с нашего сервера
- Metadata.js опубликована в cdn и доступна по адресу //cdn.jsdelivr.net/metadata/latest/metadata.min.js

# v0.9.199

### 01.10.2015
- Пример подключения ServiceWorker для тонкого управления кешированием
 
### 05.10.2015
- Добавлен журнал регистрации системных и пользовательских событий

### 24.10.2015
- Дерево динамического списка оформлено в виде компонента (раньше был плоский код в автоформе)
- Библиотека dhtmlx обновлена до v4.5 - задействовано gpl-ядро + модификаторы и расширения
- Новое свойство _device_type_ (phone, tablet, desktop) и событие _on_rotate_ 

### 25.10.2015
- Новый визуальный компонент - DynDataView

### 27.10.2015
- Добавлен _midi beeper_ для звукового сопровождения сканирования (пример в безбумажке)
- Дополнены методы WSQL для работы с indexedDB
- Реализована запись оффлайн и синхронизация с 1С для регистратора штрихкодов (пример в безбумажке)
- Драйвер клавиатурного сканера оформлен в виде компонента (раньше был плоский код в модуле безбумажки)

### 28.10.2015
- Добавлены префиксы локального хранилища. Нужны, когда несколько сйтов крутятся на одном домене и отличаются только папками
- Новое событие _on_grid_inited_ в автоформе списка и выбора
- Новый тип поля грида - _pwd_ для ввода паролей

### 30.10.2015
- Пример фоновой синхронизации в отдельном потоке (WebWorker в безбумажке)
- Обновлена документация по API
