Hello world на metadata.js

Публикация № 540168

Разработка - Инструментарий разработчика

offline offline-first веб веб клиент веб приложение автономная работа javascript

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

Демо-задача

Автономное веб-приложения для учета движения наличных денег:

  • Два справочника:
    • Кассы (считаем, что кошельки, контрагенты, подотчетники и т.д. – это просто разные кассы)
    • Статьи ДДС – для простейшей аналитики
  • Один документ: Перемещение денег (куда, откуда, статья, сумма)
  • Один отчет: Ведомость по денежным средствам

Приложение должно обеспечивать возможность ввода и редактирования документов как из веб-интерфейса, так и средствами 1С и сохранять работоспособность при недоступности сервера или поломках доступа в Интернет.

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

Результат

Живое демо доступно по ссылке: https://light.oknosoft.ru/helloworld/

  • Движок легко справляется с тысячами одновременных сеансов
  • Сервер 1С для обслуживания веб-клиентов не используется
  • Публикации SOAP и HTTP сервисов не требуется

Демо

Содержание

  • Подготовка базы 1С. Готовая dt-шка есть в прикрепленных файлах. Опишу, что именно делалось со стороны конфигуратора
  • Подготовка инфраструктуры. Для отладки и публикации, нужны установленный локально NodeJS, а так же серверы CouchDB и Nginx. CouchDB и Nginx могут располагаться как на локальном компьютере, так и удаленно на любом компьютере в Интернет
  • Настройка состава метаданных, а так же, синонимов и начальное заполнение, выполняются в режиме 1С:Предприятие
  • Подготовка веб-приложения. Структуру каталогов и необходимые файлы  развернём в любой удобной папке на локальном компьютере с помощью npm
  • Публикация веб-приложения. Рассмотрим необходимые и достаточные шаги для публикации приложения в Интернет
Важно! Текст сопровождается видеороликами. Предлагаю совмещать чтение с просмотром видео.
Одно без другого недостаточно информативно.

Шаг №1 CouchDB

Выбору CouchDB для back-end metadata.js предшествовала большая работа. В первую очередь, рассматривался PostgreSQL, ставились эксперименты с MySQL, Couchbase и MongoDB, но я не смог устоять перед уникальными возможностями CouchDB:

  • В разработку собственного движка синхронизации данных, я вложил не менее года, но когда увидел математику master-master репликации CouchDB, без сожаления выбросил своё творчество на помойку
  • Запас масштабируемости – есть примеры систем на кластере CouchDB  с посещаемостью 500 млн. запросов в сутки (до 10000 транзакций в секунду)
  • 100% HTTP API – не требуются никаких бинарных драйверов
  • Возможность подключить внешний низкоуровневый движок обработки запросов и построения индексов. Например, скрипт на NodeJS.
    Прочтите последний пункт еще раз: Metadata использует для хранения данных CouchDB, которая, в свою очередь, может использовать метадату для низкоуровневого построения индексов и агрегатов!!!

С установкой CouchDB проблем не возникнет – готовые образы виртуальных машин Linux для VMDK, OpenStack, Xen, Docker, ProxMox или установочный iso-файл можно взять, например, в turnkeylinux. Исходные тексты и дистрибутивы для всех платформ доступны официальном сайте couchdb.org

После установки, необходимо выполнить два действия:

  • Задать пароль администратора
  • Указать в секции httpd, слушать все ip-адреса (установить bind_address = 0.0.0.0). По умолчанию, служба CouchDB, слушает только localhost и обратиться к серверу снаружи невозможно

Первый запуск couchdb

Остальные настройки библиотека интеграции сделает из режима 1С:Предприятие.

Задачи CouchDB при взаимодействии с 1С:

  • CouchDB предоставляет 1C-ке http интерфейс для записи и чтения произвольных данных. Повторюсь, в ранних редакциях metadata, предпринимались попытки использовать для этих целей файловую систему или базу SQL. Эти подходы имели проблемы с версионированием и удобством отслеживания и синхронизации изменений. CouchDB чем то похожа на Git, где с версионированием всё хорошо, но Git – это не база данных. Map/reduce индекса на нём не построишь.
    Для простоты можно считать, что CouchDB – это такая штука, в которую 1С-ка в любой момент может без блокировок записать любой сериализуемый объект (в CouchDB запись и чтение неблокирующие. 1000 клиентов могут одновременно читать и писать одни и те же данные)
  • На начальном этапе и при изменении структуры конфигурации, 1С складывает в CouchDB подробное описание своих метаданных. По этому описанию, движкок metadata компилирует javascript-файлы с конструкторами объектов данных, Плюс, создаёт скрипты sql для таблиц в памяти браузера
  • Далее, при редактировании в 1С любого объекта, в подписке на событие «при записи», изменения этого объекта отправляются в CouchDB. Происходит подобие «регистрации изменений в плане обмена»
  • В фоновых заданиях, 1С-ка запрашивает у CouchDB список объектов, изменённых с момента последней синхронизации, читает и записывает изменённые объекты. При интенсивной работе, фоновые задачи репликации можно запускать в несколько потоков

Шаг №2 Nginx

Nginx используется в нашем проекте по прямому назначению: для отдачи статических файлов, балансировки нагрузки и редиректов http запросов к сервисам. Апологеты Apache или IIS, могут настроить те же функции средствами их любимых серверов, но лично мне, ближе синтаксис nginx.conf. Особенно, после того как в нём поддержаны сценарии javascript. Пример nginx.conf есть в прикрепленных файлах. В большинстве случаев, годятся настройки по умолчанию. Достаточно указать путь к папке с файлами веб-приложения.

В production-окружении, службы CouchDB, Apach и Nginx, обычно размещают на разных физических или виртуальных серверах. Рекомендуется перенаправлять браузеры клиентов с http на https, чтобы пароли и прочие данные веб-приложения передавались исключительно по шифрованному каналу.

Исходные тексты и дистрибутивы для всех платформ доступны официальном сайте nginx.org

Шаг №3 NodeJS

В нашей задаче, Node.js используется только на этапах подготовки и сборки проекта. С его помощью, мы развернём структуру папок и файлов приложения helloworld, а так же, скомпилируем итоговые файлы для публикации в Интернет.

Исходные тексты и дистрибутивы для всех платформ доступны официальном сайте nodejs.org

Шаг №4 IDE

Если у вас уже установлен любимый редактор кода javascript, этот абзац можно пропустить. Для остальных, предлагаю обратить внимание на WebStorm и NetBeans. WebStorm платный, NetBeans не требует денег за подписку. Выбор за вами.

Шаг №5 Файлы проекта

Создадим пустой каталог. Например, c:\www и перейдём в него в командном интерпретаторе. Предполагается, что nodejs уже установлен.
Выполним команды:

PS C:\users> cd c:\www
PS C:\www> npm install -g metadata-js@0.11.223

Metadata.js будет установлена глобально и зарегистриуется утилита командной строки metadata.

PS C:\www> npm install -g gulp-cli

Установит глобально и зарегистрирует утилиту командной строки менеджера задач gulp

PS C:\www> metadata init

Создаст начальную структуру проекта

PS C:\www> npm install

Установит дополнительные библиотеки (зависимости), необходимые движку metadata.js

Инсталляция потребует некоторого времени. Из Интернета загружается около 200Mb кода.
При установке зависимостей, могут появляться сообщения об ошибках. Обычно, это не мешает работе веб-приложения.

Мы в одном шаге от запуска демо-примера.
Если CouchDB установлен локально, на этом же компьютере, проект можно не пересобирать и сразу открыть файл c:\www\index.html в браузере Chrome. Должно открыться демо-приложение и ругнуться на отсутствие данных в CouchDB. Их мы подготовим на следующем шаге.

Если CouchDB установлен на другом компьютере в локальной или глобальной сети, необходимо пересобрать проект, предварительно, указав в настройках по умолчанию, строку подключения к серверу. Отредактировать файл настроек package.json можно любым текстовым редактором. Указываем в параметре config->couchdb тот же путь, который указан для этого параметра в 1С.

Чтобы перекомпилировать файлы проекта, выполним в командной строке:

PS C:\www> gulp full

Для отладки в файловом режиме, просто открываем c:\www\index.html в Chrome. Остальные браузеры блокируют исходящие запросы со страниц, открытых по протоколу file:///.

Чтобы наше приложение заработало в любом браузере локальной сети, достаточно поместить файлы из c:\www\ в папку веб-сервера. Папка не обязана быть корневой. Например, если корень apache или nginx смотрит на c:\www-data\, можно создать папку c:\www-data\helloworld\ и поместить в неё содержимое нашего проекта.  В браузере проект будет доступен по http://localhost/helloworld/ или http://имякомпьютера/helloworld/. На вебсервер нет необходимости переносить всю структуру проекта.
Достаточно скопировать папку dist и файлы index.html, cache.appcache и manifest.json.

Вместе со структурой папок, которую мы получили командой metadata init, в каждой папке был создан файл README.md, поясняющий назначение папки. Исходные тексты и шаблоны,  располагаются в иерархии папки src. Особый интерес представляют папки внутри src/modifiers. Там живут модули объектов и менеджеров наших документов и справочников, а так же, общие модули.

Работа прикладного программиста состоит в написании обработчиков событий «при создании», «при изменении реквизита», «перед записью» и т.д. объектов данных. Список событий, поддержанный менеджером данных см. в справочнике API

В демо-примере задействована единственная подписка на событие – при создании документа «ПеремещениеДенег». Обработчик живёт в файле src\modifiers\documents\doc_cash_moving.js и выполняет единственное действие: назначает номер новому документу

// Подписываемся на события
$p.doc.cash_moving.on({

   /**
    * Обработчик при создании документа
    */
   after_create: function (attr) {
      //Номер документа
      return this.new_number_doc();
   }
});

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

Есть возможность полностью переопределить любую форму, добавив соответствующий метод в менеджере объекта.

Еще, в папке модификаторов есть несколько служебных модулей (cat_users_acl.js, cch_predefined_elmnts.js и cch_properties.js). Эти файлы – аналог модулей объектов из БСП, реализующих стандартную функциональность.

Шаг №6 конфигурация 1С

Можно взять готовую dt-шку из прикрепленных файлов и добавить в неё объекты прикладной задачи. Для полноты картины, рассмотрим, как делалась эта каркасная dt-шка:

  • Создаём пустую конфигурацию, присваиваем ей имя (в нашем случае «МетадатаДемо»), создаём подсистему «МетадатаДемо»
  • Т.к. библиотека интеграции использует БСП, производим сравнение-объединение с актуальной версией БСП с постановкой на поддержку
  • Включаем возможность внесения изменений в следующие объекты БСП:
    • Общие модули «ПодсистемыКонфигурацииПереопределяемый» и «УправлениеСвойствамиПереопределяемый»
    • Справочник «ВидыКонтактнойИнформации» – в него добавим предопределенные элементы, чтобы у наших касс появилась закладка с контактной информацией
    • Справочник «НаборыДополнительныхРеквизитовИСведений» – в него добавим предопределенные элементы, чтобы у наших касс появились настраиваемые дополнительные реквизиты
    • План видов характеристик «ДополнительныеРеквизитыИСведения» - при необходимости расширения состава типов дополнительных реквизитов
  • Добавляем общий модуль «ОбновлениеИнформационнойБазыМетадатаДемо» и указываем на него ссылку в модуле «ПодсистемыКонфигурацииПереопределяемый»

Рассмотренные шаги – стандартная процедура подключения БСП. Далее, подключаем библиотеку интеграции (cf-ка есть в прикрепленных файлах)

  • Производим сравнение-объединение с библиотекой интеграции с постановкой на поддержку
  • Включаем возможность внесения изменений в определяемые типы библиотеки интеграции и БСП  – изменим их состав после того, как в конфигурацию будут добавлены наши документы и справочники
  • Включаем возможность внесения изменений  в общий модуль «ИнтеграцияПереопределяемый» - в нём укажем ссылку на процедуру формирования начального образа данных. Так же, в этом модуле можно переопределить правила сериализации данных, но в демо-примере эта возможность не используется
  • Добавляем справочники «ДДС» и «Кассы» и документ «ПеремещениеДенг»
  • Добавляем общий модуль «ИнтеграцияМетадатаДемо» и реализуем в нём процедуру НачальноеЗаполнениеФинализация()

Объекты демо в 1С

Из-за внедренных библиотек БСП и Окнософт:Интеграция, конфигурация получается довольно толстой (400 общих модулей,  70 справочников,  100 регистров и т.д.), но при включенном отборе по подсистемам, объекты демо-задачи помещаются на один экран.

Важную роль при настройке конфигурации имеют определяемые типы библиотеки интеграции:

  • ИнтеграцияСсылка – в состав этого типа надо включить все ссылочные метаданные, которые потребуются веб-приложению. Для экономии трафика и памяти браузера, не рекомендуется включать в этот тип неиспользуемые метаданные. С другой стороны, важно не забывать про связанные ссылочные типы. Например, при добавлении справочника «Номенклатура», следует добавить справочники «Виды номенклатуры» и «Номенклатурные группы»
  • ИнтеграцияОбъект – включает авторегистрацию изменений. Если предыдущий тип определяет, можно ли в принципе передать в CouchDB некие данные, то текущий, указывает, должны ли изменения передаваться в CouchDB автоматически при записи каждого объекта
  • ИнтеграцияНаборЗаписей – аналогично предыдущему, но относится к регистрам сведений и накопления, а не к ссылочным типам
