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

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

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

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

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

Обновление от 11.11.2020

 

Данная статья является продолжением моего выступления на 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
3
.epf 9,98Kb 3 Скачать
Web сервер DaJet QL для windows x64

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

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

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

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. tanya_charm 02.05.20 13:19 Сейчас в теме
Коллеги добрый день.
Можно пару кейсов на применение обработки, в каких случаях это "помогает"?
2. zhichkin 965 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 965 02.05.20 17:49 Сейчас в теме
4. kwazi 458 03.05.20 09:27 Сейчас в теме
Пахнет нарушением лицензионного соглашения с 1С
10. mrsmrv 79 07.05.20 17:38 Сейчас в теме
(4) А где 1С запрещает обращаться напрямую к данным? Он же не трогает механизмы платформы 1С. Используются механизмы СУБД же
11. zhichkin 965 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 83 03.05.20 13:37 Сейчас в теме
Отличная тема. Я так понимаю, это эволюционное развитие механизма прямых запросов компоненты 1С++ для 1с77, только теперь и для 1с8.
То есть я смогу делать такие вещи:
- Подзапрос в поле запроса
-Функции OVER (Partition by)
-Grouping sets (обещали конечно в новых платформах)
-Рекурсивные запросы через CTE
-Фишку for xml - которая позволяет получить готовую иерархическую структуру, которую можно вывести в многоуровневую таблицу без танцев с бубном. (правда она почему-то корректно работает на небольших объемах, а на больших - обрезает).

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

Неплохо было бы добавить такой функционал в язык 1С#.
6. zhichkin 965 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 965 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 965 08.06.20 16:13 Сейчас в теме
(15) Такую выгрузку нужно написать для 7-ки самостоятельно. Сам не стал делать, так как не вижу в этом перспективы. Хотя в отношении 1С 7-ой версии работа напрямую с СУБД не нарушает лицензионного соглашения с 1С, тем не менее интереса от использующих 7-ку особо не заметил. Конкретных предложений по доработке не поступало. Бесплатно заниматься этим проектом уже устал - более 3-х лет уже потрачено без какой-либо материальной мотивации.
igor_demin@mail.ru; +1 Ответить
8. Vortigaunt 83 03.05.20 14:23 Сейчас в теме
Виртуальные таблицы пока не добавлял, так как обратной связи на эту тему не было и насколько это востребованно не очень понятно.

Это очень важно. Если срез последних еще несложно самому накидать. То получить остатки с регистра накопления - уже задачка со звездочкой. То есть сложность не в том, чтобы получить таблицу остатков, а в том, чтобы реализовать это максимально эффективно. Например, учесть на какую дату в месяце ты получаешь остаток, если ближе к началу - то плюсовать оборот к остатку на начало месяца, если ближе к концу, то отнимать от остатка на начало следующего (или от оперативных остатков, если месяц и так текущий). Потом еще надо помнить про свойство виртуальных таблиц 1С, то что они автоматически группируют данные по использованным полям. Это тоже желательно учесть в языке 1С#.
9. zhichkin 965 03.05.20 15:10 Сейчас в теме
(8) Спасибо за обратную связь! Реализую в следующей версии обязательно.
12. savostin.alex 73 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 965 05.06.20 03:22 Сейчас в теме
(12) Сделал всё по своей инструкции. Работает "из коробки". Прилагаю скриншот из Postman.
Прикрепленные файлы:
14. zhichkin 965 05.06.20 03:32 Сейчас в теме
(12) Может быть предварительно забыли выполнить метод /metadata/use ?
Прикрепленные файлы:
17. Shmell 352 04.05.21 12:52 Сейчас в теме
Не получается выполнить запрос. Что не так? "Select 1.0" работает. Метаданные выгружены.
Прикрепленные файлы:
18. Shmell 352 04.05.21 12:58 Сейчас в теме
Но если указывать скулевские имена - то работает
Прикрепленные файлы:
19. zhichkin 965 04.05.21 14:47 Сейчас в теме
(18) Добрый день!
Это конечно же не очевидно, но необходимо задавать синонимы полям выборки.
Попробуйте так:
SEL ECT Ссылка AS [Ссылка] FR OM Справочник.Валюты;
Оставьте свое сообщение

