0. unpete 539 01.08.16 01:22 Сейчас в теме

Hello world на metadata.js

Про браузерные offline-first приложения можно написать миллионы слов. Сэкономлю своё и ваше время и перейду сразу к делу. В статье не будет рекламы и агитации за новые технологии, не будет критики традиционных или попсовых решений. Рассмотрим по шагам разработку простейшей программы на metadata.js. Постараюсь сделать акцент не на том «как это сделано», а «почему сделано именно так»

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
100. alprk 10.11.16 11:01 Сейчас в теме
А будет ли работать на Node? Есть мысли о том чтобы попробовать использовать на сервере.
101. unpete 539 10.11.16 12:36 Сейчас в теме
(100) alprk,
будет ли работать на Node?
Конечно. Серверный режим поддержан как в стабильной версии v0.11, так и в новой v2. В v2 сделано совсем красиво. metadata-core ничего не знает не только про визуализацию, но и про способ организации данных, обеспечивая только абстрактный слой объектов и менеджеров данных ala1с. За доступ к данным отвечает отдельный адаптер и эти данные физически могут храниться в oracle, postgres, couchdb, 1c, голой файловой системе и т.д. https://www.npmjs.com/package/metadata-pouchdb
102. aeteros 13.11.16 22:29 Сейчас в теме
Добрый день. В демо-примере реализована синхронизация данных с 1С? У меня из веб приложения в couch db данные попали, а в 1С не приходят.
dimax.dm; +1 Ответить
103. unpete 539 14.11.16 09:42 Сейчас в теме
(102) aeteros,
синхронизация данных с 1С
Сбор изменений выполняется в регламентном задании ИнтеграцияСессии. Параметр Sinc в обработке ИнтеграцияПанельАдминистрирования должен быть заполнен > 0. Если регламентные задания отключены, изменения можно загрузить командой Прочитать из CouchDB обработки ИнтеграцияПанельАдминистрирования
104. aeteros 14.11.16 12:03 Сейчас в теме
(103) unpete, Спасибо, разобрался с sinc.
Попробовал добавить в демо - свой справочник и документ, в couch все передалось, проект пересобрал, но вот в chrome открывается первая версия файла index.html(изменил title для проверки). А вот в режиме инкогнито все ок, открывается новая сборка и вижу свой справочник с документом.
Что нужно почистить в chrome чтобы в обычном режиме новую сборку запускал?
106. unpete 539 14.11.16 15:51 Сейчас в теме
(104) aeteros, при любых изменениях файлов *.js, *.css и *.html не забывайте обновлять версию и состав в файле cache.appcache.
Почитайте статьи про appcache. Например, https://habrahabr.ru/company/paysto/blog/254619/ https://habrahabr.ru/post/151815/
Вообще, appcache объявлен устаревшей технологией. Хорошим тоном считается использование вместо него сервисворкеров - надо будет запланировать доработку механизма кеширования в metadata.js в 2017-2018 году.
105. aeteros 14.11.16 12:08 Сейчас в теме
И еще странное поведение с временем документов: в веб приложении время документа при создании "22:05", а в couch db оно записывается как "20:05", в 1С соответственно тоже попадает как "20:05", При создании в 1С и транспорте в couch и веб приложение все ок.
107. unpete 539 14.11.16 15:53 Сейчас в теме
(105) aeteros,
20:05 -- 22:05
Эта задача уже зарегистрирована в issues
108. alprk 15.11.16 12:22 Сейчас в теме
Насколько я понял, вы предлагаете использовать Node.js как View Server, нет ли проблем с его стабильностью? Проект couchjs выглядит заброшенным и автор открещивается от его использования в продакшене.
109. unpete 539 15.11.16 19:24 Сейчас в теме
(108) alprk,
предлагаете использовать Node.js как View Server
Если для вашей задачи это необходимо, в качестве View Server можно использовать Node.js, но это должна быть очень специальная задача. Расскажите, пожалуйста, какой индекс у вас не получается построить стандартными средствами?
110. alprk 17.11.16 17:34 Сейчас в теме
(109) unpete,
я видимо просто неверно понял это:
Возможность подключить внешний низкоуровневый движок обработки запросов и построения индексов. Например, скрипт на NodeJS.
Прочтите последний пункт еще раз: Metadata использует для хранения данных CouchDB, которая, в свою очередь, может использовать метадату для низкоуровневого построения индексов и агрегатов!!!

я представил себе map функцию на Node, которая использует npm-модуль metadata
111. unpete 539 17.11.16 19:48 Сейчас в теме
(110) alprk,
map функцию на Node, которая использует npm-модуль metadata
Такая возможность, действительно, есть, но в текущих проектах для построения индексов хватало встроенного в couchdb движка.
112. unpete 539 17.11.16 19:52 Сейчас в теме
(110) alprk, Для расширения возможностей couchdb, к ней можно подключиться с любой стороны:
  • Можно сзади, реализовав view server
  • Можно спереди, поставив прокси Node+metadata с бизнес-логикой