Важно: При переименовании конфигурации, для корректной работы БСП, не забываем переименовывать подсистему «МетадатаДемо» и отражаем изменения в общем модуле «ОбновлениеИнформационнойБазыМетадатаДемо».

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

Шаг №7 Связь с CouchDB и начальный образ данных

Важно! Настройку выполнять в такой последовательности:
  1. Задать адреса сервисов
  2. Включить CORS
  3. Настроить базы
  4. Выгрузить описание метаданных
  5. Зарегистрировать начальный образ

Запускаем 1С в режиме предприятия и открываем обработку «Интеграция: настройка»

Обработка настройки интеграции

На первой закладке необходимо указать:

  • Адрес (url) сервера CouchDB с префиксом баз проекта. В нашем случае, сервер крутится на компьютере с именем i980 порт 5984 и префикс = hw_. Префиксы позволяют разместить базы нескольких, разных по структуре или одинаковых проектов на одном сервере
  • Имя и пароль администратора CouchDB – с этими учетными данными, подсистема интеграции 1С будет взаимодействовать с CouchDB
  • В табличную часть «Пользователи», необходимо добавить минимум одного пользователя и указать для него пароль и роли на сервере CouchDB. Роли задаются в виде массива строк. Разработчик прикладного решения может при необходимости добавить произвольное число ролей. По умолчанию, в metadata.js используются роли:
    • doc_reader – может читать объекты из базы doc
    • ram_reader – может читать объекты из базы ram
    • doc_editor – может изменять объекты в базе doc, но для него действуют фильтры RLS
    • ram_editor – может изменять объекты в базе ram
    • doc_full - может изменять объекты в базе doc, RLS на него не распространяется
  • Галку «Active» на этапе начальной настройки можно снять. Она включает режим авторегистрации изменений, когда при записи любого объекта в 1С, изменения синхронно передаются в CouchDB
  • Галку «Check» на этапе начальной настройки можно снять. Она включает режим обязательного контроля регистрации изменений в CouchDB. Если галки Check и Active взведены, а сервер CouchDB выключен, при попытке записать документ или элемент справочника, включенный в состав обмена,  при записи возникнет ошибка – изменения записаны не будут
  • Поле «Zone» в демо-примере не используется. С его помощью, библиотека интеграции реализует функциональность, схожую с 1С:Fresh, когда к одной физической базе 1С подключено несколько абонентов (групп пользователей) с полностью изолированными или частично пересекающимися областями данных
  • Поле «Since» и кнопка «Прочитать» используются для отладки обратной связи с CouchDB
Важно: после внесения изменений на закладке «Адреса сервисов», необходимо записать изменения кнопкой «Записать URLS»

Состав метаданных

На второй закладке перечислены объекты метаданных 1С, которые должны быть доступны в веб-приложении. Список заполняется автоматически при первом старте, но разработчик может в любой момент добавить или удалить из этого списка любые классы данных.

Ряд объектов используются ядром metadata.js. Их удаление из состава обмена, испортит работу веб-приложения. Вот этот список:

  • Перечисление «ИнтеграцияСостоянияТранспорта»
  • Перечисление «ИнтеграцияТипКеширования»
  • Перечисление «ИнтеграцияТипСвёртки»
  • Справочник «Пользователи»
  • Справочник «ИнтеграцияПраваПользователей»
  • Справочник «ЗначенияСвойствОбъектов»
  • Справочник «ИдентификаторыОбъектовМетаданных»
  • Справочник «НаборыДополнительныхРеквизитовИСведений»
  • Справочник «Формулы»
  • План видов характеристик «ДополнительныеРеквизитыИСведения»
  • План видов характеристик «ПредопределенныеЭлементы»

Колонка «Кешировать» указывает, в какой базе CouchDB будут зарегистрированы изменения и способ обработки этих изменений браузером.

Устройство баз в NoSQL отличается от привычного реляционного. Главные особенности: права на чтение и фильтр репликации задаются для базы в целом, а не на конкретный тип объектоав. Metadata.js создаёт для каждого проекта три базы (ram, doc и meta), в которых хранит разные классы объектов.

  • ram – рекомендуется для справочников и прочих редко изменяющихся данных. Объекты с типом кеширования ram, загружаются в ОЗУ браузера при старте веб-приложения и доступны в синхронном режиме.  Изменения постоянно синхронизируются в одну сторону: из CouchDB в indexedDB и оперативную память браузера
  • doc – как правило, используется для документов. Внутри базы doc работает RLS, изменения синхронизируются в обе стороны между CouchDB, 1С и indexedDB браузера
  • doc_remote – объекты не кешируются в браузере и доступны только online. Чтение-запись через CouchDB
  • meta – используются для больших неразделенных классификаторов. Сюда можно положить классификатор банков или КЛАДР. В отличие от doc_remote, данные не дублируются в разных зонах в режиме разделения данных
  • e1cib – Не регистрировать в CouchDB. Этот режим можно рассматривать, как «лёгкий клиент 1С». Потребуется опубликовать rest http сервис библиотеки интеграции. Объекты будут доступны только online через стандартные http интерфейсы 1С.

Разработчику дана свобода при назначении типов кеширования. В экзотических случаях, можно держать документы в памяти, а за справочниками ходить на сервер.

Колонка «Свёртка» в текущей редакции библиотеки интеграции не используется.

Объекты, для которых взведена галка «Скрыть», не видны в автоматически генерируемом интерфейсе веб-приложения, но формы этих объектов полностью доступны через ссылочные реквизиты других объектов. Например, справочник «пользователи» спрятан в общем списке справочников, что не мешает выбрать пользователя в поле «ответственный» документа «перемещение денег».

Колонка «Разрешен IREST» в текущей редакции библиотеки интеграции не используется.

Синонимы

CouchDB может работать в качестве универсальной шины данных, к которой подключены разные ИБ 1С, сканеры, ТСД, АСУ и прочие «не 1С программы». Использование синонимов упрощает интеграцию с разнородными базами.

Указывать синонимы для новых объектов и реквизитов не обязательно. Проблем с русскоязычными названиями не возникает.  Разработчик самостоятельно принимает решение, нужны ли синонимы для его задачи. Если принято решение синонимы не использовать, в таблице синонимов необходимо сохранить записи, относящиеся к предопределенным реквизитам и объектам ядра metadata.js (см. список объектов предыдущего абзаца).

Регистрация

Настало время пошевелить CouchDB из 1С.

  1. Включаем CORS. Рекомендую по возможности не использовать кроссдоменные запросы в production. Всегда можно сделать проксирование через Nginx и перенаправить запросы к разным серверам таким образом, чтобы браузеру казалось, что все серверы располагаются в одном origin. Главная неприятность от CORS – снижение быстродействия из-за использования preflight запросов. Если сайт и сервер расположены в разных доменах, перед тем, как отправить реальный запрос серверу, браузер направляет ему запрос с методом OPTION, на который сервер должен ответить «да, я согласен обрабатывать запросы из чужого домена». Теряем драгоценные миллисекунды на каждом запросе.
    С другой стороны, использование CORS упрощает инфраструктуру и реализацию отказоустойчивости. Если основной сервер не отвечает, веб-приложение может самостоятельно отправить запрос на резервный сервер в другом дата-центре.
    CORS в CouchDB включается кнопкой «Включить CORS» на закладке «Регистрация». На маленьких экранах, эта кнопка может прятаться внутри кнопки «еще» левой табличной части.
  2. Создаём базы. При нажатии на кнопку «Настроить CouchDB» закладки «Регистрация»
    1. будут созданы три базы (doc, ram и meta)
    2. будут созданы пользователи и привязаны к базам
    3. в базах будут созданы или перезаполнены служебные документы с базовыми настройками
  3. Выполняем команду «Записать мета». Возвращаемся на закладку «Метаданные» и жмём кнопку. На основании списка метаданных к обмену и с учетом синонимов, будет сформирован и записан в CouchDB, объект описания метаданных
  4. Выполняем команду «Начальное заполнение». Это подготовительная команда выполняет цикл запросов и заполняет табличную часть ссылками на объекты, из которых будет составлен начальный образ данных. По умолчанию, регистрируются все объекты, включенные в состав обмена. Математику начальной регистрации можно дополнить и переопределить в процедурах «НачальноеЗаполнение» и «НачальноеЗаполнениеФинализация» общего модуля «ИнтеграцияМетадатаДемо».
  5. Выполняем команду «Зарегистрировать». По этой команде, список ссылок отправляется в CouchDB и начинает синхронизироваться со всеми подключенными веб-клиентами
  6. Любуемся результатом

В базы hw_* можно «провалиться» щелчком мыши и изучить содержимое записанных со стороны 1С объектов.

Все необходимые от 1С данные получены – можно переходить к сборке веб-приложения.

Шаг №8 Отчеты

Полностью автоматического формирования отчетов на текущий момент не нет. Доступна форма типового отчета со стандартной разбивкой на поле табличного документа и панель параметров. Данные для отчета можно получать из разных источников. В текущем примере, данные извлекаем из map/reduce индекса CouchDB. Про индексы в NoSQL поговорим в отдельной статье. Сейчас, предлагаю просто открыть в браузере /_utils/database.html?hw_0_doc/_design/doc/_view/cash_moving_date_cashbox#

Map/reduce индекс - аналог регистра накопления

Это индекс CouchDB, используемый в данном случае, как аналог регистра накопления 1С.
При записи каждого объекта, выполняется код похожий на обработчик проведения. Формируется составной индекс (дата + касса) и рассчитывает промежуточные итоги. Эти итоги используются при построении отчета.
Полный код отчета здесь не дублирую - он доступен в модуле src/modifiers/reports/rep_cash_moving.js

Шаг №9 Публикация в Интернет

Если у вас есть VPS, VDS или dedicated сервер, просто разверните на нём couchdb и nginx и скопируйте файлы проекта в подходящую директорию.

Если выделенного сервера нет, но хочется «пощупать» технологию, есть бесплатные хостинги CouchDB:

  • Smileupps. Сервис довольно тормозной, но вполне работоспособный. Для ознакомительных целей годится
  • IBM Cloudant, лично не тестировал, но там есть бесплатный тариф, при условии небольшого трафика

При включенном CORS, файлы проекта можно разместить на любом, дешевом или бесплатном хостинге. Никакой нагрузки на http сервер они не создают – это обычные статические файлы небольшого размера.

В CouchDB есть еще одна фича: он может работать http-сервером. То есть, можно построить back-end на голом CouchDB – без Apache и Nginx.

Итоги

Демо-задача решена. Понимаю, что в короткой статье невозможно рассмотреть даже вершину айсберга.
Если тема покажется аудитории интересной - голосуйте за продолжение. Буду по мере сил выкладывать новые материалы.

Скачать файлы

Наименование Файл Версия Размер
mdhello.zip

.zip 48,78Mb
29.06.17
122
.zip 48,78Mb 122 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. FSerg 66 11.08.16 14:53 Сейчас в теме
Очень круто! Бегло прочитал.
Потом буду пробовать и более вдумчиво изучать.
EliasShy; spogo; Noxie41; ZOMI; +4 Ответить
2. ardn 100 11.08.16 15:45 Сейчас в теме
При попытке добавить файл в документ в демо-базе вот такая ошибка
Обратил внимание на заголовок предупреждения. Получается, он жестко вшит в программу?
Прикрепленные файлы:
3. unpete 556 11.08.16 15:54 Сейчас в теме
(2) ardn,
вот такая ошибка
Работа с прикрепленными файлами в демо-примере не поддержана. Зарегистрировал issue в github
Получается, он жестко вшит в программу
Есть файл i18.ru.js, где живут строковые константы. Можно добавлять свои и переопределять типовые.
32. unpete 556 15.08.16 01:11 Сейчас в теме
(2) ardn,
При попытке добавить файл в документ
Исправлены ошибки при работе с присоединенными файлами. Вложения теперь можно прикрепить к любому ссылочному объекту. Они автоматически реплицируются с сервером и другими клиентами. В демо-примере репликация отключена.
4. Zefvs-md 11.08.16 15:56 Сейчас в теме
Сразу бросился в глаза баг с некорректной сортировкой по дате.
Alien_job; +1 Ответить
5. unpete 556 11.08.16 16:00 Сейчас в теме
(4) Zefvs-md,
баг с некорректной сортировкой по дате
Пример хотелось сделать максимально простым.
Включить сортировку по дате не сложно. Замечание учту, но мне хотелось показать, как оно работает вообще без кодирования на автоформах из коробки.
31. unpete 556 15.08.16 01:04 Сейчас в теме
(4) Zefvs-md,
баг с некорректной сортировкой по дате
Исправлено на уровне движка. В автоформах списков, сортировка по дате теперь работает из коробки, не требуя от программиста дополнительных действий.
Для сложных сортировок, по прежнему требуется создавать map/reduce индекс.
6. igo1 235 11.08.16 17:58 Сейчас в теме
Все бы хорошо, но очень не хватает подробной графической схемы взаимодействия с 1с (протоколы там и библиотеки....)
Alien_job; +1 Ответить
7. unpete 556 11.08.16 19:16 Сейчас в теме
(6) igo1,
графической схемы взаимодействия с 1с
Спасибо. Я работаю как над кодом, так и над текстом c иллюстрациями. Дополнения будут.

