Ферма приложений на Kubernetes

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

Разработка - Системная интеграция - Интеграция с WEB

При эксплуатации большого количества информационных систем 1С, предоставляющих интернет-сервисы, возникают проблемы, связанные с зависимостью от производительности и стабильности веб-сервера. Как объединить отдельно стоящие веб-сервера с помощью платформы Kubernetes для централизованного мониторинга всех опубликованных интернет-сервисов на конференции Infostart Event 2019 Inception рассказал программист компании BIA Technologies Владимир Кирбаба.

Меня зовут Владимир Кирбаба, я работаю программистом в компании BIA Technologies. Наша компания занимается разработкой и интеграцией программных комплексов для бизнеса.

И сегодня я хочу познакомить вас с нашей фермой приложений на Kubernetes.

 

 

Зачем нужны интернет-сервисы и как мы управляем ими через Kubernetes

Как известно, платформа «1С:Предприятие» имеет возможность предоставления своей функциональности посредством интернет-сервисов. А наша ферма – это не что иное, как средство для организации управления всеми интернет-сервисами нашей компании.

Хочу остановить ваше внимание на интернет-сервисах. С их помощью реализуется такой подход к разработке программного обеспечения, когда ваше приложение состоит из различных небольших компонент, называемых сервисами. Эти сервисы распределены по вычислительной сети, слабо связаны и легкозаменяемы, что является положительным фактором для больших приложений. Для общения они могут реализовать какие-то протоколы или просто использовать соглашения.

В платформе 1С:Предприятие все виды интернет-сервисов можно условно разделить на два класса – по принципу того, как они общаются между собой в вычислительной сети:

  • в платформе 1С к первому классу относятся так называемые SOAP-сервисы – это по большей части набор параметрических функций – для общения между собой они используют логический протокол SOAP;
  • и ко второму семейству относятся HTTP-сервисы, которые для общения внутри сети используют HTTP-запросы.

 

 

На слайде вы можете видеть скриншот рабочего стола нашего кластера Kubernetes, на котором отображается:

  •  информация обо всех приложениях, работающих в кластере прямо сейчас;
  •  и некоторая сводная информация о ресурсах, потребляемых всеми приложениями.

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

На скриншоте видно, что у нас есть около 400 приложений, постоянно работающих в кластере, и в этом списке есть абсолютно все виды интернет-сервисов, реализованные на платформе 1С:Предприятие. Это – всем известные веб-сервисы, HTTP-сервисы, даже веб-клиенты и стандартный интерфейс oData.

 

Как сервисы предоставляются платформой 1С:Предприятие

 

 

Знакомство с нашей фермой мы продолжим с того, что посмотрим, как платформа 1С реализует предоставление интернет-сервисов.

В основе сервисной архитектуры платформы находится менеджер сервисов. На его плечи возложены такие задачи, как:

  •  управление пулом соединений с информационной базой;
  •  поддержка WSDL-описания функций;
  •  реализация SOAP-протокола;
  •  сериализация сообщения;
  •  и вызов конкретного нужного сервиса из 1С.

Но что самое интересное, менеджер сервисов выполняется в процессе веб-сервера, который по факту является передатчиком:

  •  принимает сообщения из сети и передает их менеджеру сервисов;
  •  и наоборот, принимает сообщения от менеджера сервисов и передает их обратно в сеть.

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

Любой сбой в работе веб-сервера непосредственно скажется на доступности интернет-сервисов, что вызовет недовольство клиентов.

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

 

Как повысить устойчивость предоставляемого сервиса

 

 

Предвосхищая все эти нюансы, провайдеры интернет-сервисов чаще всего прибегают к схеме дублирования конфигурации веб-сервера для управления потоком входящих сообщений:

  • либо равномерно распределяя этот поток между процессами двух веб-серверов;
  • либо переключая поток входящих сообщений между серверами для горячей замены в случае выхода из строя любого из них – в верхней части схемы я это попытался изобразить;
  • ну и вообще, классический метод публикации сервисов – это когда вы публикуете интернет-сервис на отдельном веб-сервере, чтобы снизить нагрузку на машину (снизить ее стоимость) и не мешать остальным сервисам компании.

 

 

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

 

