Готовим API правильно (ну или почти правильно)

13.06.23

Интеграция - WEB-интеграция

При реализации онлайн-сервиса на 1С важно правильно организовать доступ к нему через REST API. О том, как спроектировать, описать, опубликовать и протестировать API для своего продукта на 1С, на конференции Infostart Event 2021 Moscow Premiere рассказал CTO WiseAdvice.Tech Олег Филиппов.

 

Мы уже убедились в том, что на 1С можно строить инструменты интеграции с крупными Enterprise-системами и различными экосистемами.

Первое, что нужно сделать для такой интеграции – это реализовать API, потому что именно API стоит между 1С и всеми прочими системами. Или между разными базами 1С.

 

Зачем нужен API?

 

 

Зачем нужен API? Есть же EnterpriseData, Конвертация данных, COM-соединение? К сожалению, сейчас в 1С:

  • EnterpriseData уже все наелись.

  • Конвертация данных – прекрасный инструмент, но со своими ограничениями.

  • Ну а о COM-соединении и говорить нечего.

 

Стандарты

 

 

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

Один из них – это стандарты.

Моя любимая фраза: «Лучший код – тот, который не написан. Лучшая интеграция – та, которая не разработана. Лучше всего – когда ничего делать не надо».

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

 

 

Слышали про Zapier? Если у вас есть какое-то решение, которое интегрируется с другим решением, и эти решения очень популярны – допустим, это Jira и Redmine, Jira и YouTrack – то прежде чем писать интеграцию из одного в другое, зайдите на Zapier и посмотрите, может, для них уже есть готовая интеграция (*рекомендация по состоянию на 2021-й год).

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

В базовом варианте это бесплатно, это open source, это круто. Это одна из причин, чтобы все-таки использовать REST API.

 

 

Таких сервисов как Zapier много. И если в заграничной буржуиндии популярен Zapier, то в нашей России – как пример, Albato. Я сам с ним не работал, но он, по крайней мере, выводится у нас на первых позициях в Google.

В Albato можно найти готовые варианты интеграций для наших отечественных систем, вроде Битрикс, MyTarget, AmoCRM.

1С там почему-то нет, и мне кажется, что это «самолетик» в сторону фирмы 1С – надо бы им туда со своим OData встать.

 

Инструменты

 

 

Интеграция через API приятна еще и тем, что есть инструментарий.

 

 

В очередной раз показываю в докладе картинку с Fiddler – им нужно уметь пользоваться.

Я регулярно на собеседование спрашиваю: «Чем отлавливать содержимое запроса, если непонятно, что пришло из сервиса в 1С?» Мало кто это знает.

С помощью Fiddler вы можете посмотреть все, что у вас гуляет по сети внутри одного компьютера, даже если данные защищены HTTPS.

Там все просто и удобно. Никакого blackbox внутри API интеграции нет, никогда не было и не будет.

 

 

Разработчиков во всем мире много, и они напилили очень много инструментов для той интеграции, которой пользуются. Например, для JS-ников прекрасный SOAP уже отошел на второй план, они больше любят REST или GraphQL.

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

 

 

Postman. Про него я чуть позже расскажу подробнее, мы посмотрим в сторону Postman flow.

 

 

И SoapUI – он уже не очень востребован и потихоньку уходит на второй план.

 

Скорость

 

 

Событийная интеграция – это очень важная история, чтобы обеспечить стабильность и скорость.

Что прикольного в событийной интеграции?

Допустим, у вас есть две базы. Из одной вы выгружаете большой XML, в другую загружаете – «Конвертация данных» с этим прекрасно справляется.

Но удобнее тот же самый XML, вернее, уже JSON, выгружать через событийку. Это когда вы кучу маленьких объектов в JSON куда-то закидываете – например, в Spark или в Kafka.

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

Kafka – настраивается в три кнопочки.

Не нужно думать, что это что-то из мира Highload, это универсальный инструментарий, такой же, как, к примеру, файловая система.

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

Раньше говорили, что 1С не потянет событийную интеграцию, потому что там ничего не параллелится. 1С потянет все. Единственное «узкое горлышко» у 1С, которое может повлиять – это СУБД. Но СУБД PostgreSQL и MS SQL, которые поддерживает 1С, умеют записывать параллельно в несколько потоков, и делают это прекрасно. Поэтому не нужно в интеграции передавать данные последовательно – с одной системы быстро забираете, а в другую сразу пишете параллельно потоков в 50.