Cразу маленькое уточнение: правильнее говорить не о "схеме взаимодействия с 1С", а о "схеме взаимодействия 1С с базами метадаты".
По отношению к CouchDB, сервер 1С является клиентом. Он пишет в CouchDB и запрашивает изменённые объекты, но не наоборот.
CouchDB стоит в сторонке и никого не трогает.
Когда кому то из клиентов (не важно, браузеру или серверу 1С) захотелось что-то прочитать или записать, клиент формирует запрос, а CouchDB этот запрос исполняет.

И еще одно: к шине данных CouchDB может быть одновременно подключено несколько баз 1С разной структуры (например, торговля и бухгалтерия). При этом, можно формировать индексы по сводной информации из физически разных баз 1С.
8. pahalovo 12.08.16 07:22 Сейчас в теме
А клиенты в браузере делают запросы к CouchDB или к PouchDB?
9. unpete 556 12.08.16 10:01 Сейчас в теме
(8) pahalovo,
клиенты в браузере делают запросы к CouchDB или к PouchDB?
В 99% случаев, конечно, к PouchDB. Такие вызовы вполне можно назвать запросами, хотя физически, они выполняются на клиенте в том же процессе браузера, что и остальное приложение. PouchDB в данном случае обеспечивает высокоуровневый интерфейс к IndexedDB.
10. Makushimo 157 12.08.16 10:27 Сейчас в теме
1. А разработка веб приложения (для себя) должна вестись на каком языке: javaScript ?

2. Получается, что 1С является поставщиком метаданных и данных для CouchDB. Верно?

3. Например, есть некая база 1С. Хочется организовать одновременную работу с ее данными через http-сервисы для 1000+ пользователей
и не хочется покупать 1000+лицензий у 1С

То ваш движок с этим справится, на сколько я понял.

Какая часть этого зоопарка будет принимать на себя 1000+запросов пользователей?
Каким образом данные по этим запросам будут добываться из 1С?
Сколько лицензий 1С при этом будет израсходовано?

4. Не обязательно же делать страницу работы с веб приложением именно такой как у вас на демо? ну чтобы она не была похожа на 1С внешне?
5. Как например быть, если для какой то части информации из 1С один файл html, для других - другой? Это все можно сделать самому и какими средствами?
6. Кроме 1С из всего набора программ и сервисов какие из них платные?
12. unpete 556 12.08.16 11:01 Сейчас в теме
(10) Makushimo,
разработка веб приложения должна вестись на javaScript ?
Да
1С является поставщиком метаданных и данных для CouchDB. Верно?
В основном сценарии - да, но есть варианты
зоопарка будет принимать на себя 1000+запросов пользователей
Во первых, запросов будет на порядок меньше, чем в типовой 1С из-за принципиально другой архитектуры. Обрабатывать эти запросы будет CouchDB. В сложных случаях, может потребоваться дополнительный движок построения индексов на NodeJS, но это должен быть очень нестандартный и очень сильно нагруженный проект
Не обязательно же делать страницу работы с веб приложением именно такой как у вас на демо
Внешний вид можно адаптировать с помощью CSS. Если этого окажется недостаточно, можно полностью переопределить компоненты веб-интерфейса. Это не сложная, но очень объемная работа.
Как например быть, если для какой то части информации из 1С один файл html, для других - другой
Легко. Для разных рабочих мест к одним и тем же или разным данным могут быть разные интерфейсы
Кроме 1С из всего набора программ и сервисов какие из них платные
Посмотрите комментарии в http://infostart.ru/public/535370/
Если ваш проект с открытым кодом - можно никому не платить. Если ваш код закрыт, потребуется несколько коммерческих лицензий.
14. Makushimo 157 12.08.16 11:27 Сейчас в теме
(12)
Во первых, запросов будет на порядок меньше, чем в типовой 1С из-за принципиально другой архитектуры. Обрабатывать эти запросы будет CouchDB. В сложных случаях, может потребоваться дополнительный движок построения индексов на NodeJS, но это должен быть очень нестандартный и очень сильно нагруженный проект


То есть CouchDB будет клоном базы 1С.
А за даными в 1С оно все таки лазит. Тратит ли она лицензии 1С при подключении через http-сервис? Я так полагаю, что как минимум 1 точно тратит.

Внешний вид можно адаптировать с помощью CSS. Если этого окажется недостаточно, можно полностью переопределить компоненты веб-интерфейса. Это не сложная, но очень объемная работа.

то есть сочинять страницу html нужно с использованием данных базы CouchDB?
или например текст страницы сочинить на стороне 1С и хранить ее в виде текста + стили + скрипты в базе 1С, а уже CouchDB заберет себе этот текст и покажет его в виде странички как есть в веб приложении. Я все верно понимаю?


17. unpete 556 12.08.16 12:24 Сейчас в теме
(14) Makushimo,
То есть CouchDB будет клоном базы 1С.
Обычно состав объектов в веб-приложении сильно отличается от 1С-ного. Задачу, где CouchDB будет клоном, представить можно, но это редкий случай.

А за даными в 1С оно все таки лазит
НЕТ см. пост (7)

сочинять страницу html
Лучше, сразу использовать правильную терминологию. Разработчик прикладной задачи ничего про html не знает и в коде html не пишет.
Если потребовался нестандартный компонент, прикладной программист переодевается в костюм веб-дизайнера, садится за другой стол и там рисует овальную кнопку. При этом, забывает всё, что знал про объекты данных.
Важно, чтобы задачи бизнес-логики и дизайна никогда не пересекались. Иначе, возникает го*нокод
mvxyz; user707374_exchang; +2 Ответить
18. Makushimo 157 12.08.16 13:01 Сейчас в теме
(17)
Я подытожу для себя:
1. CouchDB будет клоном не по структуре, а по данным.
Не даром же с обоих концов можно поменять один объект и увидеть сразу (почти) везде эти изменения.
Но инициатором заполнения базы CouchDB является 1С, поэтому ни одной лицензии потрачено не будет.

2. Веб приложение общается не с 1С, а с базой CouchDB

Теперь про примерчик.
Предположим, что производитель некоего товара для огромной армии своих дистрибьюторов создал некую веб морду,
на которой публикует для них разные новости, в том числе о новинках, акциях и прочей не учетной ерунде.
Страницы с текстом этой ерунды могут использовать данные базы 1С.
Веб приложение в этом случае не выглядит как таблица с документами + отчет.
Веб приложение выглядит как сайт с новостями, личным кабинетом и пожалуй все.
На стороне 1С специально обученный человек верстает страницу как ему взбрендит, использует информацию из 1С и складывает
это в регистр или справочник как текст.
в CouchDB 1C отправляет этот текст страницы и всю сопутствующую шелуху (картинки, стили, лист со скриптами).
Веб приложение это все показывает как страницу с новостями например. И актуально изменяет, когда в 1С поместили новый текст страницы.

В личном кабинете пользователь может посмотреть данные о своих заказах, задолженности и личные предложения по скидкам
там же может завести заявку и пр, т.е это уже привычный интерфейс с таблицей + отчет.

Вроде ничего не забыл. ))

Возможно ли такое?
19. unpete 556 12.08.16 14:20 Сейчас в теме
(18) Makushimo,
CouchDB будет клоном не по структуре, а по данным
Уточнения:
  • Один и тот же справочник в CouchDB и 1С может иметь разный состав реквизитов
  • В 1С могут быть объекты, недоступные на сайте
  • На сайте могут быть объекты, которых нет в 1С
  • Из-за RLS, для разных абонентов, в CouchDB могут быть обрезанные данные (например, оплаты и отгрузки только конкретного дилера)

Веб приложение общается не с 1С, а с базой CouchDB
Точнее, с локальной PouchDB браузера, которая постоянно синхронизируется с CouchDB
20. unpete 556 12.08.16 14:44 Сейчас в теме
(18) Makushimo,
специально обученный человек верстает страницу как ему взбрендит

Может, лучше не статическую страницу, а шаблон, в который веб-приложение подставит некие данные, ассоциированные с текущим пользователем?
Вообще, так работают большинство сегодняшних сайтов и использование metadata для этой задачи не даёт ничего нового.
Это, как использовать сложный координатный станок для простого отрезания заготовок, но такую возможность у вас отнять никто не в праве.
Сделать, чтобы запись элемента справочника с текстом приводила к изменению страницы на сайте, конечно, можно.

В личном кабинете пользователь может [...]
УТ11 в качестве 1С-ного back-end подойдёт?
Описанные задачи можно прикрутить к заказам онлайн/оффлайн.
Вопрос (16) был в другом: решение каких элементарных шагов нужно проиллюстрировать?
Проще всего, наверное, будет вести пару дней дневник и записывать в него все действия по проекту
21. Makushimo 157 12.08.16 15:08 Сейчас в теме
(20)

Я понял в чем суть вопроса (16)
В моем примере:
- основная страница выглядит не так как в демке, значит нужно проделать ряд шагов и сделать эту страницу.
Показать как научить ее читать данные о новостях.
Для этого потребуется что-то разрабатывать на JavaScript ?
- интерфейс а-ля 1С спрятан в другой раздел.
это потребует доп разработки? это можно показать наглядно?

Главное начать, а там и подробности появятся.

22. unpete 556 12.08.16 15:55 Сейчас в теме
(21) Makushimo, Ок, нарисую с пошаговыми инструкциями.
13. unpete 556 12.08.16 11:06 Сейчас в теме
(10) Makushimo,
разработка веб приложения должна вестись на javaScript ?
Да, с использованием высокоуровневых объектов, очень похожих на 1С-ные справочники, перечисления и документы. См. описание API Metadata.
11. ValeriTim 20 12.08.16 10:35 Сейчас в теме
Крутотень !!! Добавил в закладки !!!
15. Makushimo 157 12.08.16 11:30 Сейчас в теме
Не до конца понимаю процесс разработки своего веб приложения (не похожее на 1С).
Может это потому, что не знаю, как разрабатывают на JavaScript.
Но все же неплохо было бы увидеть Hello Dev с этой стороны, чтобы было видно работу разработчика в среде разработки.
сделал - посмотрел - переделал - посмотрел - получил результат и т.д

Сможете такой примерчик замутить?
16. unpete 556 12.08.16 12:09 Сейчас в теме
(15) Makushimo,
Сможете такой примерчик замутить?
Конечно.
Вы можете ускорить подготовку такого примера, если придумаете конкретные простые шаги. Не абстрактные "сделал - посмотрел - переделал - получил результат", а внятные задачи, про которые можно написать инструкцию и снять ролик.
23. SmokeAce 12.08.16 16:52 Сейчас в теме
Интересный проект! Хочется познакомится поближе, но не удается авторизоваться в веб-приложение.
Картинку с ошибкой прикрепил. Как понятно из ошибки проблема с авторизацией в hw_0_ram, hw_meta.
Пробовал добавлять новых пользователей, менять пароли и т.д. тщетно. Что я упустил ?
Прикрепленные файлы:
27. unpete 556 12.08.16 19:55 Сейчас в теме
(23) SmokeAce, В вашем случае, не включен CORS. В обработке на закладке регистрации есть кнопка "Включить CORS".
Далее, если получается войти под вашим пользователем в http://localhost:5984/_utils, то и вход в программу должен отрабатывать нормально.
У гостевого пользователя из демо-dt-шки пароль 333
24. Жолтокнижниг 250 12.08.16 17:13 Сейчас в теме
(0) А зачем здесь вообще 1с? Конструктор для создание архитектуры или просто одна из поддерживаемых систем?

Как поведет себя все связка если, мы меняем объект в браузере, записываем, но при записи в 1с возникает ошибка?
Как происходит синхронизация Couch и 1с, если 1с клиент то он сам запрашивает инфу по обновлениям или есть тригеры в коуче, которые пушат клиентам?

