DaJet QL - расширяемый язык запросов

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

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

DaJet QL обмен данными свёртка данных интеграция web сервисы язык запросов

DaJet QL поддерживает практический полный синтаксис SQL Server 2005-2016. Кроме этого это расширяемый язык запросов. Обращение к объектам СУБД выполняется в терминах метаданных 1С. Доступ к возможностям этого языка запросов реализован в виде web api сервиса. Результаты запросов возвращаются в виде JSON.

Данная статья является продолжением моего выступления на Infostart 2019 Inception. В этой статье я расскажу о развитии проекта и его новых возможностях. Для того, чтобы не нарушать права фирмы 1С на её торговый знак, проект переименован на DaJet.

 

Название DaJet (даджет) образовано от слов data (данные) и jet (реактивный).
Кроме этого является модификацией слова gadget (гаджет) и может быть интерпретировано как "приспособление для работы с данными".

Новые возможности.

1. Добавлена возможность обращаться в одном запросе не только к разным базам данным, расположенным на одном экземпляре SQL Server, но и к связанным (linked) серверам.

2. Реализован сервер web api, позволяющий переводить запросы в терминах 1С в запросы на T-SQL, а также выполнять эти запросы при помощи любого web api клиента.

3. Используется новый парсер языка запросов, поддерживающий практически полный синтаксис SQL Server 2005-2016. Это означает, что поддерживаются как DDL, так и DML инструкции. Также возможно использование DMV, табличных переменных, оконных функций, табличных указаний (хинтов) и т.д. и т.п.

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

 

Как это работает.

1. Выгружаем метаданные 1С при помощи специальной обработки в XML.

2. Настраиваем web сервер DaJet QL, который реализован на базе web сервера Kestrel (в основном описываем структуру каталогов сервера СУБД и указываем URL).

3. Выполняем запросы к web серверу DaJet QL при помощи web api.

 

В целях ознакомления с функционалом DaJet QL web api в качестве клиента можно использовать Postman. Коллекция вызовов web api для импорта в Postman прилагается.

Кроме этого, к данной статье прилагается демонстрационный web api клиент в виде обработки 1С.

 

Репозиторий DaJet QL на GitHub

Продолжение: "JSON в запросах DaJet QL".

 

Описание web api сервера DaJet QL.

 

GET metadata/use

 

Пример:

http://localhost:5000/metadata/use

 

Показывает текущий сервер и базу данных, которые используются web сервером DaJet QL в данный момент.

 

POST metadata/use/{server}/{database}

 

Пример:

http://localhost:5000/metadata/use/mysrv/mydb

 

Устанавливает текущий сервер и базу данных для web сервера DaJet QL, в контексте которых выполняются последующие запросы к СУБД. Аналог команды USE [database] SQL Server.

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

 

POST script/translate

 

Пример:

http://localhost:5000/script/translate

Тело запроса:

{

   "script": "SELECT Ссылка FROM Документ.ПоступлениеТоваровУслуг"

}

Тело ответа:

{

   "script" : "SELECT _IDRRef FROM _Document123"

}

 

Этот метод позволяет посмотреть какой запрос SQL формирует web сервис DaJet QL перед его выполнением.

 

POST script/execute

 

Пример:

http://localhost:5000/script/execute

Тело запроса:

{

   "script": "SELECT Ссылка FROM Документ.ПоступлениеТоваровУслуг"

}

Тело ответа:

[

   { "_IDRRef" : "{123:da142d98-b1e9-489a-11e5-cfdd69e2ce6c}" },

   { "_IDRRef" : "{123:da142d98-b1e9-489a-11e5-cfdd69e2ce73}" }

]

 

Метод выполняет запрос и возвращает результат его выполнения в формате JSON (массив структур записей).

 

Ограничения языка запросов.

1. Работа с составными типами данных 1С, содержащими простые типы данных, не поддерживается. Поддерживается только работа с составными ссылочными типами данных.

2. Обращение к реквизитам объектов через точку (операция разыменования) с автоматической генерацией LEFT JOIN в запросах SQL не поддерживается. Подробнее о работе с реквизитами ссылочного типа будет рассказано ниже.

 

Обращение к объектам в запросах.

 

1. Обращение к объекту в контексте текущей базы данных:

Документ.ПоступлениеТоваровУслуг

 

2. Обращение к табличной части объекта в контексте текущей базы данных:

Документ.ПоступлениеТоваровУслуг.Товары

 

3. Обращение к объекту из другой базы данных:

[torg_db].Документ.ПоступлениеТоваровУслуг

 

4. Обращение к табличной части объекта из другой базы данных:

[torg_db].Документ.ПоступлениеТоваровУслуг.Товары

 

5. Обращение к объекту связанного сервера:

[bi_server].[torg_db].Документ.ПоступлениеТоваровУслуг

 

6. Обращение к табличной части объекта связанного сервера:

[bi_server].[torg_db].Документ.[ПоступлениеТоваровУслуг+Товары]

 

В последнем случае использование шаблона вида [{Объект}+{ТЧ}] обязательно, так как парсер языка запросов умеет работать только с идентификаторами таблиц, имеющими 4 составных части. Использование квадратных скобок и символа "+" также обязательно.

 

При этом можно также обращаться к таблицам СУБД по их настоящим именам, заданным на уровне СУБД, например, так: SELECT _IDRRef FROM _Document123.

Это даёт возможность обращения в одном запросе к таблицам других СУБД, выгрузки данных во внешние источники или их загрузки из них. Например, это может выглядеть так:

SELECT

   РТУ.СуммаДокумента AS СуммаРеализации,

   CO.OrderSum        AS СуммаЗаказа

FROM

   Документ.РеализацияТоваровУслуг AS РТУ

   LEFT JOIN [orders_db].CustomerOrders AS CO

   ON РТУ.Номер = CO.DocNumber

 

Обращение к ссылочным реквизитам в запросах.

 

Язык запросов DaJet QL работает с ссылочными типами данных не так как 1С. Для работы с такими внутренними значениями ссылки как код типа данных объекта (TRef) и уникальным идентификатором объекта (RRef)в языке запросов DaJet QL на уровне парсера реализована работа с такими специализированными свойствами ссылки как uuid, type и TYPE.

 

Например выполним следующий запрос:

 

SELECT TOP 1

   Ссылка,

   Ссылка.uuid,

   Ссылка.type

FROM

   Документ.ПоступлениеТоваровУслуг

 

В результате мы получим следующий SQL запрос, используя web метод script/translate:

 

SELECT TOP 1

   (0x0000007B + _IDRRef), /* binary(20) */

   _IDRRef,               /* binary(16) */

   0x0000007B            /* binary(4) */

FROM

   _Document123

 

Таким образом мы видим, что свойство uuid возвращает уникальный идентификатор ссылки, что соответствует полю таблицы СУБД, которое хранит это значение.

Свойство type возвращает код типа объекта, который, в том числе, можно найти в названии таблицы объекта. В данном случае это число 123. Для однозначных реквизитов парсер подставит константу, а для составных ссылочных типов наименование поля таблицы СУБД, в котором хранится это значение.

Специальное свойство TYPE ссылки всегда содержит константу 0x08, что соответствует значению ссылочного типа данных в структуре хранения значений составных типов в таблицах СУБД. Это свойство необходимо исключительно для выполнения соединений между таблицами, так как поле, имеющее суффикс _TYPE, на уровне СУБД может входить в индекс. Более подробно об этом рассказано ниже.

 

Функция TYPEOF.

 

Язык запросов DaJet QL реализует специальную функцию TYPEOF для получения кода типа объекта аналогично функции ССЫЛКА в языке запросов 1С.

Выполним следующий запрос:

SELECT TOP 1

   Ссылка.type,

   TYPEOF(Документ.ПоступлениеТоваровУслуг)

FROM

   Документ.ПоступлениеТоваровУслуг

 

Получим следующий код SQL:

SELECT TOP 1

   0x0000007B,

   0x0000007B

FROM

   _Document123

 

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

 

Соединение по реквизиту составного типа.

 

Вариант № 1 (используем специальное свойство type).

-- Запрос на языке DaJet QL

SELECT TOP 1
   ФЛ.Наименование AS ФИО,
   БСК.НомерСчета  AS НомерСчета
FROM
   Справочник.ФизическиеЛица AS ФЛ
   INNER JOIN Справочник.БанковскиеСчетаКонтрагентов AS БСК
   ON  ФЛ.Ссылка.uuid = БСК.Владелец.uuid
   AND ФЛ.Ссылка.type = БСК.Владелец.type
   AND ФЛ.Ссылка.TYPE = БСК.Владелец.TYPE

-- Запрос на T_SQL

SELECT TOP 1
   ФЛ._Description AS ФИО,
   БСК._Fld2205    AS НомерСчета
FROM
   _Reference477 AS ФЛ
   INNER JOIN _Reference41 AS БСК
   ON  ФЛ._IDRRef = БСК._OwnerID_RRRef
   AND 0x000001DD = БСК._OwnerID_RTRef
   AND 0x08       = БСК._OwnerID_TYPE;

Вариант № 2 (используем функцию TYPEOF).

-- Запрос на DaJet QL

SELECT TOP 1
   ФЛ.Наименование AS ФИО,
   БСК.НомерСчета  AS НомерСчета
FROM
   Справочник.ФизическиеЛица AS ФЛ
   INNER JOIN Справочник.БанковскиеСчетаКонтрагентов AS БСК
   ON  ФЛ.Ссылка.uuid                    = БСК.Владелец.uuid
   AND TYPEOF(Справочник.ФизическиеЛица) = БСК.Владелец.type
   AND 0x08                              = БСК.Владелец.TYPE