113. Region102 17.11.16 21:07 Сейчас в теме
Подскажите, а как можно проверить какую нагрузку выдержит http сервис 1с, т.е. не как у вас через couchdb, а напрямую. Просто есть проект в процессе типа fresh, т.е. одна база 1С а с ней работаю +100500 пользователей с мобильных приложений синхронизируя данные через http сервис, данных в принципе немного максимум каждый пользователь хранит 200-300 килобайт в базе, разворачивается все в AZURE т.е. нагрузка легко масштабируется, но как проверить реальное количество запросов которое выдержит http сервис 1С я не знаю. Если не получится напрямую, придется плотно изучить вашу разработку.
114. unpete 539 18.11.16 07:55 Сейчас в теме
(113) Region102,
какую нагрузку выдержит http сервис 1с, т.е. не как у вас через couchdb, а напрямую
Первое, что приходит в голову - написать скрипт, создающий 10-20 соединений и эмулирующий нагрузку от 10-20 пользователей. Далее, размещаем этот скрипт на некой веб-странице и открываем эту страницу на 100-200 устройствах - эффект будет как от нескольких тысяч реальных пользователей.
116. dimax.dm 09.12.16 15:25 Сейчас в теме
Решение просто гениальное!!! И что важно уже есть готовые примеры :)

Вопросы:
1. Установил HelloWorld. Изменения в 1С в легкого клиента попадают, а наоборот - нет.
Пробовал файловую и серверную версию базы 1С. Регламентное задание срабатывает.
В чем может быть причина что изменения с сайта не попадают в 1С?

2. Использование CouchDB и metadata.js для поставщика данных на несколько интернет магазинов как лучше реализовать? Возможно в этом случае лучше запускать metadata.js на сервере в node.js?

3. Данную связка для создания публично доступного api с авторизацией как лучше применить. Насколько понимаю в этом случае нужен сверху дополнительный слой на сервере который работает над metadata.js. Как видите это решение?

4. Насколько понимаю клиентское приложение на JS ходит за данными в http api cauchDB через интернет. Этот обмен шифруется?

5. В случае установки Nginx файлы, в частности картинки, которые хранятся в базе 1С будут кэшироваться?
117. unpete 539 09.12.16 19:28 Сейчас в теме
(116)
Регламентное задание срабатывает. В чем может быть причина что изменения с сайта не попадают в 1С
Код загрузки из couchdb можно пройти в конфигураторе по шагам. Регламентные задания запускать не обязательно - в обработке администрирования интеграции есть кнопка. Скорее всего, значение параметр since = 0. Укажите в поле since номер изменения, начиная с которого требуется прочитать данные. Далее, при каждом цикле обмена, значение будет увеличиваться автоматически

Использование CouchDB и metadata.js для поставщика данных на несколько интернет магазинов как лучше реализовать? Возможно в этом случае лучше запускать metadata.js на сервере в node.js
Есть разные сценарии. Metadata.js на сервере может пригодиться для построения сложных индексов или серверного рендеринга. В большинстве случаев, хватает возможностей metadata в браузере.

Данную связка для создания публично доступного api с авторизацией как лучше применить
Есть положительный опыт использования superlogin - со временем оформлю, как стандартный компонент для metadata v2

клиентское приложение на JS ходит за данными в http api cauchDB через интернет. Этот обмен шифруется?
Да

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

PS:
Вопросы лучше регистрировать в issues
Продублировал данный ответ в github

PPS:
Если намерения серьезные, готов поучаствовать в совместном проекте
118. support 4456 09.12.16 19:40 Сейчас в теме
(117) Если здесь будут задавать вопросы, то внимания будет больше )
119. user659693_newlife2 22.12.16 12:39 Сейчас в теме
Добрый день! Поставил на сервер ваше приложение hello world. Всё работает. Хочу на базе него собрать приложение под наши нужны. Возникла проблема, не могу отключить окно авторизации. В файле default_settings.js убираю modal_dialog в false
			$p.iface.frm_auth({
				modal_dialog: false,
				try_auto: $p.wsql.get_user_param("zone") == $p.job_prm.zone_demo &&             $p.wsql.get_user_param("enable_save_pwd")
			});

но приложение умирает с ошибкой:
momentjs@2.14,alasql@0.3,pouchdb@6.0,jquery@2.2,metadata@0.11.220(dhtmlx.min.js+metadata.min.js):581 Uncaught (in promise) TypeError: Cannot read property 'attachForm' of undefined
at InterfaceObjs.$p.iface.frm_auth (https://cdn.jsdelivr.net/g/momentjs@2.14,alasql@0.3,pouchdb@6.0,jquery@2.2,metadata@0.11.220(dhtmlx.min.js+metadata.min.js):581:14020)
Пробовал перенести код из облака к себе и вырезать функцию $p.iface.frm_auth, но без нее данные не подтягиваются.... Надеюсь на помощь!
120. unpete 539 22.12.16 19:32 Сейчас в теме
(119) для отладки вместо momentjs@2.14,alasql@0.3,pouchdb@6.0,jquery@2.2,metadata@0.11.220(dhtmlx.min.js+metadata.min.js) можно указать momentjs@2.14,alasql@0.3,pouchdb@6.0,jquery@2.2,metadata@0.11.220(dhtmlx.min.js+metadata.js)
Смысл этого фрагмента кода: автоматический вход под гостевой записью для гостевой зоны ($p.wsql.get_user_param("zone") == $p.job_prm.zone_demo)
Способов авторизоваться и доставить на клиента начальный снапшот много - всё зависит от вашей задачи.
121. user659693_newlife2 23.12.16 11:06 Сейчас в теме
(120)
Моя задача:
Я встраиваю метадату в портал, это отдельная страница, где дилер будет работать(получать / изменять) документы из 1С. Так как дилер уже авторизовался в Битриксе, авторизация в метадате должна быть скрытой(планируется, что все дилеры будут работать под одной "системной" учёткой гостя ). Как такое сделать? :)
122. unpete 539 23.12.16 15:33 Сейчас в теме
Как такое сделать
В демо-примере helloworld как раз реализован нужный вам сценарий - пройдите по шагам в отладчике браузера процесс инициализации приложения - код снабжен подробными комментариями
123. alprk 11.01.17 10:42 Сейчас в теме
А есть сейчас какое-либо решение с авторизацией доступа к данным? Через RLS, либо как-то еще?
Ведь все пользователи подключаются к CouchDB, используя одну и ту же учетную запись...
124. unpete 539 11.01.17 14:23 Сейчас в теме
(123)
все пользователи подключаются к CouchDB, используя одну и ту же учетную запись
Странная гипотеза.
В стандартном сценарии, пользователи используют индивидуальные учетные записи.
Гостевая запись настроена в демо-примере, но на то он и демо-пример, чтобы к нему могли подключиться анонимусы.
125. alprk 11.01.17 14:35 Сейчас в теме
(124)