Неплохо было бы разъяснить схему синхронизации 1с - metadata, metadata-1с, metadata-metadata (между клиентами)
26. Жолтокнижниг 250 12.08.16 18:34 Сейчас в теме
(24) Жолтокнижниг,
Как происходит синхронизация Couch и 1с, если 1с клиент то он сам запрашивает инфу по обновлениям или есть тригеры в коуче, которые пушат клиентам?
Перечитал описание, нашел инфу
при редактировании в 1С любого объекта, в подписке на событие «при записи», изменения этого объекта отправляются в CouchDB. Происходит подобие «регистрации изменений в плане обмена»
В фоновых заданиях, 1С-ка запрашивает у CouchDB список объектов, изменённых с момента последней синхронизации
29. unpete 556 12.08.16 20:07 Сейчас в теме
(24) Жолтокнижниг,
Как поведет себя все связка если [...]
Это вопрос на несколько длинных лекций. Если пригласят на event - пробегусь по верхушкам.
Пока, предлагаю почитать этот текст: http://docs.couchdb.org/en/1.6.1/intro/consistency.html
33. Жолтокнижниг 250 15.08.16 09:06 Сейчас в теме
(29) Было бы неплохо послушать вас в Колизее. Спасибо вам за труд и хорошие идеи.
30. unpete 556 12.08.16 20:14 Сейчас в теме
(24) Жолтокнижниг,
А зачем здесь вообще 1с?

  • В 1С есть крутые типовые конфигурации и metadata может работать для них поставщиком данных
  • В 1С есть компоновка и регистры, по которым проще строить сложные отчеты, чем по индексам CouchDB
  • На 1С автоматизирована куча рабочих мест. С ней выгоднее интегрироваться, чем конкурировать
25. Жолтокнижниг 250 12.08.16 17:18 Сейчас в теме
(0) Есть вариант работы с 1с напрямую, без Couch?
28. unpete 556 12.08.16 20:00 Сейчас в теме
(25) Жолтокнижниг,
Есть вариант работы с 1с напрямую, без Couch
Есть, но у варианта с прямым подключением ниже надёжность и быстродействие. Ну, и оффлайна, естественно не будет. Если сервер выключить, клиенты работать не смогут.
CouchDB всё равно придется поставить на компьютер программиста, чтобы скрипт сборки проекта заработал.
34. LsrGroup 17.08.16 09:21 Сейчас в теме
Баг в демке при очистке строки поиска по кнопке "X". (справ. Валюты)
38. unpete 556 17.08.16 14:58 Сейчас в теме
(34) LsrGroup,
Баг при очистке строки поиска по кнопке "X". (справ. Валюты)
Наверное, это относится к любым формам списка и выбора. Замечание учту. Суть проблемы: крестик очистки в поле ввода можно нарисовать своим кодом или использовать автоматический, который браузеры добавляют, для <input type="search" ...>
Сейчас для очистки используется встроенный механизм браузера, но он не генерирует события "при изменении".
35. stilet 50 17.08.16 10:05 Сейчас в теме
А можно выложить файл с примером куда нибудь на git? А то для того, чтобы тут скачать файл, нужно около 10000 руб заплатить за абонентку.
36. ardn 100 17.08.16 10:18 Сейчас в теме
(35) stilet,
Или можно выложить свою обработку
37. bong 17.08.16 11:07 Сейчас в теме
Статья, очень интересная, но нужно более вдумчиво изучать.
Спасибо автору.
39. dablack 05.09.16 10:56 Сейчас в теме
Автору спасибо!
Почему вы используете для работы с JSON не встроенный объект ЧтениеJSON, ЗаписьJSON, а работаете с самописным парсером ?
Ведь это потенциально снижает скорость работы?
40. unpete 556 05.09.16 14:00 Сейчас в теме
(39) dablack,
не встроенный объект ЧтениеJSON, ЗаписьJSON, а работаете с самописным парсером ?
Причин много:
Встроенные парсер и сериализотор используются (см. код модуля ИнтеграцияJsonКлиентСервер), но им необходима обёртка для обработки ссылочных и иных типов типов данных, не поддержанных платформой 1С нативно.
Сборки библиотеки интеграции для 8.2 используют полифилл для работы с JSON, в 8.3 задействованы стандартные механизмы.
Библиотека интеграции выполняет много не очевидной, но важной работы: транслирует имена объектов и реквизитов по словарю, трансформирует структуры данных, выполняет дозаполнение реквизитов и табличных частей при экспорте и импорте, обслуживает версионирование couchdb и мн. др.
JSON-сериализация - важная, но очень маленькая часть подсистемы интеграции
41. alexey_asu 09.09.16 11:50 Сейчас в теме
(40) на уровне платформы сериализация ссылочных и прочих типов в JSON производится нативно при помощи объекта СериализаторXDTO

Тема интересная. А точнее подход. В корне отличается от классических подходов интеграции с системой 1С.
42. unpete 556 09.09.16 13:17 Сейчас в теме
(41) alexey_asu, Главная проблема, или даже ошибка, допущенная при проектировании архитектуры metadata.js - сильная связанность движка данных с интерфейсом. Библиотека получилась огромных размеров. Использовать её по кусочкам - почти невозможно. Только целиком (та же проблема актуальна и для платформы 1С)
Опубликован roadmap. Постараюсь в ближайшие месяцы сделать части системы более автономными и отказаться от использования проприетарных библиотек в визуальной части.
45. vandalsvq 1159 13.09.16 21:12 Сейчас в теме
(42), а не хочешь посмотреть в пользу Kendo UI core? Хорошие контролы, бесплатные. Главный недостаток - отсутствие грида (и некоторых других контролов) в опенсорс версии, но грид - это вообще проблема если честно, хорошо реализованных бесплатных днем с огнем сложно найти ((((((
46. unpete 556 13.09.16 21:36 Сейчас в теме
(45) vandalsvq,
посмотреть в пользу Kendo UI core
Начиная работу над metadata.js (2014 год), я проанализировал более 10 ui-библиотек, Kendo в том числе. dhtmlx на тот момент показался наиболее подходящим.
На сегодня, использовать для ui библиотеки, напрямую манипулирующие dom - не очень целесообразно.
jsx гораздо выразительнее и эффективнее. metadata v2 разрабатывается в react-стилистике.
Еще, замечание: metadata вообще то не про интерфейс, а про обработку данных в javascript в стиле 1С.
Наличие ui - побочный эффект. Данные ведь надо показывать и как то обрабатывать ввод пользователя.
43. unpete 556 09.09.16 13:20 Сейчас в теме
(41) alexey_asu,
сериализация ссылочных и прочих типов в JSON производится нативно при помощи объекта СериализаторXDTO

Это очевидно, но metadata.js использует не тупой слепок 1С-ного объекта, а более сложную структуру
44. vandalsvq 1159 13.09.16 21:08 Сейчас в теме
(0), хорошая статья, особенно для тех кто решил "прыгнуть в омут с головой" ))))
Вопрос по работе с CouchDB, я так понимаю пока особо вопрос ревизий не беспокоит? В плане того что их удалить не так то просто. Понимаю, что это возможно никогда и не станет проблемой, но это чуть ли не первый вопрос, который волнует многих кто берет коуч, а не монго например (у того свои траблы есть конечно).

А вообще большое спасибо за труды. И за metadata.js - хорошая разработка. Особенно радуют планы на версию 2. Удачи в разработке.
47. unpete 556 13.09.16 21:50 Сейчас в теме
(44) vandalsvq,
вопрос ревизий не беспокоит
Версионирование из коробки - это очень круто. В 1С о таком можно только мечтать.
Что касается места на диске, в моих реальных задачах его хватает.
Чтобы ограничить аппетиты CouchDB, есть/db/_revs_limit
Еще, есть /db/_compact - на больших данных может создавать тормоза
А еще, базу можно пересоздать на лету и прибить исходную - получим автоматическое сжатие.
49. vandalsvq 1159 13.09.16 22:21 Сейчас в теме
(47) на самом деле вопрос ревизий он скорее "ни о чем", просто хотелось услышать мнение. Вообще не уверен что в 1С возможно наличие документов (в понимании couchdb) с множеством ревизий. Сама особенность работы такова, что в основном она идет вперед, а не топчется на месте изменяя один и тот же документ. Т.е. скорее будет создано несколько тысяч новых, чем несколько тысяч раз изменен единственный. В своих задачах пока о ревизиях вообще не заботился, просто периодически заново создаю базы данных.
(46) честно скажу мне не знакома "react - стилистика". Так что даже интересно что будет в 2.0. Остальное спрошу в ЛС.
50. unpete 556 14.09.16 07:50 Сейчас в теме
(49) vandalsvq,
не знакома "react - стилистика"
Порог вхождения в React и Redux повыше, чем в ангуляре и прочих традиционных фреймворках. За 10 часов не освоить, но результат того стоит. Рекомендую потратить время на изучение этих технологий.
51. vandalsvq 1159 14.09.16 10:43 Сейчас в теме
(50) ну Angular за 10 часов мне лично освоить не удалось, ну если не считать банальную задачу вроде "todo-list". Может я просто туговат )))))
На досуге выделю время на изучение. Лишним никогда не будет увидеть "что-то другое".
52. unpete 556 14.09.16 13:13 Сейчас в теме
(51) vandalsvq,
Лишним никогда не будет увидеть "что-то другое"
Разница в подходах принципиальная:
  • Ангуляр и прочие шаблонизаторы - это html, к кторому подтянут javascript
  • React JSX - это javascript, в который внедрен html
48. unpete 556 13.09.16 22:01 Сейчас в теме
организовать одновременную работу с данными 1С через http-сервисы для 1000+ пользователей и не хочется покупать 1000+лицензий у 1С
Решил этот тезис еще раз прокомментировать:
Если вас и заказчика устраивает надежность, производительность и функциональность традиционной платформы 1С, будет проще достать из кармана нужную сумму и купить эти 1000+ лицензий.
Смотреть в сторону metadata имеет смысл в том случае, если нужна экстремальная надежность, высокая производительность или сложный интерфейс.
53. dablack 17.09.16 19:06 Сейчас в теме
CouchDB - супер. Знал бы раньше точно бы в нескольких задачах использовал, Но не понравилось в CouchDB, то, что для обновления данных какого либо документа необходимо кроме его _id указать _rev и насколько я понял ни как иначе, с _id то проблем нет это 1ский GUID а вот с _rev приходиться повозиться.
Я конечно прекрасно понимаю, что это для репликации, но если мне под конкретную задачу не нужна репликация, а нужно просто быстро обновлять данные в документах. А то приходиться сначала сделать запрос получив все _rev потом, а уже потом только делать запрос с обновлением.
В связи с этим вопрос к Евгению. Ведь конечно не очень хорошо делать так как в вашей демо лайт конфигурации, вешать на подписчика "ПриЗаписи" все это движение с синхронныим HTTP запросами.
И вы в комментарии в коде написали:
// TODO: Возможно, для ускорения стоит реализовать асинхронную прослойку в NODEJS?
Скажите, не реализовывали пока такую прослойку ?
54. unpete 556 17.09.16 23:49 Сейчас в теме
(53) dablack,
приходиться сначала сделать запрос получив все _rev
_rev хорош не только для репликации. Он просветляет картину мира.
Скажите, не реализовывали пока такую прослойку
Реализация тривиальная, но в моих задачах нужна именно синхронная запись с Отказ=Ложь, если записать не удалось.
Синхронизация с CouchDB внутри 1С-ной транзакции гарантирует идентичность данных.
На моих серверах, запись занимает 20-100 мс, что на порядок быстрее обычной записи 1С-ного документа.
Серверы 1С и CouchDB желательно размещать в одной подсети и синхронизировать с большим Интернетом, а не пытаться писать сразу из 1С на удаленный CouchDB
55. unpete 556 18.09.16 12:13 Сейчас в теме
(53) dablack,
указать _rev и насколько я понял ни как иначе
Если в вашей задаче гарантировано не требуется анализ _rev, можно добавить в design document update-функцию и рассчитать недостающие поля на сервере. Подробнее см.: http://wiki.apache.org/couchdb/Document_Update_Handlers
вешать на подписчика "ПриЗаписи" все это движение с синхронныим HTTP запросами
CouchDB можно рассматривать, как регистр или план обмена, только, расположенный не внутри, а снаружи 1С. Вас ведь не смущает, когда документ при проведении шевелит десяток регистров. Metadata добавляет к этому десятку еще один скромный набор данных
56. 33lab 518 19.09.16 09:41 Сейчас в теме
(55) unpete
Заинтересовала CouchDB отсюда возникло пару вопросов:

1.
В фоновых заданиях, 1С-ка запрашивает у CouchDB список объектов, изменённых с момента последней синхронизации, читает и записывает изменённые объекты.


С помощью "_changes" можно получить список изменений документов, как из него исключить документы которые уже были синхронизированы с 1С ?