-- Запрос на T_SQL

SELECT TOP 1
   ФЛ._Description AS ФИО,
   БСК._Fld2205    AS НомерСчета
FROM
   _Reference477 AS ФЛ
   INNER JOIN _Reference41 AS БСК
   ON ФЛ._IDRRef  = БСК._OwnerID_RRRef
   AND 0x000001DD = БСК._OwnerID_RTRef
   AND 0x08       = БСК._OwnerID_TYPE;

В данном случае справочник "БанковскиеСчетаКонтрагентов" имеет два справочника владельца: "Контрагенты" и "ФизическиеЛица". На уровне СУБД реквизит "Владелец" состоит из трёх полей. Чтобы использовать индекс по всем этим полям, необходимо соединяться вышеуказанным способом. В таких случаях можно использовать оба варианта: с использованием специального свойства type и функции TYPEOF.

 

Сверка движений документов из разных баз данных.

 

Предположим, что у нас есть две базы данных: торговля и бухгалтерия. Торговля периодически выгружает в бухгалтерию документы установки цен. Нам необходимо выполнить сверку наличия выгруженных из торговли в бухгалтерию документов, а также соответствие цен в обеих базах. Предположим, что документы синхронизируются по ссылкам. Базы данных называются trade и accounting. Запрос может выглядеть так:

SELECT
   УТДок.Дата  AS ТоргДата,
   УТДок.Номер AS ТоргНомер,
   УТЦН.Цена   AS ТоргЦена,
   БПДок.Дата  AS БухДата,
   БПДок.Номер AS БухНомер,
   БПЦН.Цена   AS БухЦена
FROM
             trade.РегистрСведений.ЦеныНоменклатуры      AS УТЦН
   LEFT JOIN accounting.РегистрСведений.ЦеныНоменклатуры AS БПЦН
   ON  УТЦН.Регистратор.uuid = БПЦН.Регистратор.uuid
   AND УТЦН.Регистратор.type = TYPEOF(trade.Документ.УстановкаЦенНоменклатуры)
   AND БПЦН.Регистратор.type = TYPEOF(accounting.Документ.УстановкаЦенНоменклатуры)

   LEFT JOIN trade.Документ.УстановкаЦенНоменклатуры AS УТДок
   ON  УТЦН.Регистратор.uuid = УТДок.Ссылка.uuid
   AND УТЦН.Регистратор.type = УТДок.Ссылка.type

   LEFT JOIN accounting.Документ.УстановкаЦенНоменклатуры AS БПДок
   ON  БПЦН.Регистратор.uuid = БПДок.Ссылка.uuid
   AND БПЦН.Регистратор.type = БПДок.Ссылка.type

В данном запросе предикат первого JOIN’а выглядит следующим образом:

ON  УТЦН.Регистратор.uuid = БПЦН.Регистратор.uuid
AND УТЦН.Регистратор.type = TYPEOF(trade.Документ.УстановкаЦенНоменклатуры)
AND БПЦН.Регистратор.type = TYPEOF(accounting.Документ.УстановкаЦенНоменклатуры)

Соединение по полю _RecorderRRef (Регистратор.uuid) не вызывает вопросов, так как синхронизация документов выполняется как раз таки по внутреннему идентификатору объектов. Однако, соединение по полю _RecorderTRef (Регистратор.type) "в лоб" невозможно, так как документы "УстановкаЦенНоменклатуры" в разных базах имеют разные значения кодов типов объектов. Именно в таком случае пригождается функция TYPEOF. Она помогает установить соответствие между документами из разных баз данных. Эдакая конвертация данных "на лету".

 

Ещё несколько примеров использования в статье "JSON в запросах DaJet QL".

 

Настройка web сервера DaJet QL.

 

1. Распаковать установочный архив DaJet QL в любой каталог.

2. Создать в этом каталоге каталог metadata.

3. Внутри каталога metadata создать каталог c именем сервера СУБД.

4. Выгрузить метаданные 1С обработкой ConfigurationExporter83.epf

в файл xml. Назвать этот файл также как называется база данных

СУБД. Положить этот файл в созданный ранее каталог сервера.

5. В файле настроек web сервера DaJet QL appsettings.json в секции

MetadataSettings повторить структуру каталогов и баз данных

СУБД. Файл настроек, чтобы долго не искать, можно открыть при

помощи show-web-server-settings.bat.

6. При необходимости настроить URL, по которому будет запускаться

web сервер DaJet QL, в том же файле настроек appsettings.json.

7. Web cервер DaJet QL готов к работе. Его можно запустить при помощи

файла run-web-server.bat.

 

Для облегчения понимания как настроить web сервер архив установки содержит уже настроенный каталог для тестового окружения автора статьи. То же самое касается файла appsettings.json.

 

Системные требования.

 

1. Web сервер DaJet QL скомпилирован для платформы win-x64 и linux-x64.