В стандартном сценарии, пользователи используют индивидуальные учетные записи.


Извините, упустил это.
126. alprk 11.01.17 14:41 Сейчас в теме
Но все-таки как насчет возможности, например, ограничить менеджера в записи изменений в не закрепленных за ним клиентов: в CouchDB такое можно сделать, скажем, через "validate_doc_update". А PouchDB ведь даст внести изменения и все сломается только при репликации. Хотя конечно можно продублировать код авторизации в коде формы.
Но вот как ограничить возможность просмотра записей вообще не понятно.
127. unpete 539 11.01.17 19:13 Сейчас в теме
(126) У объектов DataObj есть подписки на события - перед записью, при изменении реквизита.
По ограничениям на чтение, сейчас использую фильтрованную репликацию, при которой в браузер попадают только разрешенные текущему пользователю данные.
Запланирована замена фильтрованной репликации индивидуальными базами для групп пользователей на сервере - это повысит надёжность и безопасность.
128. unpete 539 11.01.17 19:20 Сейчас в теме
(126)
продублировать в коде формы
ВАЖНО! не в коде формы, а в js модуле объекта - документа или справочника.
Формы могут быть любыми, в том числе - внешними, написанными на других фреймворках. Metadata отвечает за согласованность и высокоуровневую работу с данными, а не за внешний вид экранных форм.
129. DAlik 12.01.17 09:38 Сейчас в теме
А вы не думали, как сделать возможность гостю пройти регистрацию в легком клиенте?
В виде какой-то формы для отправки запроса на создание учетной записи. Можно сделать обмен со справочником Внешние пользователи без создания пользователя ИБ. Само создание пользователя ИБ и уведомление на почту, можно оставить пока на ручнике администратору.
130. unpete 539 12.01.17 15:36 Сейчас в теме
(129)
регистрацию в легком клиенте
В составе metadata.js есть довольно крутой плагин регистрации и авторизации - кроме стандартной авторизации по паролю, поддержан вход с помощью oAuth2 социальных сетей facebook, google, yandex, vk и т.д.
131. DAlik 12.01.17 16:57 Сейчас в теме
Отлично. Надо попробовать. Останется придумать как вернуть учётку в 1С и связать её с пользователем ИБ.
132. AlexanderKai 14.02.17 13:41 Сейчас в теме
Интересная публикация.
Вы написали, что в CouchDB запись и чтение неблокирующие, как тогда, например, контролировать остатки?
И как я понял - есть синхронизация между базой 1С и CouchDB. Соответственно есть временные задержки и вероятность получения неконсистентного состояния. Как вы это обходите?
133. unpete 539 14.02.17 15:29 Сейчас в теме
(132)
как тогда, например, контролировать остатки
Эта задача не связана собственно с транзакцией записи. У нашего документа есть подписки на события (примерно такие же, как в 1С, например, перед записью). Никто не вправе запретить вам проверить остатки в обработчике этого события.