Как распределить нагрузку между процессами одного сервиса. Технология контейнеризации Docker

 

Аппаратная виртуализация – это, конечно, хорошо, но мы используем контейнеризацию. Это такая технология, при которой отсутствуют дополнительные издержки на эмуляцию виртуального оборудования и запуск полноценной копии операционной системы.

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

 

 

Что же мы по факту называем контейнеризированным приложением при публикации интернет-сервисов для операционной системы:

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

А для получения таких контейнеризированных приложений, сразу скажу, что платформа Kubernetes поддерживает множество различных технологий контейнеризации и даже некоторые технологии аппаратной виртуализации. Но мы в компании BIA-Technologies используем технологию Docker.

 

 

Docker – это программное обеспечение для автоматизации развертывания и управления приложениями в средах с поддержкой контейнеризации.

Именно Docker помогает нам упаковать веб-сервер со всеми его зависимостями и окружением (с серверной частью платформы тоже) в некоторые контейнеры. Используя Docker, вы можете тут же развернуть полученный контейнер, чтобы проверить работу приложения и т.д.

Текст файла сборки Dockerfile для сборки контейнера я привел на слайде. Если убрать комментарии, в нем останется всего три строки – настолько просто создать контейнеризированное приложение, используя Docker.

 

Как сократить издержки на обслуживание пула веб-серверов. Платформа Kubernetes

 

 

Для управления и развертывания мы как раз будем использовать платформу Kubernetes. Да, Docker тоже может автоматически развертывать и управлять, но нас больше интересуют возможности кластера Kubernetes по масштабированию и репликации наших приложений.

Как выглядит процесс развертывания приложения в кластере Kubernetes? Его можно сравнить с запуском любого приложения в виртуальной машине:

  •  сначала вы создаете конфигурацию вашей виртуальной машины;
  •  потом эту виртуальную машину запускаете;
  •  и только после этого выполняете свое приложение.

В Kubernetes все эти действия очень сильно упрощены, автоматизированы и доступны одной командой.

Как я уже упомянул, нас интересует именно масштабирование. А как приятный бонус – если при дублировании конфигурации веб-серверов приходилось управлять входящим потоком сообщений, то Kubernetes делает это автоматически – масштабируя приложение, он автоматически может распределять входящий поток между элементами вашего приложения.

 

 

Платформа Kubernetes как программа реализует архитектуру «ведущий и ведомый», где:

  • У ведущего компонента (или мастера платформы) выделяют подсистему управления главным компонентом, которым является сервер API. Именно сервер API управляет внешним и внутренним доступом к функциям Kubernetes.
  • А ведомые компоненты платформы (или, иначе, узлы) – это физические или виртуальные машины, на которых развернуты и выполняются ваши приложения. Для эффективного управления жизненным циклом приложений, их развертыванием и предоставлением доступа к ним необходимо будет создавать некоторые объекты подсистемы управления – непосредственно взаимодействуя с сервером API.

Базовым компонентом для управления и запуска приложения в Kubernetes является объект под названием Pod (в переводе с английского «стручок»). Объекту типа Pod:

  • гарантирован запуск на узле и выполнение приложения в контейнере;
  • Pod будет оставаться на узле до завершения выполнения программы либо до удаления самого Pod с узла;
  • также Pod’у гарантировано разделение ресурсов между собой, межпроцессное взаимодействие и уникальный в пределах кластера IP-адрес.