2. Для подключения к SQL Server web сервер DaJet QL использует

встроенную аутентификацию Windows. Следовательно запускать его

нужно под учётной записью, которая имеет доступ к серверу СУБД

и нужным базам данных.

Для linux версии необходимо в Линуксе подключить протокол kerberos для аутентификации на SQL Server. Как это сделать я сам не знаю, но судя по отзывам пользователей DaJet QL, которые пробовали запускаться на Линукс, им это удалось.

3. Требуется установка .NET Core 3.1.3

.NET качаем здесь: https://dotnet.microsoft.com/download

 

Вместо заключения.

 

Использовать web api сервера DaJet QL можно при помощи Postman. Для этого в каталоге утилит лежит файл "OneCSharp Scripting.postman_collection.json". Просто импортируйте эту коллекцию в свой Postman и всё — можно гонять запросы.

 

Кроме этого для 1С есть обработка OneCSharpUI.epf. Это реализация клиента web api DaJet QL. Для работы обработки требуется платформа 1С:Предприятие 8.3.6 и выше.

Обработка платная: приобретая её, вы помогаете развитию проекта. Заранее благодарю всех за эту помощь!

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

Наименование Файл Версия Размер
Клиент web api DaJet QL (обработка 1С)

.epf 9,98Kb
13.06.20
2
.epf 9,98Kb 2 Скачать
Web сервер DaJet QL для windows x64

.zip 19,73Mb
13.06.20
3
.zip 19,73Mb 3 Скачать
Web сервер DaJet QL для linux x64

.zip 13,43Mb
15.06.20
2
.zip 13,43Mb 2 Скачать
fn_sql_to_1c_uuid

.sql 0,67Kb
15.06.20
2
.sql 0,67Kb 2 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. tanya_charm 02.05.20 13:19 Сейчас в теме
Коллеги добрый день.
Можно пару кейсов на применение обработки, в каких случаях это "помогает"?
2. zhichkin 725 02.05.20 17:46 Сейчас в теме
(1) Добрый день!
Спектр применения очень широк. Фактически любая задача, которая не решается при помощи языка запросов 1С, решается при помощи языка запросов 1C#. Например:

1. Обращение к объектам разных баз данных 1С без использования COMConnector в одном запросе 1C#. Даже к базам данных на разных серверах, если эти сервера связанны.
Это позволяет делать быстрые сверки, получение каких-то цифр и прочего из соседних баз без обменов данными, создания web-сервисов на стороне этих соседних баз и прочего интеграционного программирования.

2. Очень быстрый перенос данных из одной базы 1С в другую одним запросом 1C#, даже если схемы баз данных отличаются друг от друга. На практике ускорение достигает пару порядков (больше, чем в 10 раз). Тоже самое касается свёртки данных.

3. Очень быстрое создание web сервисов: написал запрос и всё. Публикация не нужна, сериализация данных 1С в JSON не нужна - всё делается автоматически.

3. Синтаксис и возможности T-SQL полностью доступны. Тут только фантазия разработчика является ограничением.
3. zhichkin 725 02.05.20 17:49 Сейчас в теме
4. kwazi 398 03.05.20 09:27 Сейчас в теме
Пахнет нарушением лицензионного соглашения с 1С
10. mrsmrv 67 07.05.20 17:38 Сейчас в теме
(4) А где 1С запрещает обращаться напрямую к данным? Он же не трогает механизмы платформы 1С. Используются механизмы СУБД же
11. zhichkin 725 18.05.20 18:24 Сейчас в теме
(10) Всем известный официальный ответ фирмы 1С на Ваш вопрос:
https://v8.1c.ru/priobretenie-i-vnedrenie/otvety-na-tipovye-voprosy-po-litsenzirovaniyu-1s-predpriyatiya-8/
Вопрос № 65 в разделе "Лицензирование разработки в системе 1С:Предприятие 8"

1C# НЕЛЬЗЯ использовать для разработки своих решений на базе 1С:Предприятие 8.х без письменного разрешения фирмы 1С.

1C# является исключительно исследовательским проектом, а также попыткой указать на возможные варианты развития платформы 1С:Предприятие 8.х.
5. Vortigaunt 82 03.05.20 13:37 Сейчас в теме
Отличная тема. Я так понимаю, это эволюционное развитие механизма прямых запросов компоненты 1С++ для 1с77, только теперь и для 1с8.
То есть я смогу делать такие вещи:
- Подзапрос в поле запроса
-Функции OVER (Partition by)
-Grouping sets (обещали конечно в новых платформах)
-Рекурсивные запросы через CTE
-Фишку for xml - которая позволяет получить готовую иерархическую структуру, которую можно вывести в многоуровневую таблицу без танцев с бубном. (правда она почему-то корректно работает на небольших объемах, а на больших - обрезает).