(132)
вероятность получения неконсистентного состояния
Metadata.js реализует шину данных. Информация в эту шину может поступать из браузеров, из 1С, из неких датчиков или других не 1с учетных систем. О какой неконсистентности речь? 1C - это всего лишь один из способов поместить данные в couchdb или прочитать из оттуда для своих отчетов.
134. AlexanderKai 14.02.17 17:25 Сейчас в теме
То есть metadata изначально разрабатывалась под формирование отчетов?
135. unpete 539 14.02.17 20:56 Сейчас в теме
(134)
разрабатывалась под формирование отчетов?
Нет, сложные отчеты удобнее формировать в 1С. metadata разрабатывалась для offline-first веб приложений.
136. user693175_vishnyamila 14.02.17 23:23 Сейчас в теме
Спасибо, довольно полезная информация!)
137. vlad1976 09.03.17 11:38 Сейчас в теме
У меня почему то работает только в браузере google chrome. во всех других "Ошибка сети или сервера. Запрос отклонен." как найти проблему?
138. unpete 539 09.03.17 15:29 Сейчас в теме
(137) Старая версия v0.12 (та, про которую написана статья), должна работать во всех браузерах, кроме IE.
В новой v2.0, требования к браузеру еще выше - задействован ES6 без транспиляции.
Сообщение "Ошибка сети или сервера. Запрос отклонен.", возникает, когда система не находит couchdb по указанному в параметрах подключения пути.
Проверьте в отладчике, по какому url движок mrtadata пытается найти couchdb. Кроме строки подключения, обратите внимание на префикс баз, зону и суффикс пользователя
139. salamankas 16.03.17 11:12 Сейчас в теме
Коллеги, пытаюсь опробовать рецепты данной статьи, но не могу скачать приложение "Hello world на metadata.js: mdhello.zip". Подскажите где ещё можно скачать ?
140. unpete 539 16.03.17 15:59 Сейчас в теме
(139)
где ещё можно скачать ?
Вся информация есть в github:
- библиотека интеграции https://github.com/oknosoft/metadata.js/tree/master/integration_1c
- helloworld v0.12 https://github.com/oknosoft/helloworld
- helloworld v2.0 https://github.com/oknosoft/helloworld/tree/v2
salamankas; +1 Ответить
141. dimax.dm 22.03.17 17:39 Сейчас в теме
В демо примере из статьи, попытался добавить в веб еще один документ (Телефонный звонок). В настройках интеграции на вкладки метаданные добавил документ, указал кешировать - doc, далее Запись meta. В браузере в разделе метаданные, новый документ не появился. Можно узнать подробней как добавить новый документ, справочник, регистр?
142. unpete 539 22.03.17 21:59 Сейчас в теме
(141)
подробней как добавить новый документ, справочник, регистр?
После изменения метаданных в 1С и записи их в couchdb, нужно выполнить gulp prebuild:meta, будет выполнен скрипт https://github.com/oknosoft/helloworld/blob/master/src/utils/prebuild.js, который скомпилирует файл https://github.com/oknosoft/helloworld/blob/master/tmp/prebuild.js с новыми метаданными. Далее - пересобрать проект - новые классы данных будут доступны в javascript.
143. dimax.dm 23.03.17 13:29 Сейчас в теме
Получилось, но выполнить пришлось gulp full
В настройке интеграции нажимал на вкладках Метаданные - запись meta и Регистрация - Зарегистрировать новые.
Новые документ и регистр в веб появились, но данных нет и при попытке добавить новый документ открывается добавление Перемещение денег.
Что не так?
144. unpete 539 23.03.17 22:00 Сейчас в теме
(143) Метаданные и интерфейс - слабо связанные сущности. Код helloworld v0.12 последний раз открывал в 2016 году. Возможно, там не настроено автоформирование дерева форм списков используемых метаданных.
Если менеджер и конструктор ваших новых данных есть в системе - можете писать про них любой код - подписки на события, модификаторы и т.д.
Автоформу списка можно открыть, например, набрав в консоли: $p.doc.имя_вашего_документа.frm_list()
145. dimax.dm 24.03.17 10:37 Сейчас в теме
На сколько понимаю автоформа нового списка документа формируется, но нет данных и возможности добавить новый документ. В консоли браузера Chrome Ctrl+Shift+I > Console?
146. dimax.dm 24.03.17 11:30 Сейчас в теме
Попробовал helloworld v2 есть явные улучшения. В списке нового документа теперь получается добавить документ и реквизиты его. Более того он появляется в 1С. Но,
1. некоторые реквизиты документа написаны как undefined
2. документы из 1С не попали в веб
Как исправить?
147. unpete 539 24.03.17 14:59 Сейчас в теме
(146)
Попробовал helloworld v2
Это вряд ли возможно. В helloworld v2 нет автоформ. На сегодня, metadata.v2 - это невизуальный движок данных с поддержкой ссылочной типизации и автономного режима. ui-часть для v2 пока малофункциональна.

(146)
Как исправить
Наверное, потратить чуть больше времени за знакомство с кодом metadata.js и библиотеки интеграции с 1С.
148. artik1994 24.03.17 15:21 Сейчас в теме
149. Alexsisit 242 04.05.17 20:19 Сейчас в теме
Добрый день. Пытаюсь настроить CouchDB по вашему примеру выдает такую ошибку

{Обработка.ИнтеграцияПанельАдминистрирования.Форма.Форма.Форма(529)}: CouchDB_Пользователи: (404) {"error":"not_found","reason":"Database does not exist."}

ВызватьИсключение "CouchDB_Пользователи: (" + HTTPОтвет.КодСостояния + ") " + HTTPОтвет.ПолучитьТелоКакСтроку();

подскажите где глянуть?
150. unpete 539 04.05.17 21:12 Сейчас в теме
(149) Судя по тексту, вы используете свежую версию библиотеки интеграции, а описание относится к коду, написанному около года назад.
Вижу два варианта:
- Использовать комплект файлов от ноября 2016, включая metadata@0.11.220
- Перед выполнением команды "Настроить couchdb", выполнить команду "Создать базы и пользователей". В старой версии, создание и настройка баз были в одном флаконе. Сейчас - это разные операции.
Ну, и отладчик никто не запрещал. Ставите точку останова в модуле ИнтеграцияСериализацияСервер и можно топать по шагам.
151. user652485_daniel.905 16.05.17 17:04 Сейчас в теме
(150) такая же ошибка как в (149). Так и непонятно как решить. ЧТо имеется ввиду под комплектом файлов? Файлов проекта или cf для 1С? Файлы проекта закачивал по схеме как вы пишите в инструкции вот вчера буквально.
"выполнить команду "Создать базы и пользователей"." - где эта команда? Нигде ее нет.
В отладчике идет в строки
urls = ИнтеграцияПовтИсп.urls();
_url = ИнтеграцияПовтИсп.ОбщегоНазначенияКлиентСервер().СтруктураURI(urls.http);
Если _url.Схема = "https" Тогда
HTTPСоединение = Новый HTTPСоединение(_url.Хост, _url.Порт, urls.username, urls.password,,, Новый ЗащищенноеСоединениеOpenSSL());
Иначе
HTTPСоединение = Новый HTTPСоединение(_url.Хост, _url.Порт, urls.username, urls.password);
КонецЕсли;
ПутьНаСервере = Лев(_url.ПутьНаСервере, ИнтеграцияПовтИсп.СтроковыеФункцииКлиентСервер().НайтиСимволСКонца(_url.ПутьНаСервере, "/"));