И хотя создание Pod развернет ваше приложение, разработчики платформы Kubernetes не советуют нам непосредственно использовать объекты типа Pod для этих целей. По словам разработчиков:

  • объекты типа Pod не предназначены для долговременного использования, они не переживут сбоя в работе планировщика (планировщик – это компонент подсистемы «Управление», который отвечает за назначение Pod'ов на узлы);
  • еще Pod’ы не переживут падение узла, на котором они размещены – если ноду выключат из розетки, то все Pod’ы, которые там были созданы, прекратят свое существование.

Чтобы использовать возможности самовосстановления Pod’а, а также управления процессами его развертывания и репликации, разработчики платформы Kubernetes советуют нам использовать объекты-контроллеры.

Существует контроллер репликации, который:

  • гарантирует нахождение заданного количества Pod’ов (контейнеров) и размещение их на узлах;
  • связан с ведомыми Pod’ами внутренней ссылкой и постоянно опрашивает об их текущем состоянии;
  • контроллер репликации может реагировать на такие моменты, как внезапное исчезновение Pod’а (его нужно создать) или почему-то Pod’ов стало больше (некоторые нужно удалить);
  • контроллер репликации способен анализировать текущее состояние Pod’а – например, по заданным нами алгоритмам он может все время опрашивать TCP-порт веб-сервера, выполняющегося в Pod’е, и в случае, если веб-сервер завис, перезапустить образ или контейнер внутри Pod’а (все остается, как было, просто контейнер перезагрузится);
  • а из-за того, что контроллер репликации перманентно поддерживает несколько Pod’ов для обеспечения жизнедеятельности всего приложения, мы можем говорить, что пользователи не теряют ни секунды времени из-за недоступности интернет-сервиса.

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

Также разработчики платформы Kubernetes советуют нам использовать более высокоуровневую концепцию – так называемые контроллеры развертывания, которые имеют возможность управлять контроллерами репликации, а также предоставлять декларативное обновление Pod’ов.

  • Оператор, взаимодействуя с подсистемой управления, создает новый контроллер развертывания.
  • Контроллер развертывания в свою очередь через взаимодействие с подсистемой управления создаст необходимый контроллер репликации.
  • Контролер репликации тоже будет взаимодействовать с подсистемой управления и создаст новые Pod’ы, если они нужны, в том количестве, в котором они нужны.
  • Если вчера ваша информационная система была под управлением платформы версии 8.2, а сегодня вы используете платформу 8.3, и все сервисы из-за этого вдруг перестали работать – тогда, чтобы это исправить, вы изменяете декларативное описание в контроллере развертывания, указывая новую версию платформы. Все остальное на себя берет платформа Kubernetes, а вам остается только проверить статус состояния операции развертывания, опросив платформу Kubernetes по имени созданного вами контроллера.

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

А для централизованного хранения всеми образами мы используем репозиторий под управлением GitLab. Там очень легко настроить хранилище образов. Оно совершенно бесплатно встроено в систему управления. Это очень удобно.

 

Заключение

 

 

В качестве итога своей речи я хотел бы еще раз озвучить:

  • Нам, используя технологию контейнеризации, удалось, имея всего один образ Docker, опубликовать все интернет-сервисы информационной системы и разграничить их процессы друг от друга, что физически сказалось на скорости работы наших сервисов. Не внося изменений в логику наших сервисов, они начали работать примерно на 50% лучше – в зависимости от нагрузки на конкретные интернет-сервисы.
  • Используя технологии масштабирования или репликации платформы Kubernetes, мы можем повышать устойчивость публикации наших сервисов за счет увеличения количества веб-серверов, на которых они размещены.
  • Также платформа Kubernetes позволяет нам использовать данные употребляемых ресурсов. Для большей экономии мы можем конкретно этому Pod’у выделить столько ресурсов, а соседнему – чуть больше или чуть меньше, в зависимости от нагрузки на интернет-сервис.
  • Все описанные мною практики и инструкции применяются в нашей компании уже долгое время, и по результатам их использования мы получили только положительные отзывы.
  • Мы автоматизировали работу создания необходимых объектов платформы Kubernetes через 1С. Наши разработчики работают только со справочником, создают новые записи, а взаимодействие между платформой 1С:Предприятие и Kubernetes происходит по сети через HTTP в стиле REST. Акцентирую ваше внимание – это Kubernetes, который работает из 1С, он подчиняется командам из справочника одной информационной системы. Это инструмент поднятия контейнеров Kubernetes, исходя из данных справочника 1С.
  • Мы избавились от всех ранее отдельно стоящих веб-серверов. Даже разработчики больше не используют локальные веб-сервера – все это происходит в платформе.
  • Из-за того, что все ранее отдельно стоящие веб-сервера теперь объединены установленной для них платформой Kubernetes, мы имеем возможность централизованного мониторинга всех опубликованных интернет-сервисов, а также снизили издержки на администрирование всего этого, потому что обновляем все централизовано через возможности Kubernetes.

 

От ведущего

 

Коллеги, вы поняли, что 1С теперь умеет создавать контейнеры, управлять Kubernetes.

Kubernetes – это возможность сделать 1С, которая не падает. Любое приложение делится на две вещи – выполняемый код и данные. И падать может либо код, либо данные. С данными мы научились работать, их можно реплицировать, они могут храниться на отказоустойчивом хранилище, в десятке рейдов, с шардингом и т.д. А проблема падающего кода решается с помощью Kubernetes.

Это не просто High Availability, где можно HAProxy поставить и переключать с одного IP на другой. Это несколько другой мир. Грубо говоря, выделяется пул IP-шников. Выделяется облако. Если у вас больше 10 серверов, вы размещаетесь в нескольких дата-центрах – положить приложение всеми усилиями очень сложно. Современные облака работают вот так. Если у вас что-то тормозит, вы просто добавляете сервер. Платформа Kubernetes видит, что у нее появился еще один сервер, и увеличивает ресурсы, закидывая несколько контейнеров на новый сервер. Это работает вот так.

Это не какой-то космос. Есть сборка, называется Minikube. Там три строчки инсталляции. Можно эту сборку поставить себе, открыть веб-интерфейс и попробовать посоздавать там эти Pod’ы – поэкспериментировать, попробовать и посмотреть, как работает. Оно вполне user-friendly – вы можете очень легко поиграться – запустить у себя файловую базу в одном кластере для одной ноды. Поставьте себе Kubernetes, модуль расширения веб-сервера и Apache в докере – это можно использовать, на этом можно реально построить отказоустойчивое решение.

Единственное, что еще один комментарий я хотел сказать – в stateful Pod’ы (stateful конейнеры) запихивать базу данных не нужно. Саму БД и данные запихивать в Kubernetes не нужно. С этим есть определенные проблемы и трудности.

А само приложение – сервер 1С, Apache, расширение веб-сервера – то, что регулярно что-то считает и падает – это нужно размещать в контейнерах.

Завалить Kubernetes – это то же самое, что забанить Telegram в России. Наверное, можно, но очень трудно, и не всем под силу. Это – будущее, это реальный HighLoad, это облака.

Сначала мы познакомились с Docker, потом мы познакомились с Docker-compose, теперь мы научились работать с Kubernetes в 1С. Растем – теперь мы можем строить реальные облака 1С-ок без использования технологии 1СFresh, потому что реальные облака делаются вот так.

 

Вопросы

 

  • Я правильно понимаю, внутри Docker располагается серверная часть платформы? А как решаются вопросы лицензирования? Она же требует индивидуального лицензирования? Как вы это решали в случае масштабирования, увеличения количества Docker-контейнеров?
  • Если сервер лицензирования находится в одной подсети, все можно легко организовать, просто прописав маршруты получения этих лицензий.
  • Вопрос про масштабируемость и отказоустойчивость – скажите, пожалуйста, когда у вас несколько нод, и при падении одной ноды каналы прописаны до сервисов – меняются адреса и т.д. Как происходит это переключение? Keep alive переключается или IP меняется? Какими средствами это организовано?
  • Кластер Kubernetes – это несколько машин, соединенных одним программным обеспечением. У него есть целый набор IP-адресов, по которым он откликается. Объединяя их всех одним доменным именем, мы сразу обращаемся ко всему кластеру. До тех пор, пока весь кластер устойчив – а это зависит именно от мастера кластера, не важно, что происходит с нашими узлами. Контроллеры репликации гарантируют восстановление подконтрольных им Pod’ов. И если у вас упал узел, контроллер репликации быстро создаст новые Pod’ы на других узлах. Все равно используется пул IP-адресов.
  • Я в своем докладе сказал, что только узел является физической или виртуальной машиной, а Kubernetes-мастер не является никакой машиной, он может стоять на одном компьютере с узлом, просто выполнять функции управления узлами и предоставлять доступ к компонентам управления объектами (как к внутренним, так и внешним).
  • Еще одно дополнение по поводу использования ресурсов и динамической балансировки. Платформа Kubernetes также предоставляет возможность декларативно указывать, какой будет реакция на повышение нагрузки. Можно указать, что изначально у вас есть два Pod’а, которые работают вхолостую и разнесены по двум разным нодам. При повышении нагрузки Kubernetes автоматически поднимет необходимое дополнительное количество этих Pod’ов. Опять же, при снижении нагрузки он высвободит ресурсы. Вот такая еще возможность есть.
  • Рассматривали ли вы с качестве оркестрации Docker Swarm? Если да, то какие плюсы Kubernetes вы видите по сравнению со Swarm? И еще один вопрос – если падает мастер-нода Kubernetes, что будет с кластером?
  • Если упадет мастер, у вас не будет кластера. А Docker Swarm – я только читал об этом, но фактически не использовал. Хотя я знаю, что Docker Swarm используется именно для этих же целей – как раз для масштабирования, управления развертыванием и запуска приложения.
  • Я хочу уточнить про пул IP-адресов. Вы используете какую-то DNS-службу, которая вам сервисы предоставляет?
  • Да, на каждом узле  Kubernetes существует свой прокси, Pod’ам, размещенным на узле, присваивается уникальный IP-адрес, но в пределах кластера. Соответственно, обращаясь к Kubernetes, переадресация к конкретному Pod’у происходит с использованием прокси, который находится на каждом узле.
  • А как сочетается то, что система очень отказоустойчивая, но если упадет мастер-нода, то работать ничего не будет. Как вы боретесь с тем, чтобы он не умер?
  • Во-первых, HAProxy никто не отменял, во-вторых, мастеров может быть несколько. Это не значит, что мастер – это целый большой сервер. Это может быть маленькая виртуальная машина, которая практически не потребляет ресурсов, ничего не делает. Ты на каждой ноде можешь развернуть мастеров. Это не 1С, это другая история. Чтобы это упало, надо постараться.
  • У кластера где-то должен храниться реестр – что вы используете в качестве хранилища, которое видно со всех машин кластера и может писаться и читаться. Или для работы Kubernetes это не нужно? Не в плане образа Docker, а в плане метаданных самого кластера, которым оперирует мастер – он же должен знать, где у него что поднято и т.д. Где он это хранит? Обычно используется GlusterFS – какое-то распределенное хранилище. Что у Kubernetes для этого? Что-то свое?
  • Да, у Kubernetes в подсистеме управления находится хранилище, к которому имеют доступ сервер API, планировщик и контроллер менеджеров. Всего три компонента всей подсистемы управления имеют доступ к хранилищу.

 

****************

Данная статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART EVENT 2019. Больше статей можно прочитать здесь.

Приглашаем всех принять участие в тематических митапах Инфостарта: infostart.ru/events/

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

Оставьте свое сообщение

См. также

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо

Практика программирования WEB v7.7 v8 Бесплатно (free)

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    56740    Serginio    33    

Как отправить сообщение Telegram в группу?

WEB v8 Россия Бесплатно (free)

Отправка сообщения в группу Telegram.

01.03.2021    427    kite2    0    

Альфа-Авто 5.0 и современные HTTP сервисы

WEB v8 1cv8.cf Автомобили, автосервисы УУ Бесплатно (free)

Решение, позволяющее программным продуктам, работающим на устаревших версиях платформы 1С (8.2), интегрироваться с современными HTTP сервисами. Решение, интегрированное с HTTP-сервисом программы по расчету компонентов для изготовления ЛКМ, описанное в настоящей статье, успешно работает в одном из автосервисов, работающем на устаревшей платформе и конфигурации Альфа-Авто 5.0.

01.03.2021    272    osivv    1    

Доступ из базы 1С к стандартному интерфейсу Odata базы 1С, в которой заведен пользователь

WEB v8 Россия Бесплатно (free)

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

24.02.2021    490    user823999    6    

Online телефонный справочник из 1С: Зарплата и управление персоналом Промо

WEB Управление персоналом (HRM) Управление персоналом (HRM) v8 ЗУП3.x Россия Бесплатно (free)

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    26429    ruha    16    

Интеграция с API WB (Wildberries). Создание карточки товара (спецификации)

WEB v8 1cv8.cf ИТ-компания Россия Бесплатно (free)

Опыт интеграции с API WB (Wildberries), опыт создания карточки товара, получение токенов API WB.

18.01.2021    4420    jenyavp    36    

HTML редактор/editor (Wysiwyg) для WebKit 1С (CMS, B2B), альтернатива TinyMCE и стандартному ФорматированныйДокумент

WEB Интеграция v8 v8::УФ 1cv8.cf Бесплатно (free)

Suneditor - отличная замена HTML редактору TinyMCE (бесплатному), в публикации с открытым кодом подключим его в 1С с WebKit, скачать HTMLeditor обработку можно бесплатно.

28.12.2020    1797    SizovE    23    

Выгрузка HTML описаний с картинками (Base64) товаров на сайт/интернет-магазин/B2B, разберем регулярное выражение получения тега body, ПолучитьHTML, ФорматированныйДокумент

Практика программирования WEB Универсальные функции v8 v8::УФ 1cv8.cf Бесплатно (free)

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

24.11.2020    696    SizovE    2    

Кэширование COM-соединения. Три способа Промо

Практика программирования Перенос данных из 1С7.7 в 1C8.X Внешние источники данных WEB v8 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    42067    YPermitin    41    

Как сделать интеграцию (обмен) с интернет-магазином? Пошаговый план действий (Часть 1)

WEB v8 1cv8.cf УУ Бесплатно (free)

C 2011 года я занимаюсь интеграцией с интернет-магазинами и за это время, наверное, повидал все. Делал интеграцию как «культурными», так и «экзотическими» способами. Количество магазинов исчисляется сотнями. В этой серии статей я буду делиться своим опытом, а также выкладывать какие-то полезные наработки.

19.11.2020    3383    markbraer    9    

Чтение вложенных свойств Структур Структуры, Соответствий, свойства через точку, разбор JSON

Практика программирования WEB Интеграция Универсальные функции v8 Бесплатно (free)

JSON: {user.device.type} - как получить значение {type}? А если вложенность значительно глубже? Как проверить, что оно заполнено или удалить его - всё это в публикации с открытым кодом и даже без рекурсии. Бонусом разбор дерева значений - ДанныеФормыЭлементДерева, СтрокаДереваЗначений.

17.11.2020    1640    SizovE    2    

Web Dashboard (мобильная и десктопная версия): оптимальная схема организации взаимодействия с зоопарком систем

WEB v8 Бесплатно (free)

Задача: из множества систем (1С:ERP, 1C:CRM, Кронос:WMS, 1С:Розница, 1С:УПП...) оперативно и онлайн осуществлять мониторинг на телефоне/десктопе/планшете/телевизоре бизнес-аналитику в дашборде для директора. Рассмотрим в статье, как правильно интегрировать между собой все базы, какие для этого инструменты использовать.

10.11.2020    5061    SizovE    2    

Заготовка для загрузки файлов по ftp Промо

WEB Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

3 процедуры и 1 макет

03.06.2013    30779    anig99    6    

Отладка модуля ДиадокПро

WEB v8 1cv8.cf Бесплатно (free)

В обработке ДиадокПро все дополнительные модули встроены во внешние обработки, которые хранятся в макетах. Это усложняет процесс самостоятельной интеграции, так как теряется возможность попасть в них в режиме отладки. Но не всё так страшно, поэтому ниже инструкция)