Перечитал публикацию и не увидел, чтобы упоминалось. Если сравнивать с прямыми запросами 1С++, то не хватает виртуальных таблиц:
- РегистрНакопления.Остатки (Обороты, ОстаткиОбороты)
- РегистрСведений.СрезПоследних(СрезПервых) - в 1С++ вместо этого было $ПоследнееЗначение - для работы с периодическими реквизитами.

Неплохо было бы добавить такой функционал в язык 1С#.
6. zhichkin 725 03.05.20 14:01 Сейчас в теме
(5) Вы всё правильно поняли =)
Название проекта 1C# по замыслу продолжает цепочку 1С >> 1С++ >> 1C#, а также намекает на цепочку эволюции C >> C++ >> C#.

То есть я смогу делать такие вещи:
- Подзапрос в поле запроса
-Функции OVER (Partition by)
-Grouping sets (обещали конечно в новых платформах)
-Рекурсивные запросы через CTE
-Фишку for xml


Да, всё это можно делать. Практические примеры, дополняющие эту статью: JSON в запросах 1C#

Перечитал публикацию и не увидел, чтобы упоминалось. Если сравнивать с прямыми запросами 1С++, то не хватает виртуальных таблиц:
- РегистрНакопления.Остатки (Обороты, ОстаткиОбороты)
- РегистрСведений.СрезПоследних(СрезПервых) - в 1С++ вместо этого было $ПоследнееЗначение - для работы с периодическими реквизитами.

Неплохо было бы добавить такой функционал в язык 1С#.


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

2. Последнее значение можно получать средствами оконной функцииT-SQL LAST_VALUE.
JohnyDeath; +1 Ответить
7. zhichkin 725 03.05.20 14:09 Сейчас в теме
(5) Более того, если выгрузить метаданные 1С 7.7 в формат XML, который использует 1C#, то можно и к базам 1С 7.7 также обращаться. На практике не проверял, но с точки зрения парсера текста запроса 1C# это должно работать.
Формат этого XML можно посмотреть при выгрузке из 1С 8.x или в обработке ConfigurationExporter.epf, которая идёт в составе дистрибутива web-сервера 1C#.
15. igor_demin@mail.ru 08.06.20 15:16 Сейчас в теме
(7) А как метаданные выгрузить? Не нашел нигде информации об этом?
16. zhichkin 725 08.06.20 16:13 Сейчас в теме
(15) Такую выгрузку нужно написать для 7-ки самостоятельно. Сам не стал делать, так как не вижу в этом перспективы. Хотя в отношении 1С 7-ой версии работа напрямую с СУБД не нарушает лицензионного соглашения с 1С, тем не менее интереса от использующих 7-ку особо не заметил. Конкретных предложений по доработке не поступало. Бесплатно заниматься этим проектом уже устал - более 3-х лет уже потрачено без какой-либо материальной мотивации.
igor_demin@mail.ru; +1 Ответить
8. Vortigaunt 82 03.05.20 14:23 Сейчас в теме
Виртуальные таблицы пока не добавлял, так как обратной связи на эту тему не было и насколько это востребованно не очень понятно.

Это очень важно. Если срез последних еще несложно самому накидать. То получить остатки с регистра накопления - уже задачка со звездочкой. То есть сложность не в том, чтобы получить таблицу остатков, а в том, чтобы реализовать это максимально эффективно. Например, учесть на какую дату в месяце ты получаешь остаток, если ближе к началу - то плюсовать оборот к остатку на начало месяца, если ближе к концу, то отнимать от остатка на начало следующего (или от оперативных остатков, если месяц и так текущий). Потом еще надо помнить про свойство виртуальных таблиц 1С, то что они автоматически группируют данные по использованным полям. Это тоже желательно учесть в языке 1С#.
9. zhichkin 725 03.05.20 15:10 Сейчас в теме
(8) Спасибо за обратную связь! Реализую в следующей версии обязательно.
12. savostin.alex 77 05.06.20 01:59 Сейчас в теме
Доброе время суток.

Про TYPEOF - Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright © 2017 Microsoft Corporation Developer Edition (64-bit) on Windows 10 Enterprise LTSC 2019 10.0 <X64> (Build 17763: )
13. zhichkin 725 05.06.20 03:22 Сейчас в теме
(12) Сделал всё по своей инструкции. Работает "из коробки". Прилагаю скриншот из Postman.
Прикрепленные файлы:
14. zhichkin 725 05.06.20 03:32 Сейчас в теме
(12) Может быть предварительно забыли выполнить метод /metadata/use ?
Прикрепленные файлы:
Оставьте свое сообщение

См. также

Внешняя компонента для работы по Web-socket протоколу Промо

Разработка внешних компонент WEB v8 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

5 стартмани

30.03.2018    24345    34    Ditron    68    

HTTP сервисы по OpenAPI спецификациям

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

Начинаем путь разработки HTTP сервисов с создания спецификаций OpenAPI. Автодокументация сервисов формата Swagger UI без зависимостей. Настройка сервисов в режиме предприятия.