HTTPЗапрос = Новый HTTPЗапрос(ПутьНаСервере + "_config/httpd/enable_cors");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
HTTPЗапрос.УстановитьТелоИзСтроки("""true""");
HTTPОтвет = HTTPСоединение.Записать(HTTPЗапрос);
Если HTTPОтвет.КодСостояния > 201 Тогда
ВызватьИсключение "CouchDB_CORS: (" + HTTPОтвет.КодСостояния + ") " + HTTPОтвет.ПолучитьТелоКакСтроку();
КонецЕсли;

В ПутьНаСервере - пустая строка, адрес коучдб: http://localhost:5984/hw_
Что делать, как добить тестовый пример?
153. unpete 539 16.05.17 21:30 Сейчас в теме
(151)
В HTTPОтвет.КодСостояния соответственно пришло 400 и описание ошибки Database does not exist
400 как раз и означает, что по запрашиваемому вами пути нет базы. Чтобы заработало, базы надо создать. В обработке ИнтеграцияПанельАдминистрирования должны быть для этого команды.
Что делать, как добить тестовый пример?
Если решение вам действительно интересно, начните с чтения документации couchdb и API Metadata.js
154. user652485_daniel.905 16.05.17 21:40 Сейчас в теме
(153) Какие это команды? Там команд вроде как больше нет. Демобазу отсюда брал из прикрепленных файлов. Нам сейчас не интересно читать весь комплекс документации, интересно на практике показать заказчику ваше решение. И чем быстрее тем лучше. А вы отправляете документацию всю читать. Нехорошо как то получается. В чем причина ошибки то? Все делал по вашему видео. Вы же сами говорите что по нажатию на кнопки которые в обработки база создастся сама - но этого не происходит (к слову, у вас в видео видно что база заранее уже в коучдб есть)
155. unpete 539 17.05.17 15:00 Сейчас в теме
(154)
не интересно читать весь комплекс документации
Если ваш проект дешевле 3 млн. руб. или если знаете другой способ решить вашу задачу - не надо тратить время на метадату. Это довольно сложная платформа, требующая от разработчика высокой квалификации.
156. user652485_daniel.905 17.05.17 17:34 Сейчас в теме
(155) Настолько сложная, что HelloWorld, выложенный ЗДЕСЬ, не работает, и вы считаете это нормальным и вместо решения предлагаете "почитать документацию"? Знаете, как то неправильно так продвигать свой продукт. Я конечно понимаю что вам лень разбираться "забесплатно", но раз вы выложили статью в которой вроде как все работает, у комментаторов выше все работает, а с апреля примерно работать перестало, кажется очевидным что обновился один из компонентов всей связки и необходимо обновить остальные, иначе ВСЕ будущие последователи будут сталкиваться с одним и тем же.
А проекты заказчику вы также сдаете, в стиле - не нравится что есть ошибки - валите от меня? Наверно нет. Было бы корректным хотя бы разобраться в будущем, я же не требую прямо сейчас это сделать. Если вы хотя бы собираетесь дальше развивать это.

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

Как то проще надо быть.
157. unpete 539 17.05.17 21:17 Сейчас в теме
(156)
как то неправильно так продвигать свой продукт
Я не продвигаю никаких "продуктов". Публикуя статью, я рассчитывал найти партнеров на этом форуме, но со временем осознал, что напрасно теряю время.
Если вы хотя бы собираетесь дальше развивать это
Проект развивается. К разработке подключились три новых человека, но с каждым коммитом, мы всё дальше от 1С.
158. Region102 18.05.17 05:22 Сейчас в теме
(156) Это публикация без поддержки, включите немного мозг и все заработает. Мои старые публикации тоже не работают и люди вполне резонно просят их допилить под их релизы, но это уже платный функционал.
160. FSerg 66 18.05.17 10:06 Сейчас в теме
(156) Господи, это опенсорс, человек бесплатно делится совершенно невероятным техническим решением/опытом! Как можно высказывать какие-то претензии? Можно пытаться вежливо, очень вежливо попросить помощи, но никак не обижаться на отсылку читать документацию.
161. unpete 539 18.05.17 10:37 Сейчас в теме
(156)
Из той же логики не работать "забесплатно"
Деньги тут совершенно не при чём. Если бы ответ на ваш вопрос был в оперативной памяти, вы его получили бы моментально.
Проблема в отсутствии времени. На текущий момент, портфель заказов примерно в 5 раз больше, чем я могу обслужить.
Поднял цену для клиентов до 4 тыс. руб. в час, но они он отстают: "хотим быстрее, хотим больше".
152. user652485_daniel.905 16.05.17 17:05 Сейчас в теме
В HTTPОтвет.КодСостояния соответственно пришло 400 и описание ошибки Database does not exist.
159. user736995 18.05.17 09:11 Сейчас в теме
Интересная статья! Спасибо!
162. salamankas 23.05.17 11:06 Сейчас в теме
Проект развивается. К разработке подключились три новых человека, но с каждым коммитом, мы всё дальше от 1С.