2. Каким образом синхронизируются данные когда одновременно правится документ в 1С и в браузере
57. unpete 556 19.09.16 12:26 Сейчас в теме
(56) 33lab,
как исключить документы которые уже были синхронизированы с 1С
У запроса _changes есть параметр since, в который следует передать номер последнего засинхронизированного изменения
Каким образом синхронизируются данные когда одновременно правится документ в 1С и в браузере
По умолчанию: кто последний, тот и прав.
При необходимости, вы можете реализовать сколь угодно сложный конфликт-резольвер. Можно объединять изменения, блокировать объект, как в 1С или синхронно обновлять поля, как в google-docs
58. 33lab 518 19.09.16 13:51 Сейчас в теме
59. mdy 19.09.16 22:20 Сейчас в теме
Пытался запусти клиента на apple устройствах (ios 8-9).
Не взлетел ни на одном из основных браузеров, включая и встроенный сафари.
Висит на логине. Обращался к Вашему демо примеру.
60. unpete 556 19.09.16 22:42 Сейчас в теме
(59) mdy, Благодарю за информацию. Возьму у дочери iPhone - посмотрю, в чем проблема.
Все библиотеки, входящие в состав metadata.js совместимы с iOs и OSx, но тестировал их только под windows, linux и android.
61. unpete 556 20.09.16 18:31 Сейчас в теме
(59) mdy,
Пытался на apple устройствах (ios 8-9)
Проверил на iPhone5 - работает без проблем и в онлайн, и в оффлайн режиме. Для предметного анализа, просьба выслать лог сообщений об ошибках из консоли браузера
62. s_vidyakin 06.10.16 16:33 Сейчас в теме
Я так понял, что для работы на клиенте с формой документа идентичной 1С-ной нужно весь код формы 1С перевести и переписать на JS ?
Например мне нужно ускорить работу с вводом документов в ERP, чтоб не тормозило дико по минуте каждое сохранение, но и интерфейс был тот же.
Надо окно того же вида и с той же логикой. Получается я должен пару тысяч строк и десятков процедур переписать на JS?
63. unpete 556 06.10.16 21:00 Сейчас в теме
(62) badboychik,
чтоб не тормозило [...] но и интерфейс был тот же
Копировать 1С-ные формы - плохая идея. Следуя этим путём, проблем производительности вы, скорее всего, не решите. Предлагается не переписывать миллион строчек, а посмотреть на задачу с учетом новых инструментов. Может оказаться, что она вообще без кодирования решается.
64. s_vidyakin 07.10.16 10:32 Сейчас в теме
(63) тормоза в процедуре проведения, поэтому если документ сохранять в быстрой БД по вашему сценарию, проблем не будет. Только надо интерфейс тот же оставить
65. unpete 556 07.10.16 13:54 Сейчас в теме
(64) badboychik,
Только надо интерфейс тот же оставить
Я привык во всём сомневаться. Из того, что неким интерфейсом пользуются четыре поколения операторов и считают этот интерфейс идеальным вовсе не следует, что его нельзя улучшить.
66. s_vidyakin 07.10.16 14:34 Сейчас в теме
(65) хорошо, пока что очень жду версию 2.0 на реакте, потом буду дальше думать, чувствую это будет бомба для шустрых АРМ ))
67. OldthiefXXX 151 09.10.16 17:57 Сейчас в теме
Вопрос а как запустить только ядро без всего UI? Или ждем 2.0?
68. unpete 556 10.10.16 02:00 Сейчас в теме
(67) OldthiefXXX,
как запустить только ядро без всего UI
Сборка без UI доступна с начала времён - в v0.11 это файл metadata.core.js из пакета metadata-js.
В v2 ядро совсем маленькое. Интерфейсную шелуху и функциональность, зависящую от поставщика данных решено вынести в плагины. На текущий момент, для ознакомления доступны:
Пример подключения:
import MetaEngine from 'metadata-core'
import metadata_pouchdb from 'metadata-pouchdb'
import metadata_redux from 'metadata-redux'
MetaEngine
  .plugin(metadata_pouchdb) // connect pouchdb-adapter to metadata-core 
  .plugin(metadata_redux)   // connect redux-actions to metadata-core 
const $p = new MetaEngine()

69. Гость 12.10.16 17:08
Добрый день, Евгений.
Развернул систему на 3-х разных серверах: 1С - Win2012, Nginx - Linux1, CouchDB - Linux2.
Попытка 1:
- загрузил демо конфигурацию 1С. Создались базы в CouchDB, данные вижу.
- прописал сетевой путь к CouchDB в package.json проекта metadata (Nginx). Пересобрал проект.
При попытке зайти браузером видно только окно ввода логина/пароля. Дальше ничего не происходит. Не заходит ни под Гость, ни под добавленными пользователями.

Попытка 2:
- создал пустую конфигурацию из БСП и integration_light_2_3_0_217.cf
- добавил новый справочник. Создались базы CouchDB, данные нового справочника вижу.
- пересобрал проект. Изначально была ошибка. У вас в integration_light_2_3_0_217.cf в макете _design_meta обработки ИнтеграцияПанельАдминистрирования не прописано создание объекта meta_patch в базе meta. Добавил, пересобралось успешно. В ./tmp/prebuild.js виден добавленный справочник.
- При попытке зайти браузером видно только окно ввода логина/пароля. Дальше ничего не происходит.

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

Подскажите пожалуйста, в чем может быть причина и на что обратить внимание?
70. unpete 556 12.10.16 20:45 Сейчас в теме
(69) Михаил,
Не заходит ни под Гость, ни под добавленными пользователями
В консоли браузера должны быть видны либо ошибки сети, либо ошибки js. Маловероятно, чтобы при авторизации система молча ничего не делала
в макете _design_meta не прописано создание объекта meta_patch
Ошибку признаю - исправлено в актуальной версии. Обращение к базе meta происходит только при пересборке ./tmp/prebuild.js. Полагаю, если человек добрался до изменения метаданных, он увидит 404 при отладке prebuild.js
обращение к базе только в момент открытия окна авторизации. После этого никаких действий в ней при вводе логина не происходит

  • Чему равны значения параметров сеанса zone и zone_demo? (посмотреть можно в localStorage)
  • Какая используется версия metafata.js? (узнать можно набрав $p.version в консоли браузера)
  • Предлагаю поставить точки останова в функциях $p.iface.frm_auth и auth_click или просто сказать браузеру "останавливайся на всех ошибках" и посмотреть проблемное место в отладчике
71. miksomov 13.10.16 13:51 Сейчас в теме
Спасибо за ответ.
Вот данные:

В консоли браузера должны быть видны либо ошибки сети, либо ошибки js

При загрузке страницы в консоли видна одна ошибка: "app.min.js:4 Uncaught TypeError: Cannot read property '__define' of undefined"

Чему равны значения параметров сеанса zone и zone_demo? (посмотреть можно в localStorage)

Задан только параметр zone - 0. Параметра zone_demo в localStorage нет. Из всех там присутствующих заданы еще browser_uid и skin.

Какая используется версия metafata.js

0.11.220 - устанавливал через npm

Предлагаю поставить точки останова в функциях $p.iface.frm_auth и auth_click

Функция auth_click отсутствует.

При нажатии кнопки Войти в консоли Chrome видны вот такие ошибки:

GET http://10.26.1.15:5984/hw_0_doc/_local/dxaE34OVSBNyEKh3Z4DyFA%3D%3D? 404 (Object Not Found)
10.26.1.15:5984/hw_0_doc/_local/dxaE34OVSBNyEKh3Z4DyFA%3D%3D?:1

GET http://10.26.1.15:5984/hw_0_doc/_local/dxaE34OVSBNyEKh3Z4DyFA%3D%3D? 404 (Object Not Found)
momentjs@2.14,alasql@0.3,pouchdb@6.0,jquery@2.2,metadata@0.11.220(dhtmlx.min.js+metadata.min.js):519
/* это позиция 20939 в строке 519: "n.send(e.body)" */

GET http://10.26.1.15:5984/hw_0_doc/_local/loOTT55eUP0rg0SplTLI7g%3D%3D? 404 (Object Not Found)
10.26.1.15:5984/hw_0_doc/_local/loOTT55eUP0rg0SplTLI7g%3D%3D?:1

GET http://10.26.1.15:5984/hw_0_ram/_local/3Cf0ypm9lHniSkfHOKA5Mg%3D%3D? 404 (Object Not Found)
10.26.1.15:5984/hw_0_ram/_local/3Cf0ypm9lHniSkfHOKA5Mg%3D%3D?:1

Для последних 3-х ошибок следует сообщение:
The above 404 is totally normal. PouchDB is just checking if a remote checkpoint exists.

В консоли Firefox таких ошибок не видно и действий тоже никаких.

Также есть обратная ситуация:

1. в Firefox при нажатии Настройки отображаются настройки за окном авторизации, но в консоли видна ошибка: ReferenceError: event is not defined
InterfaceObjs/this.cancel_bubble()
momentjs@2.14,alasql@0.3,pouchdb@6.0,jquery@2.2,metadata@0.11.220(dhtmlx.min.js+metadata.min.js):576
$p.iface.open_settings()
momentjs@2.14,alasql@0.3,pouchdb@6.0,jquery@2.2,metadata@0.11.220(dhtmlx.min.js+metadata.min.js):581
onclick()

2. В Chrome при нажатии Настройки ничего не происходит. Ни в консоли нет сообщений, ни отображения окна настроек.
72. unpete 556 13.10.16 18:44 Сейчас в теме
(71) miksomov,
app.min.js:4 Uncaught TypeError: Cannot read property '__define' of undefined
С этим местом надо разобраться. Бессмысленно нажимать на кнопки, пока '__define' is undefined
Функция auth_click отсутствует
Для целей отладки, в infex.html вместо metadata.min.js можно указать metadata.js - отлаживать станет намного удобнее.
Затрудняюсь сказать что-то полезное не видя вашего кода.
Предлагаю сделать либо публичный git, либо пример в https://jsfiddle.net/
73. miksomov 13.10.16 19:22 Сейчас в теме
Опишите пожалуйста, что нужно сделать конкретно для этого. Я не работал с публикациями git, как и с https://jsfiddle.net/.
Что именно и как нужно выложить для просмотра.

Хочу обратить внимание - проект метадаты лежит на линуксе.
Я заметил особенность поведения nodejs разных версий. Например, если использовать версию 6.6.*, то npm некорректно загружает пакет memdown для pouchdb-adapter-memory - отсутствует собственно описание точки входа. Для nodejs версии 4.6.* такой проблемы нет.
Также при загрузке метадаты необходимы установленные gcc/gcc-c++, т.к. происходит компиляция модуля leweldown.
Может эти ошибки как-то связаны с тем, что nodejs под виндовс загружает другие модули?

С этим местом надо разобраться. Бессмысленно нажимать на кнопки, пока '__define' is undefined

Как с этим разбираться?
74. unpete 556 13.10.16 23:44 Сейчас в теме
(73) miksomov,
проект метадаты лежит на линуксе [...] если использовать версию 6.6.*, то npm [...] загружает другие модули
Для работы в браузере всё перечисленное не имеет совсем никакого значения. Пакеты в node_modules нужны только для компиляции описания метаданных либо, если метадата используется на сервере.
Проблемы с компиляцией memdown и leveldown при установке pouchdb известны. На них можно не обращать внимания. В работе эти плагины не используются.
не работал с git и jsfiddle
Если нужна помощь, организуйте мне доступ к файлам проекта и couchdb любым удобным для вас способом - ssh, rdp или иной протокол.
Git рекомендую попробовать - он очень удобен для версионирования и коллективной разработки.
75. miksomov 15.10.16 19:21 Сейчас в теме
(74)
Доступ при необходимости организуем.

Пока сделал следующее:

1. На отдельном win сервере развернул все локально (CouchDB, Nginx, metadata, 1C).
Демо-пример заработал.
Попытался добавить свой справочник "Тестовый справочник". Прописал в определяемые типы интеграции. Обновил meta и данные в CouchDB. В самих базах hw_ новый справочник и его данные видны.
Пересобрал метадату.
В web-интерфейсе демо нет ни справочника ни соответственно его данных.
Какая должны быть последовательность действий при добавлении нового объекта и возможно ли это в демо-примере?

2. Создал пустую базу на основе БСП и последней конфигурации с сайта integration_light_2_3_1_220.
Добавил новый справочник, прописал ... выгрузил в отдельную базу CouchDB (с другим префиксом)
Создал для этого новый проект метадаты, пересобрал.
При входе в web-интерфейс - ошибка: "app.min.js:4 Uncaught TypeError: Cannot read property '__define' of undefined(…)". Ошибка происходит в функции $p.cat.users_acl.__define.... модуля app.min.js
Я так понимаю, в демо-примере заполнено что-то еще, чего нет в предлагаемой для интеграции конфигурации.
Какие должны быть действия для создания своего демо-примера на основе пустой конфигурации?
Могли бы вы у себя повторить мои действия по созданию нового демо-примера с нуля?

Мне необходимо в итоге создать демо на своей базе со своими данными для демонстрации возможностей пользователям. Для начала нужно увидеть нормальное создание с пустой базы и добавление произвольных объектов.

3. Выгрузил конфигурацию из демопримера. Создал из нее новую базу без данных. Выгрузил в CouchDB и пересобрал метадату (для нового префикса). Через web заходит нормально - вижу справочники пустые. Добавил новый справочник (выгрузил, пересобрал...) - в web-интерфейсе он так и не появился.
76. unpete 556 15.10.16 23:52 Сейчас в теме
(75) miksomov,
Я так понимаю, в демо-примере заполнено что-то еще, чего нет в предлагаемой для интеграции конфигурации
Восхищен вашим упорством в отладке.
$p.cat.users_acl - Это справочник ИнтеграцияПраваПользователей - редактируется из формы справочника Пользователи. Для каждого пользователя сервиса должна существовать запись в справочнике ИнтеграцияПраваПользователей.
Скорее всего, ваша гипотеза про недозаполненность верна и касается она данных, а не кода.
Обсуждение, наверное, правильнее вести в https://github.com/oknosoft/metadata.js/issues
Добавил новый справочник (выгрузил, пересобрал...) - в web-интерфейсе он так и не появился