См. также

BIM: взаимодействие с платформой Autodesk Forge Промо

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

Предлагаемый пример демонстрирует широкие возможности для взаимодействия «1С:Предприятие» с платформой Autodesk Forge и позволяет вам получить базовые представления о применения технологий информационного моделирования в строительстве. Поддерживаются все версии платформы от 8.3.12 и выше до 8.3.18.

1 стартмани

25.11.2020    20768    7    kandr    2    

Расширение конфигурации для Web-доступа к 1С (1С в роли back-end)

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

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

1 стартмани

01.04.2021    4914    8    SaschaG    3    

Работа с картами в 1С на примере бесплатной библиотеки Leaflet

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

Разработка функционала отображения и выбора пунктов доставки на карте прямо в 1С с помощью бесплатной библиотеки Leaflet. Тестирование производилось на платформе 8.3.15.1534 на тонком клиенте.

1 стартмани

31.03.2021    4716    11    Parsec1C    8    

Отправка Push-уведомлений через сервис Firebase Cloud Messaging по протоколу FCM HTTP v1 API

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

При разработке нативного приложения Android для ТСД, в котором присутствует функционал отображения задач кладовщикам, созданных в 1С, возникла необходимость отправлять push-уведомления о появлении новых задач. Для отправки таких уведомлений было решено использовать сервис Firebase Cloud Messaging (FCM). Так как для 1С, в отличии от других языков программирования, не существует готовых библиотек, что вполне логично, то очевидным способом отправки является использование протокола HTTP. Однако, существующая информация в интернете в части 1С содержит только сведений об отправке push-уведомлений через этот сервис с использованием устаревшего протокола HTTP Firebase Cloud Messaging. Сам Google не рекомендует использовать данный протокол и настоятельно склоняет к переходу на новый протокол FCM HTTP v1 API. Что ж, пришлось разбираться самостоятельно.

1 стартмани

24.03.2021    2826    7    ltfriend    5    

Односторонний файловый обмен с сайтом по ftp (1C 2 Web) Промо

Обмен данными 1С Файловые протоколы обмена, FTP WEB v8 Розница УНФ ERP2 БП3.0 УТ11 КА2 ЗУП3.x Абонемент ($m)

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

3 стартмани

09.12.2019    8231    10    LamerSoft    0    

DaJet Studio: расширенный язык запросов 1С, очереди сообщений и web сервисы

Прочие инструменты разработчика Администрирование СУБД v8 Бесплатно (free)

DaJet Studio - разработка и управление скриптами, хранимыми процедурами и функциями, написанными на расширенном языке запросов 1С, а также очередями сообщений и web сервисами, основанными на использовании Microsoft SQL Server.

10.11.2020    4905    66    zhichkin    13    

Генератор маршрута по "документам отгрузки" в Google.Maps

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

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

7 стартмани

08.11.2020    6203    10    quazare    16    

Чатбот WhatsApp

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

Внешняя обработка для написания чат-бота WhatsApp

1 стартмани

21.10.2020    7408    23    ripreal1    30    

"Учет штрафов ГИБДД" с возможной загрузкой из открытых источников в интернет Расширение конфигурации 1С: Предприятие 8.3 Промо

Обработка документов WEB v8 v8::УФ 1cv8.cf Россия БУ УУ Абонемент ($m)

Расширение конфигурации Бухгалтерия предприятия, редакция 3.0 (при минимальных изменениях любой типовой конфигурации), позволяющее вести историю данных по штрафам ГИБДД для справочника транспортных средств компании. Бонусом поставляется внешняя обработка, способная загружать эти данные из открытых источников в интернет.

4 стартмани

30.12.2019    14243    19    capitan    11    

1С + react native

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

Пример реализации клиента для 1С на react native.

1 стартмани

09.10.2020    7533    6    van_za    6    

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

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