Евгений, опишите, пожалуйста, куда Вы двигаетесь от 1С?
Есть ли у команды IRC или что-то подобное..?
Есть ли соглашение о разработке?
163. unpete 539 23.05.17 14:59 Сейчас в теме
(162) Основной вектор описан по ссылкам https://github.com/oknosoft/metadata.js/blob/master/roadmap.md и https://github.com/oknosoft/metadata.js/issues/177
IRC нет, есть публичные и несколько закрытых репозиториев github
Соглашения о разработке нет. Я отказался от идеи зарабатывать на продажах платформы. Новые релизы публикуются под MIT.
164. user652485_daniel.905 08.06.17 11:54 Сейчас в теме
В общем, настроить коуч дб руками и создать в нем базу из его интерфейса оказалось проще, таким образом демка запустилась.
Однако, попытка внедрить в свою базу успехом не увенчалась.
Что сделал:
1)Добавил объекты из приложенного конфига.
2)В макете обработки сделал макет для своей конфигурации "УправлениеПредприятием".
3) Поправил макеты _design...
4) Добавил объекты как в демке+ свой документ в определяемые типы
5) Создал в коуче новые базы с другим префиксом
6) Выгрузил метаданные и объекты в коуч из 1с
7) поменял в проекте в package префикс базы.
8) получил ошибку при сборке:
[14:36:47] Finished 'injected' after 324 ms
{ error: 'not_found',
reason: 'missing',
name: 'not_found',
status: 404,
message: 'missing' }
(node:1652) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError in plugin 'metadata-prebuild'
Message:
Cannot read property 'enm' of undefined
(node:1652) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Не подскажете куда дальше двигаться? уже второй день сижу ищу..
165. unpete 539 08.06.17 15:31 Сейчас в теме
(164)
404 error: 'not_found
для сборки файла описания метаданных, строка подключения для nodejs, обычно отличается от той, что будет использоваться в браузере. В актуальных версиях конфигурационных файлов предусмотрены отдельные переменные couch_path и couch_local.
В репозитории htlloworld живут исходники двух вариантов демо-приложения - для v0.12 и v2.0.
Сейчас я не располагаю временем чтобы актуализировать файлы в этих репозитоиях. Исправить ошибки вы можете самостоятельно - включите в node отладку и пройдите код по шагам - сразу увидите проблемное место.
166. user652485_daniel.905 09.06.17 14:42 Сейчас в теме
(165)
{ error: 'unauthorized',
reason: 'Name or password is incorrect.',
name: 'unauthorized',
status: 401,
message: 'Name or password is incorrect.' }
(node:7164) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError in plugin 'metadata-prebuild'

А где логин и пароль прописывается для коуча в проекте? В package ни в своей версии ни в репозитории у вас не обнаружил...
167. unpete 539 09.06.17 19:19 Сейчас в теме
(166)
где логин и пароль прописывается для коуча в проекте?
Важно: не для коуча, а для конкретной базы. В актуальных версиях, база meta - публичная, доступна для чтения без пароля. При инициализации metaengine есть несколько триггеров, где вы можете указать логины и пароли для разных баз вашей системы (не обязательно couchdb - никто не посмеет запретить вам использовать postgres, couchbase или иное хранилище), но проще убрать пароли с базы meta, тем более, что данные там обычно не хранятся - только описание метаданных.
168. user652485_daniel.905 13.06.17 09:33 Сейчас в теме
Нет паролей на базе. Но ошибка все равно такая. Попробовал взять версию свежее с github скачал, но все равно ошибка
{ error: 'forbidden',
reason: 'You are not allowed to access this db.',
name: 'forbidden',
status: 403,
message: 'You are not allowed to access this db.' }

Что то недонастроено в коуче? Я уже в коде что только не пробовал менять.
169. unpete 539 13.06.17 12:38 Сейчас в теме
(168) Попробуйте сформулировать, чего вы от меня хотите.
Я дал вам открытый код, дал какую-то документацию.
Если нужно моё время, то оно не продаётся. Клиенты записываются в очередь на 2018 год и к выбору этих клиентов я подхожу очень разборчиво.
Повторю рекомендацию: включите отладчик и двигайтесь по коду nodejs по шагам.
170. user652485_daniel.905 13.06.17 13:20 Сейчас в теме
Я не js-разработчик, для меня это новая область знаний и я должен не только понять что то в ней, но еще и сразу понять как решить ошибку заложенную во фреймворк, у меня взгляд не такой широкий. Я даже не понимаю как в js отлаживать.
Вот есть база, условно, erp_meta. он в нее лезет и не может попасть?
Тут только это настраивается или еще где то в коде?
"config": {
"couchdb": "http://localhost:5986/erp_",
"rest_1c": "",
"zone": 0,
"zone_demo": 1,
"prefix": "erp_",
"suffix": "",
"attachment_max_size": 10000000
}

Потому что если не в коде, это сузит мне область поиска хотя бы.
171. unpete 539 13.06.17 17:49 Сейчас в теме
(170) Дмитрий, без обид: чтобы использовать нашу библиотеку нужна экспертная квалификация в js.
Предполагается, что человек разработал с десяток интернет-магазинов и столько же онлайн и оффлайн сервисов и веб-приложений на традиционных фреймворках.
Упёрся в ограничения, ощутил потребность в метаданных как на стороне клиента, так и сервера.
В этом случае, metadata поможет перепрыгнуть планку, казавшуюся слишком высокой для предыдущего инструментария.
Если ваша задача достаточно серьёзна (от 3 млн. руб.), я готов обсудить совместный проект - в очередь на 2018 год.
Если знакомитесь с метадатой просто для расширения кругозора, вряд ли смогу быть полезен.
172. user652485_daniel.905 15.06.17 20:17 Сейчас в теме
(171) Вывести свою базу в метадату теперь дело чести.
Я перечитал еще раз внимательно всю тему. Моя первая ошибка - я не заметил в комментариях упоминания что нужно коуч дб 1.6 брать, а не 2.0. После переустановки на эту версию, получилось прямо из 1с и базы создать, и заполнить их. При gulp full в нетбинсе все же ошибка:

(node:2092) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError in plugin 'metadata-prebuild'
Message:
Cannot read property 'enm' of undefined
(node:2092) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
{ error: 'not_found',
reason: 'missing',
name: 'not_found',
status: 404,
message: 'missing' }