1 стартмани

29.06.2020    4750    1    shmalevoz    19    

Конструктор HTTP-соединений в 1С (обычные и управляемые формы)

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

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

1 стартмани

02.06.2020    3212    21    Denr83    0    

1C# – 1С моей мечты

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

Встроенных в платформу 1С возможностей не всегда хватает для построения сложных интеграционных схем между различными 1С и не-1С-решениями на базе MS SQL Server. Как сделать интеграцию между SQL-базами более гибкой с помощью платформы 1С# на конференции Infostart Event 2019 Inception рассказал Дмитрий Жичкин.

01.06.2020    10014    zhichkin    33    

Работа с релизами 1С и договорами ИТС Промо

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

Работа с релизами 1С и партнерским кабинетом.

2 стартмани

15.08.2019    12898    38    RocKeR_13    13    

JSON в запросах DaJet QL

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

Практические примеры работы с JSON непосредственно в языке запросов. Перенос курсов валют между УТ и БП. Требуется SQL Server 2016 и выше.

24.04.2020    3640    zhichkin    6    

Включение и выключение электроприборов из 1С

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

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

1 стартмани

02.04.2020    4660    4    bobreks    65    

Пример работы с Trello из 1С

WEB v8 1cv8.cf Россия УУ Абонемент ($m)

Небольшая конфигурация содержит примеры обмена с онлайн-сервисом Trello.

1 стартмани

15.02.2020    9172    36    terrorion    8    

Проверка VAT номеров Промо

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

Обработка для вызова сервиса проверка VAT номера.

1 стартмани

26.11.2018    11307    1    wtlz    1    

Взаимодействие HTML (COM объект, WebKit) с 1С (обычные и управляемые формы)

Внешние источники данных WEB v8 v8::УФ 1cv8.cf Абонемент ($m)

Показан пример использования HTML (COM объект, WebKit) в 1С (8.3).

2 стартмани

18.01.2020    6746    19    Deniskinr83    0    

Google drive - менеджер файлов

WEB Внешние источники данных v8 1cv8.cf Россия Абонемент ($m)

Синхронизация с гугл диском легко и просто!

10 стартмани

05.12.2019    8122    25    zykov_vitaliy    22    

Автозаполнение адреса по КЛАДР в УПП при выгрузке контрагента с портала компании (API dadata)

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

Заведение, согласование контрагентов организовано на портале компании. Далее по web-сервису контрагенты выгружаются в УПП (юр.адрес и факт.адрес выгружаются строкой). Задача автоматизировать заполнение адреса в УПП по КЛАДР.

1 стартмани

03.12.2019    5691    1    John_d    10    

Трекинг номеров РПО в Почте России Промо

WEB Оптовая торговля Оптовая торговля v8 Оптовая торговля, дистрибуция, логистика Абонемент ($m)

Относительно недавно Почта России стандартизировала и описала сервисы получения информации о регистрируемом почтовом отправлении (РПО). Представляю вашему вниманию конфигурацию-обертку над сервисами Почты России. Она позволяет просто (http-запросы) и без изменений конфигурации подключить сервисы отслеживания к своим информационным системам.

2 стартмани

28.03.2016    25542    10    Smaylukk    3    

Работа с Яндекс-картами в 1С (вывод меток, прокладка маршрута, отображение балуна, вывод меток в кластеры) (обычное и управляемое приложение)

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

Работа с Яндекс-картами в 1С (управляемое приложение). Обработка показывает, как можно найти адреса на карте Яндекс, проложить маршрут.

2 стартмани

20.11.2019    10737    104    Denr83    0    

Пример взаимодействия HTML (COM объект, WebKit) с 1С (динамический отбор) (обычные и управляемые формы)

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

Показан пример использования WebKit в 1С (8.3).

2 стартмани

18.11.2019    8184    12    Denr83    0    

Яндекс сервисы [Расширение]

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

Расширение для работы с Яндекс-сервисами (предиктор,переводчик,проверка орфографии)

1 стартмани

24.10.2019    10303    7    noprogrammer    8    

Работа с картой. Кадастровый учет (Росреестр). Тематические карты Промо

WEB Рабочее место v8 v8::УФ 1cv8.cf Абонемент ($m)

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

5 стартмани

31.08.2017    16593    11    vipchep    0    

Telegram бот на 1С

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

Telegram бот на 1С в виде внешней обработки, встраиваемой в типовые 1С 8.3.

1 стартмани

24.09.2019    13157    31    budidich    19    

Выгрузка номенклатуры в социальную сеть Вконтакте

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

Обработка для быстрой и легкой выгрузки товаров Вконтакт. Так просто еще не было)))

2 стартмани

14.08.2019    12635    42    kaliuzhnyi    43    

Подключение к сайту и отправка или получение данных по API (POST, GET...) (с описанием кода)

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

Простая обработка по отправке или получение данных с любого сервера главное знать ресурс (выполняемую функцию) и тело запроса.