Все знают этот замечательный код «ОбменДанными.Загрузка = Истина». У вас там не будет блокировок. Если у вас там блокировки, значит, что-то с архитектурой не то.

Поэтому любую перегрузку можно параллелить, сколько вам влезет. Любую перегрузку можно сделать предельно быстрой, красивой, крутой.

Для этого нужно просто сделать API – читать не через XML-файлики, а просто отправлять REST-запрос в Kafka через Confluent и потом в другой системе-приемнике читать через тот же Confluent. Все. Это делается предельно просто.

 

Выбираем формат

 

 

Прежде чем разрабатывать API, надо выбрать формат. Я рассмотрю три.

 

REST

 

 

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

Единственное, что нужно знать про REST – это HTTP-методы. Выучите их, пожалуйста, это важно.

  • POST данные пишет.

  • DELETE удаляет – если указать id-шник, удалит конкретного пользователя, без id-шника удалит всех.

  • GET без id-шника получит всех, с id-шником получит одного.

Конечно, для обмена через JSON есть еще RESTful (REST без состояния), где есть дополнительные правила для HTTP-кодов ответов. Но на поверку это никто не соблюдает, кроме тех, кто что-то мегасуперское пишет.

Но обычные правила REST для HTTP-методов нужно запомнить, и HTTP-сервисы делать нормальными, человеческими, адекватными.

 

GraphQL

 

 

Страшный GraphQL из какого-то другого мира. Ничего подобного, GraphQL прекрасный.

 

 

GraphQL подойдет 70% из вас. Вы можете легко развернуть у себя GraphQL и использовать. Вам это понравится.

 

 

GraphQL отличается от REST одной простой штукой – он добавляет в процесс обмена некое подобие middleware, т.н. GraphQL-сервер.

У нас в WiseAdvice на практике работа с GraphQL не обкатана, потому что мы используем MuleESB, который эти вопросы решает, нам GraphQL не так принципиален. Но если у вас никакого middleware пока нет, GraphQL – прекрасная история.

Хотя GraphQL – это не совсем middleware в полном смысле. Для чего нужен?

Например, если вам нужно выбрать из базы данные таблиц Matches, Teams и Players, 80% фронтендеров не будут заморачиваться – они получат JSON-данные по каждой из этих табличек отдельно, потом сделают мэп и будут это дело джойнить на фронте. Это плохо, потому что нужно обработать три HTTP-запроса. А если у вас медленный интернет по HTTP 1.1, вам требуется установка соединения, обмен с сертификатами, хендшейки – вся эта байда вам в десятки раз удлинит ответ сервера, клиенты будут ждать.

А GraphQL: во-первых, заставляет фронтендеров работать по-человечески, а во-вторых, позволяет все это дело передать за один запрос.

 

 

Вот так устроен GraphQL – запрос, операция, параметры. Детально на этом останавливаться не будем.

 

 

Теперь самое большое внимание – как быть с 1С. Страшный GraphQL. Что нам делать?

 

 

Вот так выглядит вызов GraphQL из 1С. Вам достаточно написать этот код, и вызов GraphQL прекрасно заработает. От обычного HTTP-запроса отличается только тем, что там query написан.

Формат запроса в GraphQL выучивается за 15 минут – и, пожалуйста, вы прекрасно можете использовать GraphQL.

Тут, кстати говоря, еще открытый сервер указан на получение вакансий для американских стартапов. Вызывается легко. 1С в качестве клиента GraphQL может работать легко.

 

 

В качестве сервера 1С тоже работает беспроблемно. Тут, где указан REST API, может быть 1С, поскольку 1С экспортирует REST API вообще без проблем – это либо OData, либо любой другой REST API, который вам нравится.

 

 

Покажу кейсы, где это используется.

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

Для этого вам нужно:

  • Залезть в 1С:ЗУП, взять оклад.

  • Потом залезть в CRM, получить статистику по сделкам.

  • Проверить оплаты в Бухгалтерии.

  • И потом еще в УТ получить его продажи.

Чаще всего, все те же самые решения могут быть не на 1С, но сам бизнес-процесс это не меняет.

Что сделает 1С-ник из 90-х? Он здесь сделает для базы портала еще одну отдельную 1С-базу и будет к ней писать запросы – дай бог, если еще REST-овые.