Есть подозрение что связано это с вашим комментарием:
"в макете _design_meta не прописано создание объекта meta_patch
Ошибку признаю - исправлено в актуальной версии. Обращение к базе meta происходит только при пересборке ./tmp/prebuild.js. Полагаю, если человек добрался до изменения метаданных, он увидит 404 при отладке prebuild.js " Тем не менее исправление этого момента в макете 1с результата не дало...
173. user652485_daniel.905 16.06.17 12:00 Сейчас в теме
Получилось, когда из git вытащил более новую версию объектов для 1с, а не ту которую здесь
174. Biilsun 19.09.17 16:28 Сейчас в теме
Объединять документы в один возможно? Или проще создать объединений в УПП и его публиковать. Рассматриваю вариант объединить документы заказ поставщику и Заявку на оплату в УПП.
176. unpete 539 19.09.17 21:08 Сейчас в теме
(174) Вопрос точно про метадату? Мы термин "опубликовать" не используем, т.к. данные веб-приложения могут повторять 1С-ные, могут отличаться, а могут жить своей самостоятельной жизнью безо всякой 1С.
Методологически правильнее, когда один документ отражает оно событие и никогда не редактируется.
Если в вашем бизнеспроцессе одно событие должно иметь несколько учетных последствий, то лучше говорить не об объединении документов, а об алгоритме проведения.
175. user606894_schana1w3 19.09.17 17:23 Сейчас в теме
177. Chokerka 19.09.17 21:31 Сейчас в теме
Начала изучать!
И уже есть первые успехи!
178. Biilsun 27.09.17 13:57 Сейчас в теме
Есть ли пример интеграции со старыми конфигурациями? у меня УПП 1.3 и БСП 2.3 там нет
179. unpete 539 27.09.17 14:03 Сейчас в теме
(178) Старые конфигурации поддержаны. Желательно, чтобы платформа была >= 8.3.8, но при экзотических требованиях, можно запустить и на 8.2.19
180. Biilsun 02.10.17 13:41 Сейчас в теме
Какие модули БСП необходимы для интеграции integration_light_2_3_1_220? у меня УПП по этому БСП 2.3 там нет
181. unpete 539 02.10.17 18:18 Сейчас в теме
Актуальная integration_light имеет версию 2.3.6.233.
Если нужна помощь - объясните, что именно вы планируете сделать на метадате. Если подозрение, что вы ожидаете от платформы не то, для чего она предназначена.
182. Biilsun 03.10.17 09:05 Сейчас в теме
(181)
Планирую реализовать документы "Заявка на расходование денежных средств" и "Заказ поставщику" для УПП.
Сейчас уже перевел тестовую базу УПП с режима совместимости 8.2.13 до 8.3.8.
Пытался обновить старую БСП 1.2.4 которая присутствует в УПП, понимаю что она довольно сильно отличается от 2.3 и помимо неё придётся переписать пол УПП.
Думаю, накатить БСП 2.3 частично только те модули или процедуры которые необходимы для интеграции с metadata поэтому и спросил существует ли по типу карты зависимостей от модулей?
Или какие другие варианты интеграции есть? наверняка уже с УПП интеграцию проводил кто-то, так как конфигурация довольно еще популярна.

Крайний вариант реализовать промежуточную базу на БСП 2.3 которая будет интегрирована с metadata, а с ней уже реализовать обмен с рабочей УПП штатными способами.
183. unpete 539 03.10.17 12:02 Сейчас в теме
(182) Вы делаете интерфейс к 1С или автономное решение на метадате, к шине которого может подключаться 1С?
Метадату решили использовать v0.12 или v2.0?
Интерфейс делается для своих филиалов или там будут жить внешние пользователи?
Сколько ожидается пользователей и событий в день (если меньше 300, то проще пустить этих людей прямо в УПП и не париться с метадатой)?

наверняка уже с УПП интеграцию проводил кто-то
Конечно, есть несколько сборок с УТ10.3, УПП, КА 1.1, но оформлять их в отдельные комплекты поставки - лениво.

реализовать промежуточную базу на БСП 2.3
Это было бы ужасно. Надеюсь, вы так делать не будете.
184. Biilsun 04.10.17 10:25 Сейчас в теме
(183) Планирую автономное решение, пользователей будет около 80 человек в регионах (представители компании в "полях" большая текучка поэтому они рассматриваються как внешние), работают через ipad, в дальнейшим планирую остальные сервисы туда подтянуть.
185. unpete 539 04.10.17 12:46 Сейчас в теме
(184) Ок, задача классная, но начать предлагаю со стенда-прототипа. Добейтесь, чтобы у вас заработал helloworld v2 (релиза пока не было, внутри - сыро). Там всего два справочника и один документ без табчасти. Когда разберётесь с демкой, большинство вопросов по реальной задаче отвалятся сами.
186. Biilsun 05.10.17 09:12 Сейчас в теме
(185) запустил локально все заработало, думаю надо не от 1с начинать разрабатывать, экспортировать метаданные и потом пытаться заточить под metadata. Нужно разрабатывать непосредственно на metadata оглядываясь на 1с. Возник вопрос, есть ли документация и примеры по разработке объектов в metadata? можно ли непосредственно в проекте объекты разрабатывать минуя couchDB напрмер создавать классы на JavaScript описывая поля и поведение объекта?
187. unpete 539 05.10.17 13:33 Сейчас в теме
(186)
объекты разрабатывать минуя couchDB напрмер создавать классы на JavaScript описывая поля и поведение объекта?

