FastAPI (python) - инструмент для быстрого создания Веб сервиса (WSGI) с REST api

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

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

FastAPI REST

Ознакомительная статья по FastAPI (python) - инструменту быстрого создания Веб сервиса (WSGI) с REST api.

В своей практике, неоднократно сталкивался с необходимостью развертывания внешнего по отношению к 1С Веб-сервиса (почти всегда это был именно REST). Городить много таких сервисов на 1С - просто не удобно, плюс ограничения 1С и т.д. и т.п. Нужно сказать, что для реализации Веб сервисов придумано множество инструментов на всевозможных языках и платформах. Многие чуть лучше в одном, другие - в другом, однако, по итогу, самым простым и удобным мне показался именно FastAPI.  

FastAPI - очень простой и довольно быстрый фреймворк, предназначенный именно для организации REST API сервисов. Фреймворк написан на python, может работать на различных операционках, снабжен хорошей документацией. Главное удобство его использования заключается в простоте кодинга, а кроме того - в автоматическом формировании документации по вашему API в формате Open API. Кроме этого, в FastAPI имеется встроенная асинхронность, валидация параметров запросов. Официальный репозитарий проекта - тут, документация - тут.

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

 

Итак, начнём. Первое что нужно для работы - python. Пакет можно скачать отсюда - https://www.python.org. Далее, нужна среда разработки. Рекомендую использовать pycharm - тут (у них есть бесплатная версия Community), но вполне подойдет и Visual Studio Code (тоже легко найдёте).
Надеюсь у вас получилось всё скачать и установить, а если нет, то смотрите информацию в Интернете - её море.

Далее, создаём новый проект и устанавливаем FastAPI:

pip install fastapi

Теперь установим wsgi сервер, с которым работает FastAPI:

pip install uvicorn

Вот в принципе и вся установка. 

Окей, далее, в папке проекта создадим файл main.py (если конечно среда разработки его не создала). Напишем в нем такой код: 

import uvicorn

if __name__ == '__main__':
    uvicorn.run(
        "app:app",
        host='localhost',
        port=8080,
        reload=True
    )

здесь мы описываем запуск wsgi сервера и приложения под именем app.py на нём.

Теперь создадим в папке проекта сам файл app.py:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
    