На самом деле, появился. если в консоли браузера набрать $p.cat.имявашегосправочника.form_list() - должна открыться форма справочника.
Для лучшего понимания, поставьте точку останова в функции All_meta_objs(). Так же, имеет смысл прорешать примеры из codex.
77. miksomov 17.10.16 20:12 Сейчас в теме
Итак, у меня все получилось. Ура!

Выкладываю последовательность действий для создания СВОЕГО примера и дальнейшей интеграции в реальную систему.

1. Создаем конфигурацию из БСП + Конфигурация Метадаты. В моем случае integration_light_2_3_1_220. При объединении выключить объекты БСП, которые пытается заместить конфигурация метадаты - я так понимаю из-за различия версий БСП.
2. В определяемых типах ИнтеграцияОбъект и ИнтеграцияСсылка ставим флажки объектов БСП и Метадаты как в демо-конфигурации.
3. В макете _design_doc обработки ИнтеграцияПанельАдминистрирования удаляем код связанный с cash_moving (это документ из демо-примера, он не нужен)
4. В макет _design_meta обработки ИнтеграцияПанельАдминистрирования добавляем код по созданию объекта meta_patch из демо-конфигурации. Область "doc": {"cash_moving"... пока оставляем.
5. В форме обработки ИнтеграцияПанельАдминистрирования в процедуре ЗаполнитьИзТабличногоДокумента указываем ИмяМакета = "МетадатаДемо", т.к. наша конфигурация называется совсем по другому. Или создать свой макет скопировав "МетадатаДемо" и присвоив ему имя конфигурации.
6. В общем модуле ИнтеграцияПереопределяемый в функцию НачальноеЗаполнение вставляем код из конфигурации демо-примера функции НачальноеЗаполнение общего модуля ИнтеграцияМетадатаДемо.
7. Добавляем справочники и документы, которые хотим увидеть в метадате. Прописываем их в определяемых типах ИнтеграцияОбъект и ИнтеграцияСсылка.
8. В макете _design_meta обработки ИнтеграцияПанельАдминистрирования меняем код области "doc" - переименовывем "cash_moving" в "<Название нашего документа>" и оставляем поля "date", "number_doc". Это форма списка. Если не будет хоть одной формы для списка документов - будет ошибка. Можно задать для данного документа вывод других полей, но тогда на форме других документов эти поля будут неотображаемые, но ширина формы останется. Как задать форму по умолчанию для любых документов пока не разобрался.
9. Загружаемся в приложение 1С. Обновляем справочник ИдентификаторыОбъектовМетаданных чтобы увидеть наши добавления. Можно сразу создать какие-то элементы в добавленных объектах. В справочнике пользователей переходим у нужных для метадаты на "Объекты доступа (RLS)" и нажимаем "Сохранить" (пока без добавления объектов) - вроде как должна быть прописка в доп.справочнике.
10. В обработке Интеграция на закладке Метаданные добавляем наши объекты. Можно прописать их в макете из п.5.
11. Создаем базу CouchDB со своим префиксом (например mt_, вроде как "My Test"), записываем "meta".
12. В начальном заполнении (в текущей конфигурации кнопка "Заполнить" на закладке "Регистрация") добавляем свои созданные элементы (если создавали).
13. Регистрируем в CouchDB
14. Переходим в Nginx. Создаем каталог для проекта. Подразумевается, что nodejs и metada-js уже установлены глобально. Выполняем команды metadata init, npm install, npm install through2, npm install gulp-util.
15. Меняем файл package.json - прописываем свой префикс (например "mt_" из п.11). Если CouchDB не расположена локально - путь.
16. В подкаталогах проекта ./src/modifiers/ удаляем файлы *cash_moving*.js. Это модули для демо-примера - они мешают и с ними не заработает.
17. Пересобираем проект - gulp full.
18. Наслаждаемся своими данными в web-интерфейсе. ))
19. До отчетов и обратной синхронизации пока не добрался.

Важно: после любой пересборки проекта в Chrome надо удалять данные о просмотренных страницах. Он почему-то много кэширует.

Евгений, на текущий момент такие вопросы:
1. Как задать форму списка для документов по умолчанию? Т.е. не для одного документа, как я сделал сейчас и она для всех остальных работает.
2. Как в принципе редактировать форму документа. Надо ли писать свою обработку, которая будет переопределять код формы в CouchDB или уже есть какие-то механизмы? Сейчас изменение макета _design_meta не меняет уже созданную форму.

P.S. Надеюсь в новой версии конфигурации для интеграции будут учтены изменения которые я привел.
Также из проекта скачиваемого npm лучше удалить преднастройки для демо-примера - это как-то неправильно.
78. unpete 556 17.10.16 21:22 Сейчас в теме
(77) miksomov, На стороне 1С в модулях ИнтеграцияПереопределяемый и ИнтеграцияПереопределяемыйКлиент есть процедуры для трансформации данных и метаданных при загрузке и выгрузке. Для демо-задачи это не существенно, но в реальной жизни без модификаторов не обойтись.
11. Создаем базу CouchDB со своим префиксом
По замыслу, базы создаются командой "настроить CouchDB" обработки интеграции
16. В подкаталогах проекта ./src/modifiers/ удаляем файлы *cash_moving*.js
Удаляем и размещаем свои модули объектов и менеджеров, если того требует бизнес-логика
удалять данные о просмотренных страницах. Он почему-то много кэширует
Проверьте файл cache.appcache. Отключить appcache можно в шапке index.html, заменив <html manifest='cache.appcache' lang='ru'> на <html lang='ru'>
Как задать форму списка для документов по умолчанию?
Вопрос не понял. У объектов есть автоформы. В автоформах учтены настройки meta и meta_patch. Дополнительно, можно написать индивидуальную форму для любого объекта. Эту форму можно либо разработать с нуля, либо унаследовать от автоформы и дописать модификаторы
изменение макета _design_meta не меняет уже созданную форму
_design_meta обрабатываются скриптом gulp prebuild и отражаются в файле tmp\prebuild.js, который объединяется с остальными *.js при сборке проекта.
Надеюсь в новой версии конфигурации для интеграции будут учтены изменения которые я привел
присылайте pull request
79. miksomov 17.10.16 22:36 Сейчас в теме
(78)
По замыслу, базы создаются командой "настроить CouchDB" обработки интеграции


Я подразумевал, что все действия происходят после прочтения вашей статьи. И это само собой разумеется.

Удаляем и размещаем свои модули объектов и менеджеров, если того требует бизнес-логика


Согласен. Но зачем при первичной загрузке модулей метадаты я вижу модификаторы объектов демо-версии? В моей базе нет ни касс, ни движений денег. При загрузке того же самого gulp мне не валятся демо примеры, которые потом надо удалить. чтобы он заработал.

Вопрос не понял. У объектов есть автоформы

Если в базе meta для объекта doc не казана хоть какая-нибудь форма списка - список документов (именно ссылок) не отображается - ошибки валятся.
Об этом и вопрос. Для одного документа задал - все остальные тоже нормально отображаются, но на форме видно, что ширина задана с учетом полей прописанного документа. Можно для каждого свой список задать - это не вопрос.

_design_meta обрабатываются скриптом gulp prebuild


Речь о том, что изменение этого макета в 1С после уже готовой регистрации в CouchDB не меняет форму. Т.е. например, я создал форму списка документа с 2-мя полями. Все это распространил в метедату. Потом решил добавить пару полей в список, но форма не поменялась после пересборки проекта. Если файлы проекта удалить и создать заново - вижу свои поля.

присылайте pull request

Я ж здесь все выложил. Вы уж сами определяйте что из этого полезно для внесения изменений.
80. unpete 556 18.10.16 07:49 Сейчас в теме
(79) miksomov,
Изменение этого макета в 1С после уже готовой регистрации в CouchDB не меняет форму
_design_meta обычно редактируют в futon couchdb. Данные _design документов продублированы в 1С, чтобы упростить развёртывание на новый сервер
81. miksomov 20.10.16 19:29 Сейчас в теме
Евгений, спасибо за оперативные ответы на вопросы.

Сейчас пытаюсь нарисовать простенький отчет на своих данных.
Столкнулся с небольшой проблемой: как во view посчитать сумму по колонке табличной части документа?
Если в map function пытаюсь прописать "emit([Number(d[0]),Number(d[1]),Number(d[2]),doc.Заказчик],{Товары: sum(doc.goods.amount)});" то получаю всегда 0.
Если обратиться по индексу (например, "emit([Number(d[0]),Number(d[1]),Number(d[2]),doc.Заказчик],{Товары: doc.goods[0].amount});") , то сумма строки видна.
Подскажите пожалуйста как правильно использовать агрегатные функции в данном случае?
82. unpete 556 20.10.16 23:34 Сейчас в теме
(81) miksomov, Посмотрите в сторону Reduce
83. miksomov 21.10.16 13:52 Сейчас в теме
(82)
Да, это я конечно смотрел. Но reduce, как пишут в мануалах, обрабатывает результаты рассчитанные в map. Т.е. сумма колонки табличной части должны быть вычислена в map. Пока получилось только расчетом в цикле. Думал, может есть какие-то готовые агрегатные функции для этого.
84. unpete 556 21.10.16 19:08 Сейчас в теме
(83) miksomov,
[1,2,3].reduce(function(sum, current) {  return sum + current;}, 0) // = 6 (сумма элементов массива)
86. miksomov 22.10.16 12:49 Сейчас в теме
(84)
Спасибо за подсказку. Я не так понял про reduce.

Теперь нарисовалась следующая проблема:
Я загрузил в метадату порядка 100 тысяч документов. И после этого журнал документов перестал открываться вообще. В консоли такие ошибки:
Database has a global failure DOMException: An attempt was made to add something to storage that exceeded the quota.
Failed to load resource: net::ERR_CONNECTION_RESET http://.....:5984/db_0_ram/_bulk_get?revs=true

Как это поправить?

Также при входе в программу теперь происходит жутко долгая синхронизация, которая на некоторых компьютерах просто зависает. Можно ли ее как-то отключить?

И еще - могли бы вы привести пожалуйста код отчета "Движение денег" где можно было бы посмотреть реализацию элементов управления:
1. Редактируемый Grid списка касс, в котором в ячейке можно выбрать произвольную кассу из справочника.
2. Отдельный элемент (OCombo видимо) в котором можно было бы выбрать кассу.
Интересует именно создание элементов. В примерах Codex работы с Grid нет, а пример OCombo повторить не удается - не устанавливается тип справочника.
88. unpete 556 22.10.16 16:33 Сейчас в теме
(86) miksomov,
порядка 100 тысяч документов
metadata умеет работать с десятками миллионов документов без видимых задержек со стороны интерфейса пользователя
exceeded the quota
Если браузер safari - нужны актуальная 10-я версия. Chrome и FF разрешают использовать под indexeddb 1/2 размера диска, но специальными настройками, это значение можно увеличить
зачем такой длинный список в ram??? может, лучше его положить в doc c фильтрованной репликацией или в remote?
жутко долгая синхронизация
не синхронизация, а чтение всех объектов базы ram в озу браузера
код отчета "Движение денег"
100% исходников уже есть на вашем компьютере см. папку scr - она изобилует комментариями
89. miksomov 22.10.16 17:11 Сейчас в теме
(88)
metadata умеет работать с десятками миллионов документов без видимых задержек со стороны интерфейса пользователя

Может и умеет. Пока я увидел, что когда были загружены документы одного месяца, то список открывался долго и получалось 1500 страниц. Т.е. ВСЕ документы загружались в таблицу, как я понял.
У меня список документов не открывается возможно из-за этого. Использую Chrom. Может какие-то параметры где-то указать, чтобы не читал полностью все документы?

зачем такой длинный список в ram???

Это справочники. Согласно рекомендациям разместил их в ram. Попробую переложить в doc_remote.

100% исходников уже есть на вашем компьютере см. папку scr - она изобилует комментариями