30.10.2020    1861    Максим-777    13    

JSON примеры меню B2B web-приложения "Личный кабинет" на движке EDIbot для телефона/десктопа

WEB v8 Бесплатно (free)

Рассмотрим на примерах работу движка EDIbot при организации меню B2B "Личного кабинета" (мобильная версия, версия десктоп) грузовладельца WMS-системы.

29.10.2020    885    SizovE    0    

Обмен с сайтом посредством Post-запроса, json

WEB v8 1cv8.cf Бесплатно (free)

Задача - передавать на сайт объекты с наименованием и уникальным идентификатором (УИ), которые изменяются в 1С. Также нужно сохранять историю отправленных пакетов.

29.10.2020    4180    John_d    26    

Организация HTTP публикации каталога товаров используя PostgREST

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу порядок установки настройки и использования PostgREST на примере организации каталога товаров.

05.10.2020    933    malikov_pro    2    

Интеграционная прослойка(middleware) на Golang. Часть 5 - Обмен с 1С через HTTP-сервисы платформы

WEB v8 Бесплатно (free)

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

28.09.2020    1550    dmitry-irk38    4    

Отладка http сервиса

WEB v8 Бесплатно (free)

При разработке http сервиса возникает ситуация, а как протестировать http сервис? Создали мы сервис, настроили шаблоны, передали, если нужно параметры, открываем браузер заполняем строку подключения и БАХ, ошибка. Что делать?