1 стартмани

12.08.2019    11251    19    MaxPowerr    5    

Работа с картами 1С 4 в 1: Яндекс, Google , 2ГИС, OpenStreetMap(OpenLayers) Промо

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

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

1 стартмани

28.12.2012    102100    1157    Smaylukk    348    

Конфигурация для обмена данными (интеграционная шина)

Внешние источники данных WEB v8 1cv8.cf Абонемент ($m)

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

4 стартмани

08.07.2019    10214    26    miha-28    17    

Шаблон http-сервиса для вашего проекта

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

Http-сервис для обмена данными в формате JSON. Обработчики этого сервиса находятся во внешней обработке, что позволяет дорабатывать его без изменения конфигурации. Также прилагаю пример мобильного приложения для работы с данным сервисом (получает номенклатуру и остатки на складе). Сервис очень быстро разворачивается и масштабируется под ваши задачи.

3 стартмани

04.05.2019    17869    71    MarkoSokolov    47    

1С и WebKit. Вариант взаимодействия

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

В результате перехода на WebKit тип свойства Документ у поля, имеющего вид ПолеHTMLДокумента, изменился с COMОбъект на ВнешнийОбъект. Также изменилась DOM модель документа, доступная через это свойство.

2 стартмани

23.02.2019    25953    71    mi1man    55    

Пример использования REST API Яндекс Диска Промо

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

Пример использования REST API Яндекс Диска: чтение диска, добавление каталога, загрузка файла, скачивание файлов или каталогов, удаление файлов или каталогов.

1 стартмани

26.06.2018    22738    34    MKFreeUser    14    

Строим маршруты на картах в 1С с помощью OpenStreetMap, OSRM и Leaflet

WEB v8 1cv8.cf Транспорт, автопарки, такси Абонемент ($m)

Краткая статья о том как вывести на карту (в 1С) маршруты с помощью OpenStreetMap, OSRM и Leaflet. По данной системе очень мало примеров, но так как OpenStreetMap является бесплатным сервисом и не требует никаких ключей и регистраций, и является довольно мощным механизмом, решил написать небольшую статью "как это сделать?". В первую очередь скажу, все намного проще, если вы используете последнюю версию платформы (8.3.14), где есть поддержка практически всех браузеров (IE 11, EDGE, Mozilla), но что делать если у нас не самая свежая платформа, где поддержка только IE 9?

2 стартмани

12.02.2019    22677    88    Ditron    71    

Яндекс карта в документе "Заказ клиента" на закладке "Доставка". (Расширение) УТ 11.4

Обработка документов WEB Оптовая торговля Оптовая торговля v8 УТ11 Россия УУ Абонемент ($m)

Показ яндекс карты в документе "Заказ клиента" на закладке "Доставка" и печать карты для курьера с контактными данными. (Расширение)

3 стартмани

05.02.2019    9795    12    ret    7    

Яндекс карты 2.1. Построение маршрута. Передача длины маршрута в реквизит формы

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

Пригодится как пример использования Яндекс карты 2.1 для построения маршрута.

1 стартмани

24.01.2019    12396    68    John_d    32    

Работа с публикациями "Инфостарт" Промо

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    20237    13    RocKeR_13    16    

Веб-форма авторизации/регистрации/восстановления пароля для веб-клиента 1С с помощью HTML/CSS/PHP/HTTP-сервисов 1С

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

Пришла в голову идея создать универсальную веб-форму входа в веб-клиент 1С на HTML/CSS/PHP/HTTP-сервисы 1С. Чтобы прямо как на нормальных сайтах. Заодно и для ознакомления с 1С с новой, для себя, стороны. Интересно было попробовать интеграцию PHP - 1С.

1 стартмани

08.11.2018    15864    25    Бэнни    18    

Загрузка чека онлайн-касс (загрузка товаров из чека)

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

Обработка-пример, позволяет любому и из любой конфигурации загрузить информацию о товарах из чека(и не только) из почтового сообщения, отправленного из приложения ФНС проверка чеков.

2 стартмани

08.10.2018    18619    31    echo77    52    

SOAP для чайников

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

Немножко про SOAP сервис. И пример работы с подключением и получением данных по SOAP за 5 минут.

1 стартмани

05.09.2018    43550    37    dusha0020    18    

Конфигурация для просмотра публичных телеграм каналов Промо

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

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

1 стартмани

02.06.2018    16688    10    DO_WHILE_LOOP    7    

Класс-обработка “Работа с картами Яндекс”

Разработка внешних компонент WEB v8 Абонемент ($m)

Как показать точку или маршрут на карте Яндекс. Как получить координаты по строке адреса (геокодирование).

1 стартмани

01.08.2018    22544    190    RSConsulting    15    

Чтение сжатого gzip, deflate HTTP ответа сервера. Без ВК. Уменьши время загрузки и сократи трафик в 3 раза

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