На самом деле ставится Apollo-сервер, публикуются отдельные HTTP-сервисы, и все.

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

 

 

Мы все любим практику. Я подготовил специальный GitHub-репозиторий с примером обращения к 1С через GraphQL, куда выложил:

  • готовый GraphQL-сервер, в который нужно будет написать три строчки кода;

  • и простенькую маленькую 1С, которую нужно развернуть на веб-сервере, чтобы она отвечала на HTTP-вызовы.

Запуск этого примера занимает 10 минут. Если учесть, что EDT будет запускаться долго, то, наверное, минут 15 ?.

 

 

Здесь показано, как это будет выглядеть.

На веб-сервере публикуется база 1С с HTTP-сервисами, чтобы можно было получать данные по REST.

Ставите Node.js, разворачиваете GraphQL-сервер на localhost:4000, и можете делать запросы к 1С – он вам покажет описание всех полей, всех схем. Все, что экспортируется, там отображается.

Выполнили запрос – получили результат.

 

 

Если вам лень ставить Node.js, можете попробовать эти решения:

 

 

Еще есть https://stackblitz.com/ – ничего не напоминает? Похоже на 1С:Элемент. По-моему, форк от VS Code в вебе не сделал только ленивый.

 

gRPC

 

 

Еще один протокол – gRPC. С ним будет немного сложнее. Это некая более модная штука.

Если GraphQL это примерно то же самое, что и Rest, то gRPC чуть посложнее. И тут, конечно, с 1С будут проблемы.

Но gRPC быстрее работает.

  • Там HTTP/2;

  • там Protobuf;

  • там Service Mesh;

  • и кодогенерация «из коробки».

Но с 1С будут проблемы, потому что gRPC нужен прежде всего, чтобы все выполнять быстро, а быстро это можно выполнять за счет HTTP/2 и Protobuf.

С 1С, как вы догадались, нам придется все оборачивать в HTTP интерфейс.

 

 

Если в 1С надо быть клиентом gRPC, это не проблема – ставится прокси https://github.com/grpc-ecosystem/grpc-gateway. Это за 15 минут разворачивается.

А с сервером 1С, как с сервером gRPC, так просто не получится. Хотел сделать какой-нибудь компонентик универсальный, но универсального не получается, потому что все-таки это RPC, у вас должна быть определена функция, функция должна быть observable.

Получается, что для каждого кейса нужна отдельная ВК для сервера gRPC, которую вы сами должны будете написать.

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

 

Описываем

 

Окей. Закончили с хипстерскими штучками. Давайте пойдем в описание.

 

OpenAPI

 

 

Если у вас есть API, но он не описан – у вас нет API. Эту фразу надо уловить и усвоить.

 

 

Для описания API есть официальная спецификация OpenAPI, которая размещена по ссылке https://spec.openapis.org/oas/latest.html.

OpenAPI – это не Swagger. Swagger использует спецификацию OpenAPI и это – правильная история.

Для REST – это, пожалуй, единственное, что нужно сделать. Если вы все-таки в GraphQL не идете, потому что у вас одна база, то, пожалуйста, возьмите и опишите API по OpenAPI. Это делается быстро.

 

 

Для этого используются классический YAML. Кто пугается YAML – не пугайтесь.

YAML пишется быстро, Postman вам подсказывает, как его писать.

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

Еще Ада Лавлейс говорила: «Если ваша работа не задокументирована, то вы не работали».

 

 

В WiseAdvice мы прекрасно используем документацию в стандарте OpenAPI – зашло прям очень хорошо почти во все команды.

Если бы не отдельные глюки Postman, зашло бы вообще прекрасно.

 

 

На слайде – живой пример, как это выглядит.

Видно описание по компонентам – мы можем какие-то коды возврата описывать.

Причем это делали ребята, которые практически не знали, что это такое. Они за полчаса сели и выучили. Потом по этому генерируется документация.

 

 

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

Выглядит прекрасно. С примерами, с cURL, с описанием о том, какие JSON принимает, какие генерирует.

Причем, все это дело человек не писал руками. Человек просто писал схемку.

 

 

Вот так это потом выглядит в 1С.

Чтобы API выглядело по-человечески, оно должно выглядеть вот так. По крайней мере, один сервер.

 

 