23.09.2020    2568    hpi    10    

Учимся создавать http сервисы (часть вторая). Передача параметра в http сервис

WEB v8 1cv8.cf Бесплатно (free)

Пошаговое руководство по созданию http-сервиса (часть вторая). Передача параметра в http сервис.

22.09.2020    5457    hpi    6    

Организация данных и вариант обработки для организации обмена с сайтом

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант организации данных и обработки для обмена с сайтом.

22.09.2020    1409    malikov_pro    4    

Формирование списка документов и скачивание печатной формы документа через веб-сайт с использованием HTTP-сервиса, плюс особенности авторизации

Практика программирования Обмен данными 1С WEB v8 1cv8.cf Бесплатно (free)

В статье показан пример, как реализовать формирование списка документов клиента/пользователя по коду, а затем скачать его (документа) печатную форму по ссылке

18.09.2020    1044    R_o_n_n_y    3    

Формирование HTTP запроса формата multipart/form-data с двоичными данными, используя ПотокВПамяти

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант формирования запроса

11.09.2020    3093    malikov_pro    11    

Использование шаблонного процессора для формирования HTML страниц

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу использование шаблонного процессора Handlebars запущенного на Node.js

24.08.2020    1643    malikov_pro    26    

Загрузка или обновление файла на яндекс диске через rest-api