В платформе 1С:Предприятие не реализовано штатного механизма декодирования ответа веб серверов, в которых присутствует gzip сжатие. Некоторые использовали WinHttpRequest.5.1 , кто-то писал ВК. Друзья, хватит. Вот вам решение.

1 стартмани

08.06.2018    14218    71    Malfarion    16    

Простой эмулятор вызова веб-сервиса 1С с просмотром результата

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

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

1 стартмани

24.04.2018    11966    19    anvolkov1cbit    9    

Обмен файловыми базами данных через Yandex диск Промо

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

Выполнение операций обмена с Yandex диском для файловых БД, по протоколу WebDav, в автоматическом или ручном режимах.

1 стартмани

11.06.2018    16141    5    slimper    1    

Интеграция между Atlassian Jira и 1С:Предприятие 8.3 используя Jira REST API (выборка, создание и изменение запросов, чтение, создание и удаление записей о работах, чтение комментариев и другие возможности)

Внешние источники данных WEB v8 v8::УФ 1cv8.cf Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с Atlassian Jira используя Jira REST API. Ключевые функции: выборка запросов с использованием JQL; добавление и изменение запросов; добавление, изменение и удаление записей о работах; чтение комментариев к запросам; сохранение всех ключевых параметров между сеансами работы. Тестирование проводилось на платформе 1С (8.3.11.2954) совместно с JIRA Server platform (7.3.7)

1 стартмани

24.04.2018    29340    167    Ko1t    77    

Простая и пошаговая интеграция Яндекс-Алисы и 1С

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

Интеграция Алисы и 1С через http сервис на платформе 8.3.9. Используем виртуальный сервер, сертификат от letsencrypt, и делаем простые запросы к базе из Алисы.

1 стартмани

09.04.2018    21157    18    kiv1c    34    

Чтение и запись из таблиц гугл (google sheets) в табличный документ 1С (8.3, управляемые формы)

Внешние источники данных WEB v8 v8::УФ 1cv8.cf Абонемент ($m)

Внешняя обработка на управляемой форме для 1С версии 8.3 для доступа к сервисам Google Sheets c использованием протокола авторизации OAuth 2.0. Выполняет получение списка листов таблицы гугл, чтение таблицы гугл в табличный документ 1С и запись из табличного документа 1С в таблицу гугл. Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.11.2954).

1 стартмани

09.04.2018    35963    235    Ko1t    71    

Сервер push сообщений “Push0k“ 18.05 Промо

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

Аналог других “мессенджеров“. Позволяет практически все то же самое, что и другие решения. За исключением смайлов, эмодзи, голосовой и видео связи. Основное отличие от других решений, открыта и доступна для изменения серверная и клиентская часть месенджера. Общедоступной серверной части нет, за серверную часть отвечаете вы сами.

1 стартмани

19.12.2017    16802    12    PloAl    20    

2 в 1: Проверить действительность паспорта / Получить ИНН по паспорту

Обработка справочников WEB Управление персоналом (HRM) Управление персоналом (HRM) v8 v8::УФ ERP2 БП3.0 ЗУП3.x Россия БУ Абонемент ($m)

Представляю вашему вниманию внешнюю обработку заполнения элемента справочника "Физические лица". Обработка выполнена с использованием API (для работы необходим доступ в интернет), содержит полностью открытый код и 2 команды: Проверка документа, удостоверяющего личность, в списке недействительных паспортов и Заполнение ИНН по паспортным данным.

1 стартмани

27.02.2018    21510    138    VladimirElohov    38    

(beta) Обмен 1С с интернет-магазином OpenCart

WEB Оптовая торговля Оптовая торговля v8 v8::ОУ УТ10 Оптовая торговля, дистрибуция, логистика УУ Абонемент ($m)

Обмен 1С с интернет-магазином OpenCart через ODBC и ftp. Демонстрирую основные используемые механизмы. Есть ссылка на сайт, на который все выгружаю. Буду благодарен конструктивным предложениям.

1 стартмани

14.01.2018    12056    25    ogre2007    8    

Построение маршрута доставки с расчётом расстояния для любой базы УФ Промо

Универсальные обработки WEB Оптовая торговля Оптовая торговля v8 v8::УФ 1cv8.cf Абонемент ($m)

Графическое изображение маршрутного листа по картам гугл. Работает на любой конфигурации с управляемыми формами. Использует новую версию api google-карт от 13.02.2018 года под IE11.

10 стартмани

24.02.2018    33810    42    KorotkovRV    16    

Проверка контрагентов по ИНН и КПП через веб-сервис ФНС (внешняя) Промо

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

Обработка проверяет контрагентов по ИНН и КПП через веб-сервис ФНС на наличие регистрации в ЕГРН. Может выполняться в любых типовых конфигурациях, при наличии справочника "Контрагенты" и реквизитов "ИНН" и "КПП"

1 стартмани

25.12.2014    38784    130    Willforre    12