Мой любимый слайд для ленивых. Если прямо не хочется в YAML писать схемки, есть замечательная тулза Spotlight https://stoplight.io/api-design.

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

 

Публикуем. API Gateway

 

Окей. С описанием разобрались. Теперь публикация. API Gateway.

 

 

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

  • Любой API у вас должен маршрутизироваться.

  • API должен логировать вызовы, которые были, если вдруг потом нужно будет расследование ошибок.

  • Если вы этот API еще и продаете, как какой-нибудь HeadHunter, вам его нужно билить.

  • Должна быть авторизация и логирование – чаще всего общие.

  • Защита от DDoS.

  • В случае, если у вас по API отдаются статические данные, вам API нужно кэшировать.

Все это делается через API Gateway.

 

 

В WiseAdvice функцию API Gateway выполняет MuleESB. Он выполняет все те же самые функции – мы там и аутентифицируем, и защищаемся от DDoS, и кэш встраиваем. Много служебных функций, которые общие для всех API, происходят именно там.

А дальше он маршрутирует. Часть может пойти в Elastic, часть файлик с хранилища забрать. Есть какой-то бэкэнд на ноде, он может оттуда его отдать. И с 1С-ных приложений тоже что-то забрать.

 

On-premice API Gateway services

 

 

API Gateway есть и опенсорсные, их много.

  • Самый популярный, наверное, это Kong (тот, который с гориллой)

  • Мы у себя используем в качестве API Gateway MuleESB.

  • Тук тоже популярный.

  • Остальные тоже можете посмотреть:

 

Облачные API Gateway

 

 

Если вы решились использовать облачную инфраструктуру, там организовать API Gateway еще проще. В каждом клауде есть свой API Gateway.

 

 

Вот так это работает в Serverless Яндекс облака.

 

 

Это такой же Open API: просто схемка, только в одном прекрасном месте вы указываете расширение от Яндекс, к примеру, и говорите, что вот этот метод API вызывает ту функцию Serverless.

То есть вы просто написали код, и у вас все работает – больше ничего не нужно.

Описали API в OpenAPI, написали клауд-функцию и вот оно готовое приложение развернутое и масштабируемое.

Когда-нибудь, я надеюсь, в Яндекс OneScript все-таки доделают и будем вызывать на OneScript.

 

 

В Амазоне этого чуть побольше, конечно.

 

 

В Амазоне, в принципе, Serverless более продвинутый, там с этим поприятнее.

 

Тестируем

 

Перейдем к нашей главной теме – тестирование.

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

 

 

Тестирование – это важная история для устойчивости вашей системы.

Изначально я это называю Postman flow.

 

 

Когда вы ставите Postman, у вас в одном приложении содержится:

  • Общая информация API.

  • Здесь же вы можете его определить, YAML написать.

  • Здесь же вы можете потом сгенерировать документацию.

  • Сгенерировать тесты.

  • Настроить деплоймент этого всего API.

  • И еще мониторинг повесить.

Прекрасно. Все, что для API нужно, у вас есть в одном месте, в одном тулзе с коллективной работой.

Здесь нет только разработки – разработка у нас в 1С.

Куда бы вы вставили разработку в этом flow? Перед тестами или после тестов? Правильно – после тестов.

 

 

Кто меня знает, тот слышал, что я всегда был противником TDD.

Не надо через TDD разрабатывать отчет на СКД. Это low-code разработка.

Не надо через TDD разрабатывать какую-нибудь интерфейсную механику. TDD – это дикий overhead для таких задач.

Для API TDD – это must have. Это нужно. Без TDD API ну так себе. Вас Postman заставит TDD сделать.

Знаете почему? Ключевая история. Вот вы 1С-ник и вы сделали API для фронтендера либо для 1С-ника с соседней базы. Сделали API, описали его методы.

Дальше вы разворачиваете mock-сервер (тестовый сервер с заглушками для интеграционных методов) и говорите своему коллеге в него стучаться, чтобы получить тестовый пример.

Этот же mock-сервер содержит экземпляр возвращаемых данных – то есть, у вас уже есть готовый тест.

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

Как только сверились, разработка закончена, меняете среду разработки на продакшен и отдаете вашему фронтендеру. У вас готовое приложение. Бинго.

Чтобы описать API для фронта либо для соседней базы, TDD – это крайне важный и полезный инструментарий, он сюда заходит просто на ура. Особенно с Postman.

 