Исходники это здорово, а живой пример другое. Можно исходники неделями лопатить в поисках одной строчки. Я же писал: "пример OCombo из Codex повторить не удается - не устанавливается тип справочника.".
Поэтому прошу привести такой пример на существующем отчете. Логику переделывать не надо, просто элементы управления.
90. unpete 556 22.10.16 23:05 Сейчас в теме
(89) miksomov, До конца месяца занят подготовкой к докладу и мастер-классам на инфостарт event и собственно, участием в конференции. Отвечу в первых числах ноября.
Согласно рекомендациям разместил их в ram. Попробую переложить в doc_remote
Главная рекомендация: не следовать рекомендациям, но принимать их к сведению.
При выборе типа кеширования (ram, doc, doc_remote, remote, meta, e1cib и pgsql) для каждого объекта метаданных нужно учитывать множество факторов.
Тип кеширования - это только вершина айсберга. Еще есть свёртка, функция фильтрованной репликации, сервисворкеры для фоновой репликации и мн. др.
91. miksomov 23.10.16 13:40 Сейчас в теме
(90)
Евгений, я сейчас подготавливаю презентацию для бизнеса, чтобы было принято решение - использовать ваш продукт или нет. Для этого необходимо показать наши живые данные - 2 документа загруженных за текущий год и простенький отчет по ним. И меня тоже поджимают сроки.
Отсюда все мои вопросы.
Я перезагрузил все (справочники и документы) в doc_remote за 1 месяц. Синхронизация в начале исчезла - это хорошо.
Но документы открываются очень долго - список всех документов загружается в таблицу. Вижу "Записи с 1 по 30 из 9887". Я так понимаю, если я загружу еще 9 месяцев, то журнал документов открыться не сможет. Что нужно сделать, чтобы была возможность просматривать журнал с "с десятками миллионов документов без видимых задержек со стороны интерфейса пользователя". Сейчас такие тормоза я не могу показывать бизнесу - никого такое не заинтересует.
Также, если есть возможность, постарайтесь выделить несколько минут для приведения примера по элементам управления в отчете. Я думаю, вам как разработчику, это сделать достаточно просто и быстро.
92. unpete 556 23.10.16 17:24 Сейчас в теме
(91) miksomov,
Сейчас такие тормоза я не могу показывать бизнесу
Работа с миллионом записей:

для бизнеса, чтобы было принято решение
На заглавной странице http://mybootstrap.ru/ написано: "Вам нужны причины любить Bootstrap? Тогда не смотрите дальше"
Если ваш "бизнес" знает, как построить серьезный веб-сервис без метадаты - флаг им в руки - путь рисуют на других платформах.
93. miksomov 24.10.16 14:14 Сейчас в теме
(92)

1. Евгений, при покупке коммерческой лицензии в каком объеме осуществляется тех.поддержка?

2. Пример с миллионным справочником некорректный - отдельно написанная форма для динамического списка. Из метадаты там почти нечего нет. Я правильно понял, что автоформы списков не поддерживают динамическое считывание? Мне ведь тоже нужно создать максимально простой пример на автоформах, а не выдать конечное решение со своими написанными формами.

3.
как построить серьезный веб-сервис без метадаты

Например накупить тучу лицензий у 1С для web.
Тот же пример справочника с миллионом записей можно построить без метадаты - напрямую читая CouchDB.
94. unpete 556 24.10.16 18:00 Сейчас в теме
(93) miksomov,
Из метадаты там почти нечего нет
Из метадаты там всё - под миллионным справочником лежит элемент управления DataList из пакета metadata-react-ui. Официального релиза metadata v2, действительно, пока не было, но никто не в силах запретить мне использовать библиотеки и компоненты второй версии в демо-примерах и реальных проектах.
при покупке коммерческой лицензии в каком объеме осуществляется тех.поддержка?
metadata v2 выпускается под mit - соответственно, покупать лицензию не требуется.
Условия предоставления услуг описаны в оферте
накупить тучу лицензий у 1С для web
если для вашей задачи не нужен автономный режим и (или) сложные интерфейсы - будет проще купить лицензии 1С
Я правильно понял, что автоформы списков не поддерживают динамическое считывание
Нет, не правильно. В автоформах задействовано постраничное считывание данных. Угадать, почему возникли проблемы на ваших данных - не берусь. Возможно, не созданы либо не указаны в свойствах динсписка необходимые индексы.
Не видя кода, нельзя с уверенностью определить даже место проблемы: доставка данных с сервера, медленный запрос к indexeddb или ошибки при отрисовке dom в браузере
95. miksomov 24.10.16 21:44 Сейчас в теме
(94)
Возможно, не созданы либо не указаны в свойствах динсписка необходимые индексы.