@app.get("/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}
    

Не в даваясь в детали, мы здесь описали наш api, правда пока только два метода(функции). Видно, что это обработчики GET запросов, а также адреса методов. Сохраняем файлы. Проверим работоспособность.

В терминале пишем:

main.py

В терминале должны появиться подобные строки:

Ошибок нет, сервер стартанул. Наше API работает? Проверим. Переходим в браузер:

 

Перейдём по адресу http://localhost:8080/docs:

Это и есть интерактивная документая (документация доступна также и по адресу - http://localhost:8080/redoc, но немного в другом формате). Обратите внимание на то, что кнопки активны, можно вручную передавать туда параметры и смотреть результаты. Это своего рода консоль (swagger).

В нашем примере реализовано лишь две очень простые функции, вызываемые GET запросами. Однако, вы можете создавать и PUT, и DELETE, и POST запросы. Для этого, в декораторе необходимо лишь указать необходимый метод. Подробности ищите в документации и примерах к ней. Мы же в завершении статьи, прикрутим к нашему API базу данных.

Самым простым вариантом при выборе базы данных в python является SQLite. Это файловая база данных, идущая "в коробке" с python. Разумеется, вы можете установить и настроить использование других СУБД, но сейчас это не требуется. Для примера, пусть в базе будет только одна таблица items из которой и будут извлекаться данные для функций API.

Для удобства, создадим в проекте два новых файла: controller.py - для описания финкций, database_scripts - для описания взаимодействия с базой. Изменим также и app.py - здесь нужно подключить файл controller.py для вызова соответствующих функций. Для данной задачи мне удобно было организовать модули именно так.

app.py:

from fastapi import FastAPI
import controller as controller

tags_metadata = [
    {
        'name': 'items',
        'description': 'items',
    }
]

app = FastAPI(
    title='Mini api',
    description='This is my mini api (description)',
    version='1.0.0',
    openapi_tags=tags_metadata
)

@app.get("/")
async def root():
    return controller.get_items()

@app.get("/{item_id}")
async def read_item(item_id: int):
    return controller.get_item(item_id)

 

controller.py:

import database_scripts as db_scripts

def get_items():
    return db_scripts.select_items()

def get_item(item_id):
    results = db_scripts.select_items(item_id)
    return results

 

database_scripts.py:

import sqlite3 as sq

# Параметры базы данных
DATABASE = 'database.db'
SCHEME = 'schem.sql'


# Подключение базы данных
def connect_db():
    return sq.connect(DATABASE)


# Создание базы данных (по скрипту из SCHEME)
def create_db():
    connection = connect_db()
    cursor = connection.cursor()
    with open(SCHEME, mode='r') as file:
        scheme_script = file.read()
    cursor.executescript(scheme_script)
    connection.commit()
    cursor.close()
    connection.close()


# Вспомогательная функция для упрощения получения результатов по ключу
def dict_factory(cursor, row):
    d = {}
    for idx, col in enumerate(cursor.description):
        d[col[0]] = row[idx]
    return d


def select_items(item_id=None):
    my_list = []
    connection = connect_db()

    if item_id == None:
        sql = "SELECT * FROM items"
    else:
        sql = f"SELECT * FROM items WHERE id = {item_id}"

    try:
        cursor = connection.execute(sql)
        cursor.row_factory = dict_factory
        for row in cursor:
            record = {
                'name': row.get('name'),
                'id': row.get('id'),
                'folder_id': row.get('folder_id'),
                'is_weighted': row.get('is_weighted'),
                'description': row.get('description'),
            }
            my_list.append(record)

    except connection.Error as error:
        print("Error connection to database", error)
    finally:
        if connection: connection.close()

    return my_list

 

Кроме этого, создадим в каталоге проекта также и файл schem.sql, где напишем скрипт создания нашей базы (всего одна таблица, но если потребуется больше, то как и в любой СУБД - таблицы описываются через точку с запятой):

CREATE TABLE IF NOT EXISTS items (
    id integer PRIMARY KEY,
    name char(150) NOT NULL,
    folder_id integer,
    is_weighted boolean,
    description text
);

 

Думаю что то, что описано в файлах ясно всем - из модуля app.py вызываются соответствующие функции из controllers.py, где при необходимости из database_scripts.py вызываются функции, связанные с взаимодействием с базой данных.

Ок. Теперь осталось создать саму базу и заполнить её чем-то. Создавать и заполнять базу можно вручную (н-р с помощью DB Browser for SQLite), либо выполнив такой незамысловатый код в консоли: 

>>> from database_scripts import create_db
>>> create_db()

 

Для заполнения можно добавить в database_scripts.py такой код:

items = [
    (1, 'Вентилятор BINATONE ALPINE 160вт, напольный ,', 1, 0, 'Вентилятор BINATONE ALPINE 160вт, напольный , оконный'),
    (2, 'Вентилятор JIPONIC (Тайв.),', 1, 0, 'Вентилятор JIPONIC (Тайв.), напольный'),
    (3, 'Вентилятор настольный', 1, 0, 'Вентилятор настольный'),
    (4, 'Вентилятор ОРБИТА,STERLING,ЯП.', 1, 0, 'Вентилятор ОРБИТА,STERLING,ЯП.'),
    (5, 'Пылесос "Омега" 1250вт', 1, 0, 'Пылесос "Омега" 1250вт'),
    (6, 'Телевизор "SHARP"', 3, 0, 'Телевизор "SHARP"'),
    (7, 'Набор кухонной мебели (цвет белый)', 4, 0, 'Набор кухонной мебели (цвет белый)'),
]


def insert_testdata():
    connection = connect_db()
    cursor = connection.cursor()
    cursor.executemany("INSERT INTO items VALUES(?, ?, ?, ?, ?)", items)
    connection.commit()
    connection.close()

а затем выполним его в консоли:

>>> from database_scripts import insert_testdata
>>> insert_testdata()

 

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

 

Вот собственно и всё. Перезапустим сервер и проверим работу API.

ну и второй API метод:

 

На этом всё. Чтож, надеюсь мой поток мыслей был вам понятен, а информация окажется хоть немного полезной. Как видите, почти без программирования (и без ООП) вполне себе можно быстро и легко создавать REST API. Конечно, здесь нет ни валидации, ни ORM или моделей, нет даже авторизации, а многие вещи даже и вовсе не упоминались, но это и не в ходило в цели обзора.

Исходный код из статьи.

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. informa1555 1936 19.04.21 09:51 Сейчас в теме
Отличная статья!
Идальго; +1 Ответить
2. Nubsdale 19.04.21 10:30 Сейчас в теме
Автор, объясните, почему вы прикручивали всё это к SQLite, а не к 1С ?
3. Идальго 188 19.04.21 10:34 Сейчас в теме
(2) Ну мне так нравится, это удобнее и быстрее, всё из коробки)) Ну и на сервере может и не быть 1С. Потом, я вот не знаю, с 1С (которая файловая база) вообще работают кроме как из самой 1С...
4. Nubsdale 19.04.21 10:37 Сейчас в теме
(3) Статья у вас интересная, вот только было здорово, если бы на 1Сном форуме, была 1С, а не SQLite
freelog; ellavs; +2 1 Ответить
5. Идальго 188 19.04.21 10:41 Сейчас в теме
(4) Аххаа))) В моей практике, когда я занимался 1С разработкой, довольно часто возникала задача из статьи (быстренько с минимальными условиями поднять REST API микросервис). Уверен, что многим 1С разработчикам материал будет полезен и позволит сэкономить свое время на решение подобной задачи. Именно поэтому я опубликовал статью на форуме про 1С )))
Deslime; mnemchinov; JohnyDeath; Upiterus; Quasar; nazirovramzil; v3n7; +7 Ответить
6. user925427 92 19.04.21 11:04 Сейчас в теме
Сама статья написана понятно, ссылки для желающих попробовать работу с внешним API даны.
На мой взгляд, не хватает описания класса задач, для которых применимо данное решение,
так как не для любой задачи оно оптимально.
Зачем нужна дополнительная SQL-база? Автор говорит, что "на 1С - просто не удобно, плюс
ограничения 1С и т.д. и т.п."? Полагаю, что из неё быстрее возвращать информацию по запросам.
Но в этом случае понадобится обмен между 1С и этой базой, а актуальность информации в SQL-базе
будет определяться частотой этого обмена. Если же "создавать и PUT, и DELETE, и POST запросы",
то обмен понадобится двусторонний для актуализации информации в 1С. О необходимости такого
обмена стоило бы упомянуть. А за доступность описания однозначный плюс.
7. Идальго 188 19.04.21 11:32 Сейчас в теме
(6) Ну не знаю, для ознакомительной статьи достаточно и материала, и описания, и функционала. Да вот даже в самой первой строке статьи написано зачем это и для чего. Если говорить в контексте 1С, то знаете, когда мне нужно на базе 1С-ки поднять REST API или там SOAP(WSDL), то я прям объектом метаданных соответствующим из самой 1С и воспользуюсь, м.б. OData прикручу. Но, что делать, если вам срочно понадобился вспомогательный REST API сервис (н-р большая справочная база, ФИАС, микросервис, да что угодно). Не городить же для этого ещё одну базу 1С, когда есть более удобные и быстрые механизмы.
19. NoRazum 28 26.04.21 10:00 Сейчас в теме
(6) Статья годная. Тоже столкнулся при чем тут 1С? и в каком кейсе это может понадобиться?
Кто может прояснить.
8. SaschaG 59 19.04.21 16:27 Сейчас в теме
Как-то выглядит излишне. В 1С есть http-сервисы, которые позволяют реализовать это. А то ведь шанс отказа системы - это шанс отказа любого из ее элементов, а тут мы накидываем сверху еще 2.
9. pm74 194 19.04.21 20:20 Сейчас в теме
(0) еще раскройте тему как запустить сервис, желательно в винде , желательно venv
кстати unicorn под win работает ? gunicorn насколько помню только unix
точно работает Waitress
10. Идальго 188 19.04.21 20:43 Сейчас в теме
(9) оно на всём работает)) В статье написано как запустить и настроить. Ставите питон и пайчарм, делаете файлики как в первой части статьи. Создаете проект, внизу есть терминал - прямо в нём пишите имя файла.
11. pm74 194 19.04.21 21:01 Сейчас в теме
(10) видимо чего то я не уловил , ткните меня в то место в тексте, где написано как виндовый сервис на питоне поднять
12. Идальго 188 19.04.21 21:09 Сейчас в теме
(11) Кажется я понял.. видимо вы хотите запускать программу как службу виндоуз (чтобы в списке сервисов было). Кхм, сорри, но я не знаю. Я делал запускатель - батник с прописанной строкой запуска, который стартовал при старте системы. Вообще, много вариантов гуглится, того как скрипт питона использовать в качестве службы виндоуз.
16. 1cnik2 23.04.21 07:43 Сейчас в теме
(11) следует курить
choco - менеджер пакетов для windows(https://chocolatey.org)
nssm - сервис-менеджер, позволяет регистрировать и запускать консольные программы как сервисы(установка - choco install nssm)
virtualenv - поднятие виртуального окружения python в отдельно взятом каталоге(это важная история, поскольку без этого при наличии более, чем одного подобного сервиса, они начнут конфликтовать по библиотекам, а virtualenv позволит установить библиотеки нужных версий именно для одного сервиса в виртуальное окружение)
13. botokash 272 20.04.21 10:02 Сейчас в теме
Не совсем понял преимуществ создания сервисов на FastAPI перед тем же Flask. Только вижу автодокументацию из коробки, что во фласке решается отдельными либами.
14. Идальго 188 20.04.21 13:55 Сейчас в теме
(13) Ну с Фласком я и не сравнивал. Безусловно, на Фласке всё это тоже можно сделать, но всё же Фласк это больше веб-фреймворк (там же вот и шаблонизатор в коробке вроде Джинджа2), с асинхронностью тоже были вопросы. Ну и FastAPI все же вцелом по-проще, на мой взгляд.
17. 1cnik2 23.04.21 07:46 Сейчас в теме
(13) основные преимущества fastapi перед flask - асинхронность, проверка входящих данных и автодокументация
15. malikov_pro 659 20.04.21 17:54 Сейчас в теме
(0) Не описан вариант организации сервиса из app.py, руками запускать и держать открытой консоль неудобно.

Уточните пожалуйста контекст использования, потому что от него зависит выбор инструмента. Например мне для доступа к MSSQL по HTTP удобнее express.js использовать, т.к. файл один и запускается в службу через pm2.

Если нужна обертка для SQL, то посмотрите на PostgREST, в нем нужно только сформировать структуру БД, автодок присутствует.

Если в рамках python возможно будет удобно https://docs.python-eve.org/en/stable/.

По форматированию:
Код можно организовать под спойлеры, чтобы основное повествование было видно.

(4) В каком контексте хотите использовать rest proxy перед 1С? Если организовать аутентификацию, валидацию и подобное, то можно разобрать данный вопрос, в самой 1С на данный момент с этим туго.
Идальго; +1 Ответить
18. JohnyDeath 299 23.04.21 12:23 Сейчас в теме
Еще есть вот такой проект, где пишем на привычном 1С-языке и имеем почти все плюсы GO
https://github.com/covrom/gonec
Скрипт может быть скомпилирован в один исполняемый файл. Работает под любой ОС
Идальго; +1 Ответить
Оставьте свое сообщение

См. также

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

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

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

10.03.2016    57074    Serginio    33    

API ОФД-Я разбор документации с примерами

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

Примеры запросов 1С для получения данных с ОФД-Ярус через API.

20.04.2021    322    www76    0    

Работа через сервис 1С-Отчетность нескольких пользователей

Регламентированная отчетность Зарплата WEB v8 v8::СПР ЗУП3.x Россия БУ ФОМС, ПФ, ФСС Бесплатно (free)

Организации, в которых количество сотрудников превышает установленное значение, обязаны отправлять отчетность по телекоммуникационным каналам связи. Это может быть Контур-Экстерн, Такском или любой другой провайдер. Все чаще пользователи 1С используют сервис 1С-отчетность. И все чаще сертификат оформляется на сотрудника отдела кадров или бухгалтерии. В случае, если нужно оформить несколько сертификатов, возникают трудности в версии ЗУП 3.1.14 и более поздних. О том, как с ними справиться, пойдет речь в данной публикации.

05.04.2021    582    keat24    1    

Wildberries. Заполнение карточек товаров. Как получить значение справочников?

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

Wildberries. Заполнение карточек товаров. Как получить значение справочников? в документации это описано очень скромно, пытаюсь рассказать на основании своего опыта.

31.03.2021    562    sergeyisa    0    

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

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

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

10.03.2017    26632    ruha    21    

Как получить ключ поставщика Wildberries (uuID), supplierID, Идентификатор поставщика

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

Как получить ключ поставщика Wildberries (uuID), supplierID, Идентификатор поставщика, для работы с карточками товара.

18.03.2021    735    sergeyisa    7    

Правила обмена больше не нужны

Внешние источники данных Обмен через XML Перенос данных из 1C8 в 1C8 Распределенная БД (УРИБ, УРБД) WEB v8 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    6946    Nikola23    35    

Интеграция "1С:Управление торговлей 10.3" с Yandex SpeechKit для распознавания телефонных звонков

WEB Интеграция Телефония, SIP Бесплатно (free)

Распознавание телефонных звонков позволяет контролировать работу менеджеров, организовать для них дополнительный KPI, помогает разбирать конфликты и категоризировать звонки по вхождению слов. О своем опыте интеграции «1С:Управления торговлей 10.3» и сервиса Yandex SpeechKit на INFOSTART MEETUP Saint Petersburg.Online рассказал ИТ-директор компании «Умный дом» Федор Рыжков.

12.03.2021    716    zzhiraf_    0    

Информер для сайта , актуальные релизы 1С + Проверка подписки ИТС. Промо

WEB Администрирование данных 1С Сервисные утилиты Бесплатно (free)

Небольшой код который встраивается на сайт и выводит информацию о последних релизах конфигураций 1С

12.09.2014    40999    Malfarion    34    

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

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

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

01.03.2021    903    kite2    2    

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

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

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

01.03.2021    616    osivv    1    

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

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

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

24.02.2021    706    user823999    6    

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

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

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

11.04.2013    42379    YPermitin    41    

Бот Telegram и HTTP сервис в 1С

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

Настройка рабочего вебхука telegram для 1С используя IIS (Internet Information Services - встроенный в windows веб-сервер). Мой опыт.

26.01.2021    5691    solidsun    10    

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

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

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

18.01.2021    11065    jenyavp    43    

1С и Умный Дом. Управление голосом

WEB Интернет вещей (IIoT) 8.3.6 Бесплатно (free)

Возможно ли управление устройствами умного дома из 1С, да ещё и голосом? Можно ли без умных колонок Google Home, Alexa, Алиса и иных платформ, а также без приложений от Google, Amazon и других управлять этими устройствами? Мой ответ – ДА, можно, нужно просто иметь умное устройство, имеющее возможность работы в DIY, 1С и программу распознавания голоса и взаимодействия с 1С.

04.01.2021    2083    osivv    15    

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

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

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

03.06.2013    30928    anig99    6    

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

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

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

28.12.2020    2279    SizovE    23    

1С и Умный дом

WEB Интернет вещей (IIoT) 8.3.8 Бесплатно (free)

Возможно ли управление устройствами умного дома из 1С? Можно ли, минуя сложные настройки ZigBee, Z-Wave и иных платформ, а также без приложений от Google, Amazon и других управлять этими устройства? Мой ответ – ДА, можно, нужно просто иметь умное устройство, имеющее возможность работы в DIY, ну и, естественно, 1С.

21.12.2020    1603    osivv    8    

[TinyMCE] - редактор HTML WYSIWYG. Интеграция во все виды управляемого и обычного приложения

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

В статье рассмотрены вопросы использования во всех режимах работы 1С Предприятие 8.3 редактора TinyMCE в поле HTML дополнительного функционала.

14.12.2020    946    user1206119    0    

Организация удаленного доступа к корпоративной информационной системе — это просто ! Промо

Внешние источники данных Монитор заказов WEB Монитор заказов Бесплатно (free)

Хочу поделиться своим опытом создания web морды к корпоративной информационной системе на базе 1С. Необходимо организовать сбор заказов от удаленных пользователей. - Каждый пользователь видит свой набор данных, и работает со своими документами. - Доступ по логину/паролю, работа в основном с планшетов (iPad) или с десктопа. - Сервер должен находиться за пределами организации. - Себестоимость 1 пользователя не более 10$ за месяц. - Использование в основном мобильного канала связи GPRS (~100 КБ/с).

31.08.2012    28936    avhrst    13    

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

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

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

24.11.2020    854    SizovE    4    

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

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

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

19.11.2020    4777    markbraer    11    

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

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

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

17.11.2020    1816    SizovE    2    

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

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

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

10.11.2020    7509    SizovE    2    

Как я бесплатно пишу чат-ботов WhatsApp на 1С

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

На разработку чат-бота требуется время. Как правило, время уходит на ознакомление с API, отладку, приемку. Как сэкономить и не платить за использование API на время разработки? Делюсь своим опытом.

02.11.2020    2436    andrew_shamin    10    

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

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

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

30.10.2020    2323    Максим-777    14    

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

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

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

29.10.2020    1027    SizovE    0    

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

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

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

29.10.2020    4495    John_d    26    

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

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

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

05.10.2020    1176    malikov_pro    2    

Использование HTTP REST обертки xmysql для работы с MySQL на примере OpenCart

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

В статье опишу вариант работы с MySQL базой используя HTTP.

28.09.2020    2002    malikov_pro    2    

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

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

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

28.09.2020    1901    dmitry-irk38    4    

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

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

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

23.09.2020    3129    hpi    10    

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

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

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

22.09.2020    6284    hpi    7    

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

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

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

22.09.2020    1585    malikov_pro    4    

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

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

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

18.09.2020    1194    R_o_n_n_y    3    

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

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

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

11.09.2020    3712    malikov_pro    11    

Дневник боли и страданий. Как я переходил от The Bat! к MS Outlook

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

Мой опыт перехода от The Bat! к MS Outlook. Сравнение двух программ, киллер-фичи, лайфхаки и рецепты из интернета. Все в одном месте и проверено автором на актуальных релизах сентября 2020 года.

02.09.2020    2063    gubanoff    15    

Формирование документа Google Docs из шаблона используя Google Apps Script

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

В статье опишу работу скрипта для формирования документа с публикацией по HTTP.

25.08.2020    1882    malikov_pro    2    

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

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

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

24.08.2020    1853    ComboBoy    1    

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

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

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

24.08.2020    1762    malikov_pro    26    

Использование скриптов при формировании запросов используя Postman

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

В статье опишу применение JS скриптов а postman при работе с API.

22.08.2020    3187    malikov_pro    8    

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

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

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

12.08.2020    3040    pavelpribytkin96    10    

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

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

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

07.08.2020    8044    YPermitin    22    

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

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

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

06.08.2020    2131    pavelpribytkin96    6    

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

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

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

08.07.2020    5147    malikov_pro    8