Возможности Postman

 

 

Чтобы не загонять совсем что-то абстрактное, вот так Postman выглядит.

 

 

Можно писать pre-request скрипты, если хотя бы чуть-чуть JS владеете. Не надо прям быть богом JS, надо уметь if-then написать.

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

У вас есть все тесты, вы можете сразу протестить, как ваше API отработает с вашей базой.

 

 

Каждый разработчик создает себе environment, говорит: «Стучись в мою базу с такими-то credentials». А потом просто переключается и все прогоняет у себя – тестит, отлаживает, делает все, что ему нравится.

 

 

Можно настроить мониторинг API.

 

 

Мониторинг выглядит вот так.

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

Если вы в тайминг не уложились или ответ не тот вернули, вам сразу напишут телеграмм, что ваш API не работает или ваша 1С упала. Вы сразу все об этом узнаете. Причем для этого не надо ничего делать – Postman сам за вас все делает. Вам нужно просто написать API и сделать экземпляр тестов.

 

 

Mock-сервер. У вас фронтендер не ждет, пока 1С-ник закончит работать, а работает сразу.

 

Newman в Gitlab CI

 

 

И последняя, наверное, история, которую еще хотел осветить, это Newman.

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

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

Newman — это консольный клиент Postman. У Postman есть коллекция, вы ее просто экспортируете и говорите, что по этой коллекции с таким-то environment нужно прогнать все тесты, которые там есть. И тестируете так каждый раз, когда выкатываете новую версию.

 

 

Встраиваете Newman в свой GitLab CI, он запустится и покажет вам результаты прохождения всех тестов.

Обязательно попробуйте этот инструментарий в работе, потому что все это действительно вещи крутые, прикольные, позволяют быстро сэкономить время на том же MVP.

 

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

Статья написана по итогам доклада (видео), прочитанного на конференции Infostart Event 2021 Moscow Premiere.

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17887    19    22    

17

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20017    13    17    

17

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14492    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1524    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bulpi 217 15.06.23 19:15 Сейчас в теме
Такое впечатление, что автор писал статью для себя, и еще для 26 умников, которые поставили +
sulfur17; sandr13; _OLEG; +3 Ответить
4. comol 5109 21.06.23 01:06 Сейчас в теме
(1) ЭЭЭ... а можно подробнее? Это доклад был. Просто в принципе статья по практике работы построена, кажется как "гайд". "Для себя" это вообще не нужно было
7. sulfur17 66 23.06.23 12:16 Сейчас в теме
(4) пример
Зачем нужен API? Есть же EnterpriseData, Конвертация данных, COM-соединение? К сожалению, сейчас в 1С:
EnterpriseData уже все наелись.
Конвертация данных – прекрасный инструмент, но со своими ограничениями.
Ну а о COM-соединении и говорить нечего.

какую информацию тут может почерпнуть человек не знакомый с темой?

EnterpriseData уже все наелись

Типа, технология не модная, значит использовать ее не надо?

Ну а о COM-соединении и говорить нечего.

Почему?
2. Ish_2 1113 15.06.23 23:43 Сейчас в теме
Олег , ты совсем оторвался от народа.
Впрочем , писать статьи нужно ! Хотя бы только для того , чтобы упорядочить свои знания.
5. comol 5109 21.06.23 01:08 Сейчас в теме
(2) Я что то не то начал подозревать... но что не так то? :(
3. NoRazum 29 16.06.23 06:14 Сейчас в теме
всегда интересно что на границе разных продуктов и как они могут общаться.
6. sulfur17 66 23.06.23 12:12 Сейчас в теме
а зачем параллелить перегрузку? 50 маленьких потоков отработают быстрее чем 1 большой? А за счет чего?
Логика подсказывает что наоборот: разбиение данных на 50 кусков увеличит накладные расходы на персылку в 50 раз.
8. nixel 1434 05.07.23 09:51 Сейчас в теме
(6) пересылка обычно занимает меньше времени, чем обработка.
9. BackinSoda 06.03.24 10:15 Сейчас в теме
Когда только люди успевают изучать десятки новых программ ?
10. Novomir 103 05.07.24 16:12 Сейчас в теме
Статье год. За это время появились реализованные решения? Хотелось бы посмотреть описание хоть одного внедренного проекта.
Оставьте свое сообщение