Да, посмотрите, например, этот модуль, но редактировать метаданные в 1С, всё-таки, удобнее.
188. unpete 539 05.10.17 13:38 Сейчас в теме
(186)
создавать классы на JavaScript описывая поля и поведение объекта
И не забываем про модификаторы, как здесь. Никто не мешает дополнить и переопределить автокласс некого объекта метаданных
189. user839201 06.10.17 11:22 Сейчас в теме
Не получается на своей базе запустить.
Вот что делал в тестовой базе где все получилось.
1) Установил couchDB и настроил про инструкции из этой статьи
2)установил метадату в папку www на диск С выполнив команды из консоли согласно инструкции из статьи
3) скачал тесовую базу helloworld_0_3_4_225.dt и развернул, выполнил все настройки из инструкции из статьи тоже все хорошо
в файле package.json прописал пути и префикс до couchDB
далее выполнил C:\www>gulp full
открыл index.html все заработало.

Далее попытался к своей базе (Настроенная ЗУП 3.1.2.95) прикрутить
1) сделал выгрузку конфигурации из свой предыдущей Демо, произвел объединение с зупом, в настройках объединения поставил отбор по подсистеме Интеграция и МетадатаДемо и накатил изменения.
2) запустил в режиме предприятие произвел точно такие же настройки как с Демо базой единственное на вкладке "Метаданные" добавил два своих справочника
Путь и префикс остались прежними поэтому в настройках package.json не менял выполнил команду C:\www>gulp full
открываю index.html появляется окно авторизации ввожу имя пользователя пароль нажимаю ОК и ничего не происходит белый экран,
чистил кеш браузера не помогало, кнопка настройка в окне авторизации тоже не работает.
Посмотрел, что в консоли и обнаружил ошибку
Uncaught TypeError: Cannot read property '__define' of undefined
at app.js:635
at app.js:7
at app.js:9
вот сама строчка $p.cat.users_acl.__define({

возникло подозрение что отсутствует синоним "__define' " прошелся поиском все на месте (ПометкаУдаления)
почему пометка удаления может быть undefined?

подскажите пожалуйста, что я сделал не так?
190. unpete 539 06.10.17 11:44 Сейчас в теме
(189) Вы пытаетесь использовать v0.12, я очень давно не заглядывал в эту версию. Усилия направлены на v2.
v0.12 вполне работоспособна, но с лёгким стартом из коробки у неё трудности.
На 99%, проблема в несовпадении версий каких-то библиотек из npm с теми, что ожидает ваш код.
Воспользоваться метадатой, как черным ящиком в ближайшие годы - не получится. Если нужен результат, придется разобраться, как оно устроено изнутри.
191. dimax.dm 09.01.18 13:15 Сейчас в теме
Добрый день, Евгений!
Когда планируется релиз v2?
На сколько текущая версия близка к релизу?
Правильно понимаю что демо проекты на v0.12 достаточно легко можно перевести на v2?
192. unpete 539 09.01.18 16:09 Сейчас в теме
(191) v2-core давно production-ready. На нём крутятся реальные проекты. Более года как.
v2-ui научился рисовать адекватные интерфейсы ещё в декабре 2016.
Вообще, v2 - это много библиотек род разные задачи.
Если хотите строить микросервисы - берите и пользуйтесь.
Бизнес-логику в браузере и на сервере, так же, можете кодировать смело.
Автогенератора форм и отчётов в ближайшее время ждать не стоит - загружены другими задачами.
193. s_vidyakin 09.01.18 17:48 Сейчас в теме
(192)
Открыл hello-world
Документ Перемещение - пробую выбрать другого получателя, жму "Показать все" - браузер виснет намертво, предлагает завершить процесс
Закрыл hello-world
194. dimax.dm 15.01.18 21:47 Сейчас в теме
как обстоят дела с правами и их настройкой? есть ли примеры и/или что почитать?
есть ли и планируются ли еще примеры на v2 кроме helloworld?
195. unpete 539 16.01.18 09:09 Сейчас в теме
(194)
как обстоят дела с правами и их настройкой?
Дела обстоят хорошо, но для 1С-ника очень непривычно - подходы отличаются.
Для целей rls используется фильтрованная репликация или отдельные методы микросервиса.
Еще, с элементом служебного справочника Пользователи, ассоциирован Мандат - замороженная структура, в ключах которой имена объектов метаданных, а значения - строка разрешений (просмотр, изменение, редактирование, проведение и т.д.). Эту структуру можно использовать в интерфейсе и бизнеслогике.
планируются ли еще примеры на v2
Есть комплекс мероприятий по созданию сообщества разработчиков на metadata.js
196. dimax.dm 16.01.18 13:07 Сейчас в теме
правильно понимаю что фильтрация происходит на стороне couchdb?
197. unpete 539 16.01.18 16:44 Сейчас в теме
(196)
фильтрация происходит на стороне couchdb
Если используется адаптер couchdb то да, это один из вариантов. Еще, фильтрация может выполняться js-кодом микросервиса или другим, отличным от couchdb хранилищем данных.
198. leobrn 219 03.08.18 04:58 Сейчас в теме
Подскажите в чем может быть проблема, выходит ошибка при запуске:

Failed to compile
./src/index.js
Module parse failed: Unexpected token (46:11)
You may need an appropriate loader to handle this file type.
|
| render() {
| return <Provider store={store}>
| <RootView
| history={history}
199. unpete 539 03.08.18 07:39 Сейчас в теме
(198) Скорее всего, перепутаны версии пакетов npm - у вас babel внутри webpack не понимает jsx
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Консультант по 1С:Документооборот
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист по 1С:Бухгалтерии
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист по 1С:ЗУП
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 100 000 руб. до 150 000 руб.
Полный день