JS:Формирование эскизов в PhantomJS

Материал из Окнософт
Перейти к: навигация, поиск


Зачем нужен PhantomJS

PhantomJS позволяет:

  • Формировать эскизы на стороне сервера. Если бы все расчеты происходили на клиенте, никакого фантома бы не потребовалось – обо всём можно было бы спросить у текущей сессии браузера
  • Делать это асинхронно, в отдельном потоке и даже на другом физическом компьютере. Пока 1С записывает в свою базу элемент продукции, Phantom занимается рендеренгом

Используемые данные

  • Описание доступных в текущей области данных систем профилей и фурнитуры
  • Данные текущей продукции
  • Указание, что именно формировать (масштаб, текущий контур или всё изделие или один элемент, или выделить некий элемент и т.д.)

Второй и третий параметры гонятся из 1С в Phantom в http-запросе. Они всегда новые, их объем невелик и что-либо кешировать или оптимизировать с этими данными не получится, да и не требуется
Первый параметр, кроме того, что имеет значительный объём, еще и трудно рассчитать. Требуется выполнение сложных запросов и последующая сериализация. Но, т.к. описание профилей и фурнитуры не зависит от текущей продукции и меняется сравнительно редко, эти данные технолог сохраняет в файле специального формата после внесения изменений в справочники и размещает в каталоге PhantomJS

Разделение данных

В сервисе Заказ дилера используется технология Разделения данных 1С, при которой базы нескольких клиентов хранятся в одной физической базе данных. Подключиться к разделенной базе без указания разделителя невозможно. За это отвечает даже не платформа 1С, а библиотека публикации данных для веб-сервера (более низкий уровень по отношению к платформе).
При обращении к фантому, кроме параметров эскиза, 1С сообщает номер области данных, в которой был сформирован запрос. Соответственно, внутри каталога данных PhantomJS должны храниться разделенные описания технологии для всех опубликованных областей данных.

Как сформировать файлы описания технологии

Для формирования файлов описания технологии используется команда Json параметры продукции, расположенная в тонком клиенте в разделе Окнософт

Замечание Замечание: Если команда вызывается в разделенной базе, используется текущее значение разделителя данных. Если команда выполняется в локальной базе, используется значение константы ЗАКАЗ_ДИЛЕРА_ЗОНА_ФРЕШ раздела ИНТЕГРАЦИЯ разных списков. Рекомендуется установить эту константу в локальной базе в то же значение, который имеет связанная разделенная база в сервисе
Замечание Замечание: В файл описания включаются данные только тех систем профилей, у которых взведён признак Активная. Если в справочнике Параметры продукции есть неиспользуемые элементы, рекомендуется снять для них признак Активная