Практика программирования Файловые протоколы обмена, FTP WEB v8 Бесплатно (free)

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

12.08.2020    2616    pavelpribytkin96    10    

Самый простой парсинг и обработка веб-страниц в 1С

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    6821    YPermitin    19    

Загрузка или обновление файла на гугл диске

Практика программирования Файловые протоколы обмена, FTP WEB v8 1cv8.cf Бесплатно (free)

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

06.08.2020    1725    pavelpribytkin96    6    

Использование Yandex Translate (Яндекс.Переводчик)

WEB v8 1cv8.cf Бесплатно (free)

В статье опишу вариант подключения и использования Yandex Translate.

08.07.2020    4409    malikov_pro    8    

Когда хотим знать IP клиента...

WEB v8 Бесплатно (free)

В процессе разработки web приложения на 1С, и это не шутка))), а пожелание заказчика, возникла ситуации когда понадобилось знать, с какого IP подключался клиент.

03.07.2020    6039    IMihalev    10    

Ограничение доступа к HTTP публикациям 1С сервера используя NGINX

WEB v8 1cv8.cf Бесплатно (free)

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

02.07.2020    7332    malikov_pro    7    

Структура обработки загрузки цен и остатков поставщика с примерами и комментариями

Внешние источники данных WEB v8 1cv8.cf Россия Бесплатно (free)