Пошаговое руководство по созданию http сервиса (часть третья). Передача нескольких параметров в http сервис, a также формирование сложных JSON строк.

1 стартмани

02.10.2020    9333    2    hpi    16    

Подключаем WhatsApp к 1С

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

Обработка для быстрого подключения WhatsApp к любой конфигурации 1С.

1 стартмани

30.09.2020    8748    47    andrew_shamin    59    

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

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

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

1 стартмани

30.03.2018    32081    45    Ditron    101    

Обмен через API с Честный знак (Система маркировки товаров)

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

Рассмотрен пример обмена через API с Честным знаком с использованием электронной подписи.

1 стартмани

10.08.2020    15826    79    vasilievil    21    

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

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

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

1 стартмани

29.06.2020    12214    10    shmalevoz    21    

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

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

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

1 стартмани

02.06.2020    6862    25    Denr83    0    

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

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

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

2 стартмани

15.08.2019    18138    54    RocKeR_13    35    

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

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

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

01.06.2020    12524    zhichkin    36    

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

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

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

24.04.2020    4263    zhichkin    6    

Обмен данными между OZON и 1С

Оптовая торговля WEB v8 v8::ОУ УТ11 УУ Абонемент ($m)

Данная подсистема позволяет загружать отправления «с моего склада» из OZON (в статусе «Ожидают сборки») в 1с Управление торговлей 11 по API. Так же есть возможность выгружать статусы отправлений «awaiting_deliver, т.е. Ожидает отгрузки» и «cancelled, т.е. Отменен» из 1с в OZON по API.

10 стартмани

09.04.2020    23674    204    vex2865    141    

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

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

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

1 стартмани

26.11.2018    15986    3    wtlz    1    

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

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

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

1 стартмани

02.04.2020    7199    4    bobreks    66    

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

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

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

1 стартмани

15.02.2020    14887    49    terrorion    14    

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

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

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

2 стартмани

18.01.2020    11007    30    Deniskinr83    0    

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

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

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

2 стартмани

28.03.2016    30296    38    Smaylukk    3    

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

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

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

10 стартмани

05.12.2019    14917    35    zykov_vitaliy    26    

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

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

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

1 стартмани

03.12.2019    9050    1    John_d    10    

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

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

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

2 стартмани

20.11.2019    16701    145    Denr83    0    

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

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

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

1 стартмани

31.08.2017    22310    11    vipchep    1    

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

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

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

2 стартмани

18.11.2019    12505    17    Denr83    0    

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

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

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

1 стартмани

24.10.2019    13735    10    noprogrammer    12    

Telegram бот на 1С

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

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

1 стартмани

24.09.2019    21370    44    budidich    19    

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

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

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

1 стартмани

28.12.2012    113639    2709    Smaylukk    365    

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

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

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

2 стартмани

14.08.2019    19442    56    kaliuzhnyi    48    

Путеводитель по истории релизов

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

Отчет по истории выпуска релизов и анализа информации по обновлениям.

5 стартмани

13.08.2019    16829    13    YPermitin    18    

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

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

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

1 стартмани

12.08.2019    22091    38    MaxPowerr    5    

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

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

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

1 стартмани

26.06.2018    30540    47    MKFreeUser    15    

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

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

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

4 стартмани

08.07.2019    17201    33    miha-28    17    

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

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

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

3 стартмани

04.05.2019    23303    84    MarkoSokolov    48    

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

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

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

2 стартмани

23.02.2019    36462    83    mi1man    59    

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

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

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

1 стартмани

13.09.2018    25484    13    RocKeR_13    16    

Строим маршруты на картах в 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    32417    115    Ditron    94    

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

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

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

3 стартмани

05.02.2019    13446    12    ret    7    

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

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

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

1 стартмани

24.01.2019    17566    88    John_d    33    

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

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

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

1 стартмани

02.06.2018    20815    13    DO_WHILE_LOOP    7    

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

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

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

1 стартмани

08.11.2018    22863    29    Бэнни    22    

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

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

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

2 стартмани

08.10.2018    25874    40    echo77    73