Хорошая новость. Можно немного подробней? Я для журнала документа прописал форму изначально с несколькими полями ( в meta_patch ). Где указать необходимый индекс и что он должен содержать для дин.списка автоформы. Примеров не нашел ((

Не видя кода, нельзя с уверенностью определить даже место проблемы

Кода собственно нет особо. Заданы поля для отображения по аналогии с демопримером.

2. Странная сортировка по дате-времени. Вроде сортировка воспринимает время 13:00 как 01:00 и т.д.
3. Сортировка по названию (кириллица) не работает почему-то и в справочниках и соответственно (видимо) в комбобоксе.
4. Справочники все положил в doc. Теперь в журнале поля, которые ссылочные, отображаются со второго раза. Т.е. надо нажать "Обновить". Как и в отчете. Почему так?


PS. С OCombo я разобрался (немного по другому, чем в примере Codex создавать надо), отчет наваял. Осталось решить проблему с дин.списком.
96. unpete 556 25.10.16 00:09 Сейчас в теме
(95) miksomov, Сделайте, уже публичный git с демо-данными - будет польза для проекта в целом и для вашей задачи в частности.
Из вопросов про сортировку и справочники в doc видна пропасть непонимания, как metadata работает с данными.
Конечно, это моя проблема и недоработка. Видимо, я не смог отразить в документации фундаментальные архитектурные вещи. Возможно, их получится описать с вашей помощью.
Кода собственно нет особо
Текст map/reduce индексов, настройки кеширования метаданных, значения атрибутов при открытии форм - это всё код
99. miksomov 25.10.16 18:47 Сейчас в теме
(96)
Из вопросов про сортировку и справочники в doc видна пропасть непонимания, как metadata работает с данными.

Недопонимание конечно есть. Но беда в том, что ни примеров ни описания нет.
Я ни в одном из примеров (Бухгалтерия, УНФ, HelloWorld) не увидел работающей сортировки по разным полям. Ее там просто нет. Единственное, где есть сортировка это у поля дата в журнале документов у демопримера HW.
И то, потому, что индекс by_doc гвоздями забит в коде модуля toolbar_filter.js. Но и тут время как попало - надо включать в индекс.
Реализация правда тоже мне не совсем понятна - к индексу обращение идет только если документы в базе doc, если в doc_remote, то не используется. Также устаналивается странный лимит: options.limit = 100000; Это разве по итогу динамический список?

Если бы коде демопримеров была прописана сортировка, я бы постарался сделать по аналогии.
Индексы дополнительные я создал.
Подскажите куда их надо прописать для понимания формами и может они должны иметь какие-то шаблонные названия?

значения атрибутов при открытии форм - это всё код

Я так смотрю, что в attr как-то и нужно передать названия этих индексов. Как я понимаю в attr.selection? Только как?

пришлите dt-шку с демоданными

Я подготовлю для вас похожую базу с тестовыми данными.
97. unpete 556 25.10.16 00:20 Сейчас в теме
(95) miksomov, Если git + внешний couchdb делать лениво, пришлите dt-шку с демоданными без конфиденциальной информации, но достаточного размера + папку проекта веб-приложения.
После командировки прорешаю ваш пример, при необходимости, внесу изменения в релиз.
85. OldthiefXXX 151 21.10.16 19:23 Сейчас в теме
Подскажите установил Couchbase Server под win заходит в админ панель http://127.0.0.1:8091/ , там создал базу test_ , 1ска не конектится к http://127.0.0.1:5984/test_ зашел тудаже из браузера тоже страница не доступна, телнетом хотел тоже пусто, служба запущена, в брендмау.. порт разрешил тоже глушняк. Вышел из браузера на http://127.0.0.1:8092/ сервак ответил ({"couchdb":"Welcome","version":"2.1.1r-562-g7ad0cfa","couchbase":"4.5.0-2601-enterprise"}).


При нажатии на кнопки проверить подключение, Ошибка работы с Интернет: Не могу установить соединение, что я не так делаю. (поднимаю все локально)
87. unpete 556 22.10.16 16:15 Сейчас в теме
(85) OldthiefXXX, Для отладки, используйте couchdb v1.6.1. Когда вопросов не останется, можно переходить к кластеру на couchdb 2.0 или couchbase
98. OldthiefXXX 151 25.10.16 17:48 Сейчас в теме
Как правильно дать входящие параметры движку metadata-core, для запуска? и какая функция init_params?
Оставьте свое сообщение

См. также

Работа со схемой запроса Промо

Инструментарий разработчика Практика программирования v8 v8::Запросы Абонемент ($m)

Стандартом взаимодействия с реляционной базой данных стал язык SQL. Приемником SQL в 1С является язык запросов. Язык запросов, также как и SQL, является структурированным. Составляющие структуры запроса отвечают на разные вопросы о том, какие данные требуется получить и какие манипуляции с множествами данных необходимо произвести при получении. В простых случаях текст запроса можно написать вручную, однако в сложных случаях, а также при программном формировании, - лучше воспользоваться объектной моделью запроса и использовать объект "Схема запроса". В статье дается описание объектной модели и особенностей работы с ней, а также приводится решение, упрощающее взаимодействие с объектом "Схема запроса".

1 стартмани

24.04.2018    43628    kalyaka    35    

Библиотека программного изменения формы (УФ)

Инструментарий разработчика Работа с интерфейсом Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

07.08.2020    3824    BuriyLesha    17    

Перенос всех логов в Elasticsearch

WEB v8 Абонемент ($m)

В качестве стандартного места хранения логов в "1С:Предприятие" используется Журнал регистрации. Также часто для хранения служебных событий создают специальные Регистры сведений. Но у этих решений есть свои недостатки. В статье описан подход для хранения любых логов в самой популярной свободной поисковой системе Elasticsearch.

1 стартмани

15.07.2020    2154    kuleshov.x    4    

Выбираем российского провайдера для интеграции с WhatsApp

WEB Интеграция v8 Россия Абонемент ($m)

Собственно, почему выбираем именно провайдера и почему российского? WhatsApp, создавая свое API, преследовал две цели - делать деньги и минимизировать спам. И чтобы убить сразу двух зайцев, было принято решение предлагать API исключительно через партнеров. Ну а вопрос по поводу российского партнера скорее уже риторический. И не только из-за курса рубля, но и из-за таланта работать с российскими телефонными номерами, коим одарены далеко не все провайдеры. Между тем статья не претендует на всесторонний анализ всех возможностей всех провайдеров. Мы копнем лишь верхушку айсберга этого немаленького рынка.

1 стартмани

19.05.2020    3814    ripreal1    1    

Внешние компоненты. Мобильное приложение 1С Промо

Разработка внешних компонент Мобильная разработка v8::Mobile 1cv8.cf Абонемент ($m)

Пример применения технологии внешних компонент для мобильной платформы 1С (Android)

1 стартмани

17.02.2017    41834    flyer    35    

Telegram bot API - разбор документации с примерами

WEB v8 Абонемент ($m)

Перевод документации на язык 1С.

1 стартмани

06.04.2020    33621    leongl    44    

Перевод кода и метаданных конфигурации на английский язык: часть 2

Инструментарий разработчика EDT Локализация решений v8 1cv8.cf Абонемент ($m)

Практический пример подготовки словаря для перевода кода и модели конфигурации УНФ 1.6 на английский язык с использованием существующих словарей и плагина EDT Language Tool. В статье приводятся готовые скрипты и алгоритмы сборки и нормализации словаря.

1 стартмани

05.04.2020    2205    vanjushkin    0    

Синтез речи из текста с помощью Яндекс SpeechKit

WEB v8 1cv8.cf Абонемент ($m)

В статье описан процесс подключения Яндекс SpeechKit API и программная реализация синтеза речи из текста с помощью этого API. Тестировалось на релизе платформы 8.3.16.1224. Может использоваться в любой конфигурации. Синтез речи может использоваться для самых разных целей, в моём случае потребовалось перевести лекции из текстовых файлов в звук

1 стартмани

05.04.2020    2199    m0zg153    2    

Демо связи веб сервисов 1С и php Промо

Практика программирования Математика и алгоритмы WEB v8 1cv8.cf Абонемент ($m)

Демонстрация обращения к веб сервису 1С из php. Пример простейший, уровня hello world. Дана одна страница и информационная база 1С с одним справочником и одним веб сервисом. Веб сервис выдаёт содержимое справочника по запросу странички.

1 стартмани

19.07.2013    32109    Трактор    20    

Перевод кода и метаданных конфигурации на английский язык с помощью плагина EDT: Language Tool

EDT Локализация решений v8 1cv8.cf Абонемент ($m)

Использование регулярных выражений для парсинга .mdo-файлов и составления русско-английского словаря метаданных. Перевод кода и метаданных конфигурации по словарю с помощью нового инструмента 1С - плагина EDT: Language Tool на примере УНФ 1.6

1 стартмани

03.04.2020    2004    vanjushkin    10    

Вариант реализации REST API для 1С-Битрикс Управление сайтом

WEB v8 Россия Абонемент ($m)

В статье опишу вариант обмена 1С УТ 11.4 и 1С-Битрикс управление сайтом с иcпользованием компонентов Symfony, в качестве примера обмен данными по товарам.

1 стартмани

28.01.2020    4616    malikov_pro    2    

"Живые" картинки со Snap.SVG

Практика программирования WEB Работа с интерфейсом v8 Абонемент ($m)

В статье рассмотрен пример использования http-сервисов для визуализации данных

1 стартмани

24.10.2019    13347    blackhole321    7    

Примеры пользования web сервисов 1С из браузера Промо

WEB Практика программирования v8 1cv8.cf Абонемент ($m)

Даны примеры реализации доступа к web сервисам 1С из браузера. Примеры web сервисов, а также javascript'ы для доступа к этим сервисам. AJAX доступ к 1С.

1 стартмани

29.06.2008    152468    Трактор    233    

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью Rest API сайта. Часть 1. Авторизация

WEB v8 Абонемент ($m)

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью функционала Rest API предоставляемого платформой (CMS) WordPress (WooCommerce). Без дополнительных приложений на PHP/вставьте сюда любой другой язык программирования/.

1 стартмани

12.10.2019    25556    osivv    32    

1С и PowerShell - обновление из хранилища

Администрирование данных 1С Инструментарий разработчика v8 Абонемент ($m)

Пример скрипта, упрощающего работу.

1 стартмани

29.08.2019    8498    Jokemas    25    

АИТП. Автоматизируем управление ресурсами на примере Яндекс.Почта для домена

WEB v8 1cv8.cf Абонемент ($m)

В статье демонстрируется использование программного пакета АИТП для автоматизации предоставления ИТ-ресурсов сотрудникам на примере управления почтовыми ящиками Яндекс.Почта для домена.

1 стартмани

26.08.2019    4378    blackhole321    4    

Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery с кэшированием

WEB v8 1cv8.cf Абонемент ($m)

В статье описан способ создания "фронтенда" на HTML/CSS/jQuery и скрипт кеширования AJAX запросов на PHP.

1 стартмани

06.08.2019    13728    Sedaiko    24    

Менеджер потоков: реализация "любой" задачи в потоках

Производительность и оптимизация (HighLoad) Инструментарий разработчика v8 Абонемент ($m)

Менеджер потоков – один их новых инструментов, который упрощает работу разработчиков. Насколько легко с ним, на конференции Infostart Event 2018 Education показал начальник отдела автоматизации 1С Иван Филимонов компании «Трансстроймеханизация».

01.08.2019    9444    DarkAn    6    

Обмен с интернет-магазином на платформе DOCPART

WEB Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 1cv8.cf Абонемент ($m)

В настоящее время существует множество платформ для создания интернет-магазинов. Удобные и не очень, платные или бесплатные. У каждого решения найдутся свои сторонники, но наличие оперативного обмена с учётной системой важно для любой платформы. В этой публикации мы рассмотрим одну из популярных платформ для создания интернет-магазина по продаже автозапчастей Docpart и организацию обмена данными с ней.

10 стартмани

04.07.2019    4810    Johny_v    17    

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки

Практика программирования Внешние источники данных Обмен через XML WEB Разработка v8 1cv8.cf Абонемент ($m)

В этой статье мы рассмотрим путь и основные моменты создания небольшого вэб-сервиса, который мы называем "Онлайн Прайс-лист". Выгрузка из 1С, бэкенд, фронтенд, получение заказов в 1С.

1 стартмани

22.04.2019    32635    riposte    65    

EGAIS Scan - приложение для ТСД

Терминал сбора данных Мобильная разработка Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 УПП1 УТ11 КА2 Россия УУ Абонемент ($m)

Каждый, кто занимается торговлей алкогольной продукцией, сталкивался с проблемами сканирования акцизных марок и трудностями при взаимодействии с учетной системой 1С. Приложение EGAIS Scan - простое и оптимальное решение для выполнения быстрой приемки и отгрузки алкогольной продукции.

1 стартмани

17.04.2019    5351    MrChe    3    

Внешние компоненты мобильной платформы 1С для ОС Андроид

Разработка внешних компонент Мобильная разработка v8::Mobile Абонемент ($m)

На трех простых примерах описана процедура разработки внешних компонент для Андроид. Статья написана по мотивам доклада на конференции INFOSTART 2018 EDUCATION.

31.01.2019    16180    IgorKissil    25    

Использование фреймворка "Тестирование 3.0" (https://testingtool.ru) для тестирования веб-приложений

Инструментарий разработчика v8 Абонемент ($m)

Рассматривается использование фреймворка "Тестирование 3.0" (https://testingtool.ru) для тестирования веб-приложений.

1 стартмани

24.12.2018    5047    AlexKo    9    

Применение цифровой подписи при организации учёта ТМЦ и ГСМ

Защита и шифрование Управление бизнес-процессами (BPM) Мобильная разработка v8::Mobile v8::Бизнес-процессы 1cv8.cf Абонемент ($m)

Статья о том, как внедрение мобильного приложения в бизнес-процессы компании сократило оборот бумажных документов, а простая электронная подпись - заменила аналоговую.

1 стартмани

25.10.2018    7259    ikekoval    2    

Go. Разбор лога технологического журнала. Достойная альтернатива perl'у

Сервисные утилиты Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Началось все с того, что я познакомился с перловыми скриптами для парса ТЖ которые размещены на kb.1c.ru (например в этой статье https://kb.1c.ru/articleView.jsp?id=113). По началу мне дико понравилось то, что перл разбирал гигабайты логов за считанные минуты, но позитив мой угасал обратно пропорционально с тем, насколько глубже я погружался в "кроличью нору" ....

1 стартмани

24.10.2018    20009    lazarenko    39    

HTTP Сервисы: Путь к своему сервису. Часть 4

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 3». В предыдущих частях мы уже о многом поговорили. В этой части поговорим про размер сообщений, о файлах, о порциях и немножко, о регламентах.

1 стартмани

28.09.2018    24352    dsdred    15    

Подключение к REST API через OAuth протокол из 1С

WEB v8 1cv8.cf Абонемент ($m)

В статье описаны варианты подключения И решение граблей по подключению к REST API через протокол OAuth 2.0 из 1С. При разработке такого подключения для получения данных и загрузки в базу 1С я столкнулся с некоторыми проблемами, решил их и хочу поделиться этими наработками.

1 стартмани

06.09.2018    12382    chemezov    11    

HTTP Сервисы: Путь к своему сервису. Часть 2

Инструментарий разработчика Практика программирования v8 1cv8.cf ERP2 УТ11 КА2 Абонемент ($m)

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 1». В этой части будет "Микс" из OData+HTTP-Сервис(Get)+СКД. Наш пример будет работать как в браузере, так и в написанной нами обработке. Работать будем с разными версиями платформ.

1 стартмани

13.08.2018    32539    dsdred    0    

HTTP Сервисы: Путь к своему сервису. Часть 1

Практика программирования WEB v8 1cv8.cf Абонемент ($m)

Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.

1 стартмани

15.07.2018    83279    dsdred    24    

Тестирование: пример создания сценарного UI теста для платформы 1С

Инструментарий разработчика v8 ERP2 УТ11 Абонемент ($m)

В этой статье мы расскажем, как создать сценарный UI-тест. Опишем последовательность действий и покажем, как это сделать с использованием инструментария. Рассмотрим пример, максимально приближенный к боевому, покажем на примере конфигураций УТ11/ERP проверку бизнес-процесса "Продажа". Вы сможете убедиться, что создание сценарных тестов для платформы 1С на самом деле относительно быстрый и простой процесс.

1 стартмани

17.04.2018    20319    ivanov660    11    

Мобильный клиент + HTTP Сервис + Расширение конфигурации

Мобильная разработка v8 v8::Mobile 1cv8.cf Россия Абонемент ($m)

Пример использования Мобильного клиента, http сервиса и расширения. 10.04.2018 фирма 1С выпустила релиз 8.3.12.1412, с долгожданным мобильным клиентом. Платформа содержит еще ряд долгожданных функций, например возможность работы с расширением через хранилище, но разговор пойдет именно о Мобильном клиенте.

1 стартмани

16.04.2018    31009    dsdred    27    

Мобильное приложение: особенности разработки на примере «Тестирование: Отчеты»

Мобильная разработка v8::Mobile Абонемент ($m)

В данной статье мы расскажем, с какими проблемами столкнулись и как их решили при создании мобильного приложения «Тестирование: Отчеты» для платформы 1С. Приложение доступно в google play + есть возможность посмотреть работу в демонстрационном режиме.

1 стартмани

12.03.2018    19618    ivanov660    2    

Сборка мобильного приложения 1С под IOS

Мобильная разработка v8 v8::Mobile Абонемент ($m)

В статье представлена инструкция по сборке мобильного приложения 1С под iOS с использованием бесплатного аккаунта разработчика Apple.

1 стартмани

29.01.2018    27845    Isonic    51    

А чё это вы здесь делаете, а?

WEB v8 1cv8.cf Абонемент ($m)

Разработчикам тиражных обработок близка и понятна проблема обратной связи с пользователем. Много важного и полезного можно почерпнуть, зная, что делает бухгалтер, который запустил обработку. В большом мире вэба сбор статистики на сайте дело привычное и даже обязательное. Эта статья покажет практику применения инструментов сбора статистики из мира веба для обработок на платформе 1С:Предприятие.

1 стартмани

21.01.2018    23690    infosoft-v    42    

Творим Историю вместе

Математика и алгоритмы Бесплатно (free)

Расширяем границы, выходим за рамки, ставим новые цели - все, как вы любите.

17.01.2018    17441    1c-intelligence    108    

Консоль запросов со встроенным Конструктором запросов для 1с8.3 (8.2) своими руками

Консоль запросов v8 v8::УФ v8::Запросы 1cv8.cf Абонемент ($m)

Мы можем сами создать свою консоль запросов - именно такую, которая подходит для наших нужд. Кроме того, создав собственную Консоль запросов, Вы не только получаете удобный для себя инструмент, а также получаете навык программирования в среде 1с8, что очень полезно будет начинающим программистам 1С.

1 стартмани

21.12.2017    21339    jan-pechka    23    

Пример заполнения/создания файла XML из XSD схемы, используя XDTO

Обмен через XML WEB v8 1cv8.cf Абонемент ($m)

Добрый день, коллеги! Наконец-то дошли руки написать сию статью. Хочу поделиться своим опытом по разбору xsd схемы используя Фабрику XDTO, а также связанным с этим XML файлом. Думаю, наверняка кому-то понадобится.

1 стартмани

21.12.2017    46096    sandybaev    24    

Практика доступа в базу 1С через протокол oData. Чтение данных

Сервисные утилиты Практика программирования Администрирование данных 1С v8 1cv8.cf Абонемент ($m)

Для чего нужен доступ в базу 1С через REST-интерфейс по протокол oData? Как его организовать? Как не будучи гуру в JavaScript и .NET получить быстрый визуальный доступ к данным базы 1С? Попробую дать ответ на эти вопросы и прокомментирую некоторые нюансы, с которыми я столкнулся.

1 стартмани

11.12.2017    95014    Dementor    53    

Полезный код для программистов 1С (часть 1). Управление свойствами элементов формы. Хранение копии данных реквизитов

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

У каждого программиста за время работы накапливается полезный инструментарий, которым он привык пользоваться. Естественно и у меня он тоже имеется. И вот решено было немного поделиться с сообществом. Возможно идеи не новые. Более того, допускаю, что реализованы они не самым оптимальным образом. Но ведь для этого сообщество и существует, чтобы делиться с ним, получая обратную связь.

1 стартмани

24.09.2017    42056    vandalsvq    80    

Получение данных из Wialon Hosting через HTTP запросы (Remote API)

WEB v8 1cv8.cf Автомобили, автосервисы Россия Абонемент ($m)

Статья будет полезна для быстрого старта работы с Wialon Hosting. Здесь я опишу основные принципы работы с системой Wialon через Remote API.

1 стартмани

12.09.2017    21606    maxopik2    21    

Google OAuth и мобильное приложение

Мобильная разработка Обмен данными 1С Внешние источники данных WEB v8 v8::Mobile 1cv8.cf Абонемент ($m)

Об аутентификации для работы с сервисами google из мобильного или настольного приложения

1 стартмани

29.08.2017    11487    stveans@gmail.com    3    

Интеграция сценарного тестирования в процесс разработки

Практика программирования Инструментарий разработчика v8::УФ Абонемент ($m)

Эта статья является практическим пособием по внедрению тестирования на основе сценариев в процесс разработки программного обеспечения на базе платформы 1С:Предприятие 8.3. Документ отличает прикладная направленность, в нем содержится много кода, подходов и конкретики. Все рассмотренные примеры основаны на использовании бесплатной конфигурации Тестер

1 стартмани

04.07.2017    29933    grumagargler    30    

Мобильное приложение 1С и приложение Java. Совместная работа через Intent. Часть 1. Запуск приложения Java из 1С

Практика программирования Мобильная разработка v8::Mobile 1cv8.cf Россия Абонемент ($m)

Пишем два приложения - конфигурацию на мобильной платформе 1С и приложение Java Android Studio. На примере рассматриваем совместное использование двух приложений через Intent. Публикация состоит из 3 частей: Часть 1. Запуск приложения Java из 1С Часть 2. Получаем данные в 1С из приложения Java Часть 3. Отправляем данные в приложение Java из 1С.

1 стартмани

20.04.2017    28269    user621724_Dimav1979    20