В статье опишу структуру обработки по загрузке цен и остатков от поставщика с примерами.

27.06.2020    1889    malikov_pro    0    

Вариант использования документа "Операция по Яндекс.Кассе" для других сервисов по оплате через интернет

WEB v8 1cv8.cf Россия Бесплатно (free)

В статье рассмотрю организацию эквайринга в УТ 11.4 и доработки для создания заказов на оплату к стороннему сервису, как пример Сбербанк.

24.06.2020    1507    malikov_pro    3    

Работа с AliExpress через API

WEB v8 Бесплатно (free)

В публикации опишу подход работы с API AliExpress и примеры кода.

23.06.2020    5882    malikov_pro    23    

История создания успешной системы чат-ботов на 1С

WEB v8 Бесплатно (free)

Использование чат-ботов в мессенджерах позволяет автоматизировать многие сложные бизнес-процессы путем диалога с системой через виртуального собеседника. О том, как создать универсальную систему ботов с бэкендом на 1С, работающую в Telegram, Viber и Facebook Messenger одновременно, на конференции Infostart Event 2019 Inception рассказал программист-фрилансер Константин Гейнрих.

21.05.2020    8331    CyberCerber    15    

Парсинг html страниц с выводом информации через JavaScript с использованием Selenium

WEB v8 1cv8.cf Бесплатно (free)

Есть девочки как девочки, есть мальчики как мальчики, есть сайтики как сайтики, но странички их обманщики. В целях сохранить информацию, от автоматизированного сбора, многие ресурсы пытаются защитить ее. Один из таких способов - вывод информации на странице через JavaScript. При получении такой страницы в 1С, JavaScript не успевает вывести необходимые данные, и в 1с получаем практически пустую страницу. В статье приведу пример разработки, для парсинга таких страниц, без регистрации и смс.

20.05.2020    5745    platonov.e    25    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг третий, WooCommerce, публикация категорий товаров

WEB v8 1cv8.cf Бесплатно (free)

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции публикации категорий товаров в магазин WooCommerce, с комментариями внутри.

13.05.2020    3657    osivv    3    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг второй, публикация картинок

WEB v8 Бесплатно (free)

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции передачи фото из 1С, с комментариями внутри.

13.05.2020    2467    osivv    0    

Интеграция Camunda BPM и 1С

WEB Интеграция v8 Бесплатно (free)

Быстрый старт. Только практические примеры. Установка, запуск и публикация бизнес-процесса на сервере Camunda BPM. Управление бизнес-процессами из 1С при помощи Camunda REST API.

12.05.2020    4525    zhichkin    30    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Первый шаг

WEB v8 Россия Бесплатно (free)

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции 1С с комментариями внутри.

28.04.2020    5503    osivv    23    

Выразительный Web API

WEB v8 Бесплатно (free)

Теория разработки Web API с ожидаемым поведением, за который не будет стыдно за пределами мира 1С.

27.04.2020    7663    nbeliaev    22    

Хранение статистики публикаций автора сообщества Инфостарт ® (мобильное приложение И ++)

Мобильная разработка WEB v8 1cv8.cf Бесплатно (free)

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

24.04.2020    2459    capitan    15    

Интеграция УАТ с топливными сервисами

WEB v8 1cv8.cf Автомобили, автосервисы Бесплатно (free)

Интеграция конфигурации Управление автотранспортом с топливными веб-сервисами.

21.04.2020    7704    RPGrigorev    2    

Интеграция 1С с веб-сервисами Лукойл ЛИКАРД

WEB v8 1cv8.cf Россия Бесплатно (free)

Описание интерфейса взаимодействия сервиса Лукойл- ЛИКАРД с информационной системой 1С.

20.04.2020    5720    RPGrigorev    0    

Ошибка инициализации модуля: HTTPСервис

WEB v8 1cv8.cf Узбекистан Бесплатно (free)

Решение проблемы "Ошибка при работе с HTTP сервисом 500. Ошибка инициализации модуля".

13.04.2020    4779    VipDim    12