1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-10-30 23:47:46 +02:00

Вычистка репозитория, добавление недостающих media

This commit is contained in:
Anton Titovets
2025-03-07 11:34:21 +03:00
parent 88fabec2b0
commit 7f11230e69
24 changed files with 0 additions and 1590 deletions

View File

BIN
media/Covers/GreenAPI.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB

BIN
media/Covers/OneScript2.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 KiB

BIN
media/Covers/PostgreSQL.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 KiB

BIN
media/Covers/S3.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 KiB

BIN
media/Covers/SQLite.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 KiB

BIN
media/Covers/TCP.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
media/Covers/fire.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 KiB

24
service/checklist.md vendored
View File

@@ -1,24 +0,0 @@
- Проверить Pull
- Смена номера версии
- main.os
- Проверить перевод
- Обновить 1С RU
- Полное тестирование 1С RU
- Обновить 1С EN
- Полное тестирование 1С EN
- Полное тестирование OS RU
- Полное тестирование OS EN
- Полное тестирование CLI RU
- Полное тестирование CLI EN
- Pull
- doc_main.os
- Тестовые доки Neocities RU
- Тестовые доки Neocities EN
- Шаблон релиза в тэге драфт
- releasemaker.os
- CLI в draft RU
- CLI в draft EN
- Доки RU прод
- Доки EN прод
- Релиз
- Значок в Readme

View File

@@ -1,8 +0,0 @@
Package: oint
Version: %1
Installed-Size: %2
Architecture: all
Maintainer: Anton Titovets <bayselonarrend@gmail.com>
Depends: mono-devel, libmono-system-core4.0-cil | libmono-system-core4.5-cil, libmono-system4.0-cil | libmono-system4.5-cil, libmono-corlib4.0-cil | libmono-corlib4.5-cil, libmono-i18n4.0-all | libmono-i18n4.5-all
Description: %3
Homepage: %4

View File

@@ -12,7 +12,6 @@
"codeExamplesSrc": "./docs/ru/examples/",
"testValuesSrc": "./docs/ru/data/",
"testsModule": "./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os",
"testsCheckFile": "./service/tests_set.json",
"engineLinux": "C:/engine/linux",
"engineWindows": "C:/engine/windows",
"additionalLangs": [

431
service/tests_set.json vendored
View File

@@ -1,431 +0,0 @@
{
"Dropbox_ПолучитьСсылкуАвторизации": true,
"Dropbox_ПолучитьТокен": true,
"Dropbox_ОбновитьТокен": true,
"Dropbox_ПолучитьИнформациюОбАккаунте": true,
"Dropbox_ПолучитьДанныеИспользованияПространства": true,
"Dropbox_ПолучитьИнформациюОбОбъекте": true,
"Dropbox_ПолучитьСписокФайловПапки": true,
"Dropbox_ПолучитьПревью": true,
"Dropbox_ЗагрузитьФайл": true,
"Dropbox_ЗагрузитьФайлПоURL": true,
"Dropbox_ПолучитьСтатусЗагрузкиПоURL": true,
"Dropbox_УдалитьОбъект": true,
"Dropbox_КопироватьОбъект": true,
"Dropbox_ПереместитьОбъект": true,
"Dropbox_СоздатьПапку": true,
"Dropbox_СкачатьФайл": true,
"Dropbox_СкачатьПапку": true,
"Dropbox_ПолучитьСписокВерсийОбъекта": true,
"Dropbox_ВосстановитьОбъектКВерсии": true,
"Dropbox_ПолучитьСписокТегов": true,
"Dropbox_ДобавитьТег": true,
"Dropbox_УдалитьТег": true,
"Dropbox_ОпубликоватьПапку": true,
"Dropbox_ОтменитьПубликациюПапки": true,
"Dropbox_ДобавитьПользователейКФайлу": true,
"Dropbox_ДобавитьПользователейКПапке": true,
"Dropbox_ПолучитьСтатусАсинхронногоИзменения": false,
"Dropbox_ОтменитьПубликациюФайла": true,
"Twitter_ПолучитьСсылкуАвторизации": false,
"Twitter_ПолучитьТокен": false,
"Twitter_ОбновитьТокен": false,
"Twitter_ОбработкаВходящегоЗапросаПослеАвторизации": false,
"Twitter_СоздатьПроизвольныйТвит": false,
"Twitter_СоздатьТекстовыйТвит": false,
"Twitter_СоздатьТвитКартинки": false,
"Twitter_СоздатьТвитГифки": false,
"Twitter_СоздатьТвитВидео": false,
"Twitter_СоздатьТвитОпрос": false,
"Twitter_ЗагрузитьМассивВложений": false,
"Bitrix24_ПолучитьСсылкуАвторизацииПриложения": true,
"Bitrix24_ПолучитьТокен": true,
"Bitrix24_ОбновитьТокен": true,
"Bitrix24_СерверноеВремя": true,
"Bitrix24_СоздатьНовость": true,
"Bitrix24_ИзменитьНовость": true,
"Bitrix24_УдалитьНовость": true,
"Bitrix24_ПолучитьСписокПросмотревшихВажное": true,
"Bitrix24_ПолучитьНовости": true,
"Bitrix24_ДобавитьКомментарийНовости": true,
"Bitrix24_ДобавитьПолучателейКНовости": true,
"Bitrix24_ПолучитьЗадачу": true,
"Bitrix24_ПолучитьСписокЗадач": true,
"Bitrix24_СоздатьЗадачу": true,
"Bitrix24_ИзменитьЗадачу": true,
"Bitrix24_УдалитьЗадачу": true,
"Bitrix24_ДобавитьФайлВЗадачу": true,
"Bitrix24_ПринятьЗадачу": true,
"Bitrix24_ОтклонитьЗадачу": true,
"Bitrix24_ЗавершитьЗадачу": true,
"Bitrix24_ВозобновитьЗадачу": true,
"Bitrix24_ОтложитьЗадачу": true,
"Bitrix24_ПриостановитьЗадачу": true,
"Bitrix24_НачатьВыполнениеЗадачи": true,
"Bitrix24_НачатьНаблюдатьЗаЗадачей": true,
"Bitrix24_ПрекратитьНаблюдатьЗаЗадачей": true,
"Bitrix24_ДелегироватьЗадачу": true,
"Bitrix24_ДобавитьЗадачуВИзбранное": true,
"Bitrix24_УбратьЗадачуИзИзбранного": true,
"Bitrix24_ПолучитьИсториюЗадачи": true,
"Bitrix24_ПроверитьДоступКЗадаче": true,
"Bitrix24_ОтключитьЗвукЗадачи": true,
"Bitrix24_ВключитьЗвукЗадачи": true,
"Bitrix24_СоздатьЗависимостьЗадач": true,
"Bitrix24_УдалитьЗависимостьЗадач": false,
"Bitrix24_ПолучитьПланЗадачНаДень": true,
"Bitrix24_ПолучитьСтруктуруЗадачи": true,
"Bitrix24_ПолучитьСтруктуруФильтраЗадач": false,
"Bitrix24_ПолучитьСписокПользовательскихПолейЗадачи": true,
"Bitrix24_ДобавитьПользовательскоеПолеЗадачи": true,
"Bitrix24_ИзменитьПользовательскоеПолеЗадачи": true,
"Bitrix24_ПолучитьПользовательскоеПолеЗадачи": true,
"Bitrix24_УдалитьПользовательскоеПолеЗадачи": true,
"Bitrix24_ДобавитьЭлементЧеклистаЗадачи": true,
"Bitrix24_ИзменитьЭлементЧеклистаЗадачи": true,
"Bitrix24_УдалитьЭлементЧеклистаЗадачи": true,
"Bitrix24_ПолучитьЧеклистЗадачи": true,
"Bitrix24_ПолучитьЭлементЧеклистаЗадачи": true,
"Bitrix24_ВыполнитьЭлементЧеклистаЗадачи": true,
"Bitrix24_ВозобновитьЭлементЧеклистаЗадачи": true,
"Bitrix24_ПолучитьСписокКомментариевЗадачи": true,
"Bitrix24_ПолучитьКомменатрийЗадачи": true,
"Bitrix24_ДобавитьКомментарийЗадачи": true,
"Bitrix24_ИзменитьКомментарийЗадачи": true,
"Bitrix24_УдалитьКомментарийЗадачи": true,
"Bitrix24_ПолучитьСписокРезультатов": true,
"Bitrix24_СоздатьРезультатИзКомментария": true,
"Bitrix24_УдалитьРезультатИзКомментария": true,
"Bitrix24_ПолучитьСтруктуруКомментария": false,
"Bitrix24_ДобавитьСтадиюКанбана": true,
"Bitrix24_ИзменитьСтадиюКанбана": true,
"Bitrix24_УдалитьСтадиюКанбана": true,
"Bitrix24_ПолучитьСтадииКанбана": true,
"Bitrix24_ПеренестиЗадачуВСтадиюКанбана": true,
"Bitrix24_ДобавитьТрудозатратыЗадачи": true,
"Bitrix24_УдалитьТрудозатратыЗадачи": true,
"Bitrix24_ПолучитьСписокТрудозатратЗадачи": true,
"Bitrix24_ПолучитьТрудозатратыЗадачи": true,
"Bitrix24_ИзменитьТрудозатратыЗадачи": true,
"Bitrix24_НачатьУчетВремени": true,
"Bitrix24_ЗавершитьУчетВремени": true,
"Bitrix24_ПриостановитьУчетВремени": true,
"Bitrix24_ПолучитьСтатусУчетаВремени": true,
"Bitrix24_ПолучитьНастройкиУчетаВремени": true,
"Bitrix24_ПолучитьСписокХранилищ": true,
"Bitrix24_ПолучитьХранилищеПриложения": true,
"Bitrix24_ПолучитьХранилище": true,
"Bitrix24_ПереименоватьХранилище": true,
"Bitrix24_ПолучитьСодержимоеХранилища": true,
"Bitrix24_СоздатьКаталогВХранилище": true,
"Bitrix24_ПолучитьИнформациюОКаталоге": true,
"Bitrix24_СоздатьПодкаталог": true,
"Bitrix24_СкопироватьКаталог": true,
"Bitrix24_ПереместитьКаталог": true,
"Bitrix24_УдалитьКаталог": true,
"Bitrix24_ПолучитьВнешнююСсылкуКаталога": true,
"Bitrix24_ПолучитьДочерниеЭлементыКаталога": true,
"Bitrix24_ПоместитьКаталогВКорзину": true,
"Bitrix24_ВосстановитьКаталог": true,
"Bitrix24_ПереименоватьКаталог": true,
"Bitrix24_ПолучитьСтруктуруФильтраКаталога": true,
"Bitrix24_ЗагрузитьФайлВХранилище": true,
"Bitrix24_ЗагрузитьФайлВКаталог": true,
"Bitrix24_ПолучитьИнформациюОФайле": true,
"Bitrix24_УдалитьФайл": true,
"Bitrix24_ПолучитьВнешнююСсылкуФайла": true,
"Bitrix24_ПоместитьФайлВКорзину": true,
"Bitrix24_ВосстановитьФайл": true,
"Bitrix24_СкопироватьФайл": true,
"Bitrix24_ПереместитьФайлВКаталог": true,
"Bitrix24_ПереименоватьФайл": true,
"Bitrix24_СоздатьЧат": true,
"Bitrix24_ПолучитьСписокПользователейЧата": true,
"Bitrix24_ПокинутьЧат": true,
"Bitrix24_ПолучитьПользователей": true,
"Bitrix24_ДобавитьПользователейВЧат": true,
"Bitrix24_ИсключитьПользователяИзЧата": true,
"Bitrix24_ИзменитьЗаголовокЧата": true,
"Bitrix24_ИзменитьЦветЧата": true,
"Bitrix24_ИзменитьКартинкуЧата": true,
"Bitrix24_СменитьВладельцаЧата": true,
"Bitrix24_ОтключитьУведомленияЧата": true,
"Bitrix24_ВключитьУведомленияЧата": true,
"Bitrix24_ПолучитьСписокСообщенийЧата": true,
"Bitrix24_ПолучитьДиалог": true,
"Bitrix24_ПолучитьСписокПользователейДиалога": true,
"Bitrix24_ОтправитьУведомлениеОВводе": true,
"Bitrix24_ПолучитьСтатусПользователя": true,
"Bitrix24_УстановитьСтатусПользователя": true,
"Bitrix24_ПрочитатьВсе": true,
"Bitrix24_ПолучитьКаталогФайловЧата": true,
"Bitrix24_ПолучитьСтруктуруЧата": false,
"Bitrix24_ОтправитьСообщение": true,
"Bitrix24_ИзменитьСообщение": true,
"Bitrix24_УстановитьРеакциюНаСообщение": true,
"Bitrix24_УдалитьСообщение": true,
"Bitrix24_ОтправитьФайл": true,
"Bitrix24_ОтметитьСообщениеКакПрочитанное": true,
"Bitrix24_ОтметитьСообщениеКакНепрочитанное": true,
"Bitrix24_ПолучитьБлокКартинки": false,
"Bitrix24_ПолучитьБлокФайла": false,
"Bitrix24_СоздатьПерсональноеУведомление": true,
"Bitrix24_СоздатьСистемноеУведомление": true,
"Bitrix24_УдалитьУведомление": true,
"Bitrix24_СоздатьПодразделение": true,
"Bitrix24_ИзменитьПодразделение": true,
"Bitrix24_ПолучитьПодразделения": true,
"Bitrix24_УдалитьПодразделение": true,
"Bitrix24_ПолучитьТекущегоПользователя": true,
"Bitrix24_ПолучитьПользователя": true,
"Bitrix24_СоздатьПользователя": true,
"Bitrix24_ИзменитьПользователя": true,
"Bitrix24_ИзменитьСтатусПользователя": true,
"Bitrix24_НайтиПользователей": true,
"Bitrix24_ПолучитьСтурктуруПользователя": true,
"Bitrix24_ПолучитьСтруктуруФильтраПользователей": false,
"Yandex Disk_ПолучитьИнформациюОДиске": false,
"Yandex Disk_СоздатьПапку": false,
"Yandex Disk_ПолучитьОбъект": false,
"Yandex Disk_УдалитьОбъект": false,
"Yandex Disk_СоздатьКопиюОбъекта": false,
"Yandex Disk_ПолучитьСсылкуДляСкачивания": false,
"Yandex Disk_СкачатьФайл": false,
"Yandex Disk_ПолучитьСписокФайлов": false,
"Yandex Disk_ПереместитьОбъект": false,
"Yandex Disk_ЗагрузитьФайл": false,
"Yandex Disk_ЗагрузитьФайлПоURL": false,
"Yandex Disk_ОпубликоватьОбъект": false,
"Yandex Disk_ОтменитьПубликациюОбъекта": false,
"Yandex Disk_ПолучитьСписокОпубликованныхОбъектов": false,
"Yandex Disk_ПолучитьПубличныйОбъект": false,
"Yandex Disk_ПолучитьСсылкуСкачиванияПубличногоОбъекта": false,
"Yandex Disk_СохранитьПубличныйОбъектНаДиск": false,
"Telegram_ПолучитьИнформациюБота": true,
"Telegram_ПолучитьОбновления": true,
"Telegram_УстановитьWebhook": true,
"Telegram_УдалитьWebhook": true,
"Telegram_СкачатьФайл": true,
"Telegram_ОбработатьДанныеTMA": false,
"Telegram_ОтправитьТекстовоеСообщение": true,
"Telegram_ОтправитьКартинку": true,
"Telegram_ОтправитьВидео": true,
"Telegram_ОтправитьАудио": true,
"Telegram_ОтправитьДокумент": true,
"Telegram_ОтправитьГифку": true,
"Telegram_ОтправитьМедиагруппу": false,
"Telegram_ОтправитьМестоположение": true,
"Telegram_ОтправитьКонтакт": true,
"Telegram_ОтправитьОпрос": true,
"Telegram_ПереслатьСообщение": true,
"Telegram_СформироватьКлавиатуруПоМассивуКнопок": false,
"Telegram_Бан": true,
"Telegram_Разбан": true,
"Telegram_СоздатьСсылкуПриглашение": true,
"Telegram_ЗакрепитьСообщение": true,
"Telegram_ОткрепитьСообщение": true,
"Telegram_ПолучитьЧислоУчастников": true,
"Telegram_УдалитьСообщение": true,
"Telegram_ПолучитьСписокИконокАватаров": false,
"Telegram_СоздатьТемуФорума": true,
"Telegram_ИзменитьТемуФорума": true,
"Telegram_ЗакрытьТемуФорума": true,
"Telegram_ОткрытьТемуФорума": true,
"Telegram_УдалитьТемуФорума": true,
"Telegram_СкрытьГлавнуюТемуФорума": true,
"Telegram_ПоказатьГлавнуюТемуФорума": true,
"Telegram_ИзменитьИмяГлавнойТемыФорума": true,
"Telegram_ОчиститьСписокЗакрепленныхСообщенийТемы": true,
"Airtable_ПолучитьСписокБаз": false,
"Airtable_ПолучитьТаблицыБазы": false,
"Airtable_СоздатьБазу": false,
"Airtable_СоздатьТаблицу": false,
"Airtable_ИзменитьТаблицу": false,
"Airtable_СоздатьПоле": false,
"Airtable_ИзменитьПоле": false,
"Airtable_ПолучитьПолеСтроковое": false,
"Airtable_ПолучитьПолеНомера": false,
"Airtable_ПолучитьПолеВложения": false,
"Airtable_ПолучитьПолеФлажка": false,
"Airtable_ПолучитьПолеДаты": false,
"Airtable_ПолучитьПолеПочты": false,
"Airtable_ПолучитьПолеТелефона": false,
"Airtable_ПолучитьПолеСсылки": false,
"Airtable_ПолучитьСписокЗаписей": false,
"Airtable_ПолучитьЗапись": false,
"Airtable_СоздатьЗаписи": false,
"Airtable_УдалитьЗаписи": false,
"Airtable_ПолучитьКомментарии": false,
"Airtable_СоздатьКомментарий": false,
"Airtable_ИзменитьКомментарий": false,
"Airtable_УдалитьКомментарий": false,
"Google Drive_ПолучитьИнформациюОбОбъекте": false,
"Google Drive_ПолучитьСписокКаталогов": false,
"Google Drive_ПолучитьСписокФайлов": false,
"Google Drive_ЗагрузитьФайл": false,
"Google Drive_СоздатьПапку": false,
"Google Drive_СкачатьФайл": false,
"Google Drive_СкопироватьОбъект": false,
"Google Drive_ОбновитьФайл": false,
"Google Drive_УдалитьОбъект": false,
"Google Drive_ПолучитьОписаниеФайла": false,
"Google Drive_СоздатьКомментарий": false,
"Google Drive_ПолучитьКомментарий": false,
"Google Drive_ПолучитьСписокКомментариев": false,
"Google Drive_УдалитьКомментарий": false,
"VKTeams_ПроверитьТокен": true,
"VKTeams_ПолучитьСобытия": true,
"VKTeams_ПолучитьИнформациюОФайле": true,
"VKTeams_ОтправитьТекстовоеСообщение": true,
"VKTeams_ОтправитьФайл": true,
"VKTeams_ОтправитьГолосовоеСообщение": true,
"VKTeams_ИзменитьТекстСообщения": true,
"VKTeams_УдалитьСообщение": true,
"VKTeams_ПереслатьФайл": true,
"VKTeams_ПереслатьГолосовоеСообщение": true,
"VKTeams_ПереслатьСообщение": true,
"VKTeams_ИсключитьПользователейЧата": true,
"Google Calendar_СоздатьКалендарь": false,
"Google Calendar_ПолучитьМетаданныеКалендаря": false,
"Google Calendar_ИзменитьМетаданныеКалендаря": false,
"Google Calendar_ОчиститьОсновнойКалендарь": false,
"Google Calendar_УдалитьКалендарь": false,
"Google Calendar_ПолучитьСписокКалендарей": false,
"Google Calendar_ДобавитьКалендарьВСписок": false,
"Google Calendar_ПолучитьКалендарьСписка": false,
"Google Calendar_УдалитьКалендарьИзСписка": false,
"Google Calendar_ИзменитьКалендарьСписка": false,
"Google Calendar_ПолучитьОписаниеСобытия": false,
"Google Calendar_ПолучитьСписокСобытий": false,
"Google Calendar_ПолучитьСобытие": false,
"Google Calendar_СоздатьСобытие": false,
"Google Calendar_ПереместитьСобытие": false,
"Google Calendar_ИзменитьСобытие": false,
"Google Calendar_УдалитьСобытие": false,
"Notion_СоздатьСтраницу": false,
"Notion_СоздатьСтраницуВБазу": false,
"Notion_ПолучитьСтраницу": false,
"Notion_ИзменитьСвойстваСтраницы": false,
"Notion_СоздатьБазуДанных": false,
"Notion_ПолучитьБазуДанных": false,
"Notion_ИзменитьСвойстваБазы": false,
"Notion_СоздатьБлок": false,
"Notion_ВернутьБлок": false,
"Notion_ВернутьДочерниеБлоки": false,
"Notion_УдалитьБлок": false,
"Notion_СписокПользователей": false,
"Notion_ПолучитьДанныеПользователя": false,
"Viber_УстановитьWebhook": false,
"Viber_ПолучитьИнформациюОКанале": false,
"Viber_ПолучитьДанныеПользователя": false,
"Viber_ПолучитьОнлайнПользователей": false,
"Viber_ОтправитьТекстовоеСообщение": false,
"Viber_ОтправитьКартинку": false,
"Viber_ОтправитьФайл": false,
"Viber_ОтправитьКонтакт": false,
"Viber_ОтправитьЛокацию": false,
"Viber_ОтправитьСсылку": false,
"Viber_СформироватьКлавиатуруИзМассиваКнопок": false,
"Google Sheets_СоздатьКнигу": false,
"Google Sheets_ПолучитьКнигу": false,
"Google Sheets_ИзменитьНаименованиеКниги": false,
"Google Sheets_ДобавитьЛист": false,
"Google Sheets_УдалитьЛист": false,
"Google Sheets_КопироватьЛист": false,
"Google Sheets_УстановитьЗначенияЯчеек": false,
"Google Sheets_ОчиститьЯчейки": false,
"Google Sheets_ПолучитьЗначенияЯчеек": false,
"VK_СоздатьСсылкуПолученияТокена": true,
"VK_СоздатьПост": true,
"VK_СоздатьСоставнойПост": true,
"VK_УдалитьПост": true,
"VK_СоздатьОпрос": true,
"VK_СоздатьАльбом": true,
"VK_УдалитьАльбом": true,
"VK_СоздатьИсторию": true,
"VK_СохранитьКартинкуВАльбом": true,
"VK_УдалитьКартинку": true,
"VK_ЗагрузитьВидеоНаСервер": true,
"VK_ЗагрузитьФотоНаСервер": false,
"VK_СоздатьОбсуждение": true,
"VK_ЗакрытьОбсуждение": true,
"VK_ОткрытьОбсуждение": true,
"VK_НаписатьВОбсуждение": true,
"VK_ПоставитьЛайк": true,
"VK_СделатьРепост": true,
"VK_НаписатьСообщение": true,
"VK_НаписатьКомментарий": true,
"VK_СократитьСсылку": false,
"VK_ПолучитьСтатистику": true,
"VK_ПолучитьСтатистикуПостов": true,
"VK_СоздатьРекламнуюКампанию": true,
"VK_СоздатьРекламноеОбъявление": true,
"VK_ПриостановитьРекламноеОбъявление": true,
"VK_ПолучитьСписокРекламныхКатегорий": false,
"VK_ПолучитьСписокКатегорийТоваров": true,
"VK_ПолучитьСписокТоваров": true,
"VK_ПолучитьТоварыПоИД": true,
"VK_ДобавитьТовар": true,
"VK_ИзменитьТовар": true,
"VK_УдалитьТовар": true,
"VK_СгруппироватьТовары": true,
"VK_ПолучитьОписаниеТовара": false,
"VK_ПолучитьСписокПодборок": true,
"VK_ПолучитьПодборкиПоИД": false,
"VK_СоздатьПодборкуТоваров": true,
"VK_ИзменитьПодборкуТоваров": true,
"VK_ДобавитьТоварВПодборку": true,
"VK_УдалитьТоварИзПодборки": true,
"VK_УдалитьПодборку": true,
"VK_ПолучитьСписокСвойств": true,
"VK_СоздатьСвойствоТовара": true,
"VK_ИзменитьСвойствоТовара": true,
"VK_УдалитьСвойствоТовара": true,
"VK_ДобавитьВариантСвойстваТовара": true,
"VK_ИзменитьВариантСвойстваТовара": true,
"VK_УдалитьВариантСвойстваТовара": true,
"VK_ПолучитьСписокЗаказов": true,
"VK_СформироватьКлавиатуру": true,
"Slack_ПолучитьИнформациюОБоте": false,
"Slack_ПолучитьСписокРабочихОбластей": false,
"Slack_ПолучитьСписокПользователей": false,
"Slack_ОтправитьСообщение": false,
"Slack_ОтправитьЭфемерноеСообщение": false,
"Slack_ИзменитьСообщение": false,
"Slack_УдалитьСообщение": false,
"Slack_ПолучитьСписокОтложенныхСообщений": false,
"Slack_ПолучитьСсылкуНаСообщение": false,
"Slack_ПолучитьСписокОтветовНаСообщение": false,
"Slack_ПолучитьСписокКаналов": false,
"Slack_ПолучитьСписокПользователейКанала": false,
"Slack_СоздатьКанал": false,
"Slack_АрхивироватьКанал": false,
"Slack_ПолучитьКанал": false,
"Slack_ПолучитьИсториюКанала": false,
"Slack_ПригласитьПользователейВКанал": false,
"Slack_ВыгнатьПользователяИзКанала": false,
"Slack_ВступитьВКанал": false,
"Slack_ПокинутьКанал": false,
"Slack_УстановитьТемуКанала": false,
"Slack_УстановитьЦельКанала": false,
"Slack_ПереименоватьКанал": false,
"Slack_ОткрытьДиалог": false,
"Slack_ЗакрытьДиалог": false,
"Slack_ПолучитьСписокФайлов": false,
"Slack_ЗагрузитьФайл": false,
"Slack_ПолучитьДанныеФайла": false,
"Slack_УдалитьФайл": false,
"Slack_СделатьФайлПубличным": false,
"Slack_СделатьФайлПриватным": false,
"Slack_ПолучитьСписокВнешнихФайлов": false,
"Slack_ПолучитьВнешнийФайл": false,
"Slack_ДобавитьВнешнийФайл": false,
"Slack_ОтправитьВнешнийФайл": false,
"Slack_УдалитьВнешнийФайл": false,
"Slack_СформироватьБлокКартинку": false,
"Telegram_ОтправитьМеидагруппу": true,
"Telegram_ПолучитьСписокАватаровФорума": true,
"VK_СоздатьТоварСоСвойством": true,
"YandexDisk_ПолучитьИнформациюОДиске": true,
"YandexDisk_СоздатьПапку": true
}

View File

@@ -1,32 +0,0 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "addin1c"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef34e8b7ff4c43e87491a4cc30a4779a9f67c50db43378a36362c7a56246e05b"
dependencies = [
"smallvec",
"utf16_lit",
]
[[package]]
name = "opi_addin"
version = "0.1.0"
dependencies = [
"addin1c",
]
[[package]]
name = "smallvec"
version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]]
name = "utf16_lit"
version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14706d2a800ee8ff38c1d3edb873cd616971ea59eb7c0d046bb44ef59b06a1ae"

View File

@@ -1,16 +0,0 @@
[package]
name = "opi_addin"
version = "0.1.0"
edition = "2021"
[lib]
crate-type = ["cdylib"]
[profile.release]
lto = true # Enable Link Time Optimization
codegen-units = 1 # Reduce number of codegen units to increase optimizations.
panic = "abort" # Abort on panic
strip = true # Automatically strip symbols from the binary.
[dependencies]
addin1c = "0.5.0"

View File

@@ -1,7 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<bundle xmlns='http://v8.1c.ru/8.2/addin/bundle' name='OPIADDIN'>
<component os='Windows' path='AddIn_x86_windows.dll' type='native' arch='i386' />
<component os='Windows' path='AddIn_x64_windows.dll' type='native' arch='x86_64' />
<component os='Linux' path='AddIn_x86_linux.so' type='native' arch='i386' />
<component os='Linux' path='AddIn_x64_linux.so' type='native' arch='x86_64' />
</bundle>

View File

@@ -1,69 +0,0 @@
@echo off
:: Установить переменную
set CARGO_NAME=opi_addin
set LIB_NAME=OPI_AddIn
set OPENSSL_DIR=C:\msys64\mingw64
set OPENSSL_LIB_DIR=%OPENSSL_DIR%\lib
set OPENSSL_INCLUDE_DIR=%OPENSSL_DIR%\include
:: Перейти в директорию проекта
cd /d "%~dp0"
:: Создать папку для артефактов
set OUTPUT_DIR=artifacts
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"
:: Сборка для x86_64-pc-windows-msvc
cargo build --release --target x86_64-pc-windows-msvc
if errorlevel 1 goto :error
:: Сборка для x86_64-unknown-linux-gnu
cargo zigbuild --release --target x86_64-unknown-linux-gnu
if errorlevel 1 goto :error
:: Сборка для i686-pc-windows-msvc
cargo build --release --target i686-pc-windows-msvc
if errorlevel 1 goto :error
:: Сборка для i686-unknown-linux-gnu
cargo zigbuild --release --target i686-unknown-linux-gnu
if errorlevel 1 goto :error
:: Копирование файлов .dll и .so
copy /y target\x86_64-pc-windows-msvc\release\%CARGO_NAME%.dll "%OUTPUT_DIR%\AddIn_x64_windows.dll"
if errorlevel 1 goto :error
copy /y target\i686-pc-windows-msvc\release\%CARGO_NAME%.dll "%OUTPUT_DIR%\AddIn_x86_windows.dll"
if errorlevel 1 goto :error
copy /y target\x86_64-unknown-linux-gnu\release\lib%CARGO_NAME%.so "%OUTPUT_DIR%\AddIn_x64_linux.so"
if errorlevel 1 goto :error
copy /y target\i686-unknown-linux-gnu\release\lib%CARGO_NAME%.so "%OUTPUT_DIR%\AddIn_x86_linux.so"
if errorlevel 1 goto :error
copy /y MANIFEST.XML "%OUTPUT_DIR%\MANIFEST.XML"
if errorlevel 1 goto :error
:: Архивация
powershell -Command "Compress-Archive -Path '%OUTPUT_DIR%\*' -Force -DestinationPath '%LIB_NAME%.zip'"
if errorlevel 1 goto :error
copy /y "%LIB_NAME%.zip" "../../ru/OInt/addins/%LIB_NAME%.zip"
copy /y "%LIB_NAME%.zip" "../../en/OInt/addins/%LIB_NAME%.zip"
copy /y "%LIB_NAME%.zip" "../../ru/OPI/src/CommonTemplates/%LIB_NAME%/Template.addin"
copy /y "%LIB_NAME%.zip" "../../en/OPI/src/CommonTemplates/%LIB_NAME%/Template.addin"
if exist "%OUTPUT_DIR%" (
rmdir /S /Q "%OUTPUT_DIR%"
)
@echo Build and packaging completed successfully.
exit /b 0
:error
@echo An error occurred during the build or packaging process.
exit /b 1

View File

@@ -1,4 +0,0 @@
pub fn method1() -> bool {
true
}

View File

@@ -1,40 +0,0 @@
mod methods;
use std::error::Error;
use std::ops::{Index, IndexMut};
use addin1c::{name, MethodInfo, PropInfo, SimpleAddin, Variant};
use crate::core::{getset, self, SimpleRaw};
use crate::core::getset::ValueType;
pub struct AddIn {
pub prop1: String,
}
impl SimpleRaw for AddIn {
fn new() -> Self {
todo!()
}
fn classname() -> &'static [u16] {
todo!()
}
fn method_signatures(&self) -> Vec<(&str, i32)> {
todo!()
}
fn execute(&mut self, num: usize, params: &mut [Variant]) -> Box<dyn ValueType> {
todo!()
}
fn props(&self) -> Vec<(&str, &dyn ValueType)> {
todo!()
}
fn destroy(&mut self) {
todo!()
}
}
// -------------------------------------------------------------------------------------------------

View File

@@ -1,78 +0,0 @@
use addin1c::{Variant, Tm};
pub trait ValueType {
fn get_value(&self, val: &mut Variant) -> bool;
fn set_value(&mut self, val: &Variant);
}
// Реализация для i32
impl ValueType for i32 {
fn get_value(&self, val: &mut Variant) -> bool {
val.set_i32(*self);
true
}
fn set_value(&mut self, val: &Variant) {
*self = val.get_i32().unwrap_or(0);
}
}
// Реализация для f64
impl ValueType for f64 {
fn get_value(&self, val: &mut Variant) -> bool {
val.set_f64(*self);
true
}
fn set_value(&mut self, val: &Variant) {
*self = val.get_f64().unwrap_or(0.0);
}
}
// Реализация для bool
impl ValueType for bool {
fn get_value(&self, val: &mut Variant) -> bool {
val.set_bool(*self);
true
}
fn set_value(&mut self, val: &Variant) {
*self = val.get_bool().unwrap_or(false);
}
}
// Реализация для tm
impl ValueType for Tm {
fn get_value(&self, val: &mut Variant) -> bool {
val.set_date(*self);
true
}
fn set_value(&mut self, val: &Variant) {
*self = val.get_date().unwrap_or(Tm::default());
}
}
// Реализация для String
impl ValueType for String {
fn get_value(&self, val: &mut Variant) -> bool {
let s: Vec<u16> = self.encode_utf16().collect();
val.set_str1c(s.as_slice()).is_ok()
}
fn set_value(&mut self, val: &Variant) {
*self = val.get_string().unwrap_or("".to_string());
}
}
// Реализация для Vec<u8>
impl ValueType for Vec<u8> {
fn get_value(&self, val: &mut Variant) -> bool {
val.set_blob(self.as_slice()).is_ok()
}
fn set_value(&mut self, val: &Variant) {
*self = val.get_blob().unwrap_or(&[]).to_vec()
}
}

View File

@@ -1,77 +0,0 @@
pub mod getset;
use addin1c::{RawAddin, Variant};
// Определение класса
pub trait SimpleRaw: RawAddin + Drop + std::ops::Index<usize> + std::ops::IndexMut<usize> {
fn new() -> Self;
fn classname() -> &'static [u16];
fn method_signatures(&self) -> Vec<(&str, i32)>;
fn execute(&mut self, num: usize, params: &mut [Variant]) -> Box<dyn getset::ValueType>;
fn props(&self) -> Vec<(&str, &dyn getset::ValueType)>;
fn destroy(&mut self);
fn register_extension_as(&mut self) -> &'static [u16] {
self.classname()
}
fn get_n_props(&mut self) -> usize {
self.len()
}
fn find_prop(&mut self, name: &[u16]) -> Option<usize> { self.convert_to_u16(self.props()).iter().position(|&x| x == name) }
fn get_prop_name(&mut self, num: usize, _alias: usize) -> Option<&'static [u16]> { self.convert_to_u16(self.props()).get(num).copied() }
fn get_prop_val(&mut self, num: usize, val: &mut Variant) -> bool {let field: &dyn getset::ValueType = &self[num]; field.get_value(val) }
fn set_prop_val(&mut self, num: usize, val: &Variant) -> bool {let field: &mut dyn getset::ValueType = &mut self[num]; field.set_value(val); true }
fn is_prop_readable(&mut self, _num: usize) -> bool { true }
fn is_prop_writable(&mut self, _num: usize) -> bool { true }
fn get_n_methods(&mut self) -> usize { self.method_names().len() }
fn find_method(&mut self, name: &[u16]) -> Option<usize> { self.method_names().iter().position(|&x| x == name) }
fn get_method_name(&mut self, num: usize, _alias: usize) -> Option<&'static [u16]> { self.method_names().get(num).copied() }
fn get_n_params(&mut self, num: usize) -> usize { self.get_params_amount(num) }
fn get_param_def_value(&mut self, _method_num: usize, _param_num: usize, _value: Variant, ) -> bool { true }
fn has_ret_val(&mut self, _num: usize) -> bool { true }
fn call_as_proc(&mut self, _num: usize, _params: &mut [Variant]) -> bool { false }
fn call_as_func(&mut self, num: usize, params: &mut [Variant], ret_value: &mut Variant, ) -> bool { self.execute(num, params).get_value(ret_value) }
fn get_field_ptr_mut(&mut self, index: usize) -> *mut dyn getset::ValueType { self.get_field_ptr(index) as *mut _ }
fn get_field_ptr(&self, index: usize) -> *const dyn getset::ValueType {
let field_map = self.props();
if index < field_map.len() {
field_map[index].1 as *const _
} else {
"Err: Prop not found!".to_string() as &dyn getset::ValueType
}
}
fn drop(&mut self) { self.destroy()}
fn index(&self, index: usize) -> &dyn getset::ValueType { unsafe { &*self.get_field_ptr(index) } }
fn index_mut(&mut self, index: usize) -> &mut Self::Output { unsafe { &mut *self.get_field_ptr_mut(index) } }
fn convert_to_u16(values: Vec<(&str, &dyn getset::ValueType)>) -> Vec<u16> {
let mut result = Vec::new();
for (_, value) in values {
let s = value.as_str();
result.extend(s.encode_utf16());
}
result
}
fn get_params_amount(&self, index: usize) -> usize {
let data = self.method_signatures();
if index < data.len() {
data[index].1 as usize
} else {
0
}
}
}

View File

@@ -1,48 +0,0 @@
pub mod component;
mod core;
use std::{
ffi::{c_int, c_long, c_void},
sync::atomic::{AtomicI32, Ordering},
};
use component::AddIn;
use addin1c::{create_component, destroy_component, name, AttachType};
pub static mut PLATFORM_CAPABILITIES: AtomicI32 = AtomicI32::new(-1);
#[allow(non_snake_case)]
#[no_mangle]
pub unsafe extern "C" fn GetClassObject(_name: *const u16, component: *mut *mut c_void) -> c_long {
let addin = AddIn::new();
create_component(component, addin)
}
#[allow(non_snake_case)]
#[no_mangle]
pub unsafe extern "C" fn DestroyObject(component: *mut *mut c_void) -> c_long {
destroy_component(component)
}
#[allow(non_snake_case)]
#[no_mangle]
pub extern "C" fn GetClassNames() -> *const u16 {
name!("Main").as_ptr()
}
#[allow(non_snake_case)]
#[allow(static_mut_refs)]
#[no_mangle]
pub unsafe extern "C" fn SetPlatformCapabilities(capabilities: c_int) -> c_int {
PLATFORM_CAPABILITIES.store(capabilities, Ordering::Relaxed);
3
}
#[allow(non_snake_case)]
#[no_mangle]
pub extern "C" fn GetAttachType() -> AttachType {
AttachType::Any
}

Binary file not shown.

Binary file not shown.

View File

@@ -1,755 +0,0 @@
// OneScript: ./OInt/tools/Modules/os
// MIT License
// Copyright (c) 2023 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
//@skip-check constructor-function-return-section
// Раскомментировать, если выполняется OneScript
#Использовать "./internal"
#Область СлужебныйПрограммныйИнтерфейс
Функция СоздатьТаблицу(Знач Модуль, Знач Таблица, Знач СтруктураКолонок, Знач Соединение = "") Экспорт
ТекстОшибки = "Структура колонок не является валидной структурой ключ-значение";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(СтруктураКолонок, ТекстОшибки);
Схема = ПустаяСхемаSQL("CREATE");
УстановитьИмяТаблицы(Схема, Таблица);
Для Каждого Колонка Из СтруктураКолонок Цикл
ДобавитьКолонку(Схема, Колонка.Ключ, Колонка.Значение);
КонецЦикла;
Запрос = СформироватьТекстSQL(Схема);
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, , , Соединение);
Возврат Результат;
КонецФункции
Функция ДобавитьЗаписи(Знач Модуль
, Знач Таблица
, Знач МассивДанных
, Знач Транзакция = Истина
, Знач Соединение = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьМассив(МассивДанных);
OPI_ПреобразованиеТипов.ПолучитьБулево(Транзакция);
Соединение = Модуль.ОткрытьСоединение(Соединение);
Если Не Модуль.ЭтоКоннектор(Соединение) Тогда
Возврат Соединение;
КонецЕсли;
Если Транзакция Тогда
Начало = Модуль.ВыполнитьЗапросSQL("BEGIN TRANSACTION", , , Соединение);
Если Не Начало["result"] Тогда
Возврат Начало;
КонецЕсли;
КонецЕсли;
Счетчик = 0;
СчетчикУспешных = 0;
Ошибка = Ложь;
МассивОшибок = Новый Массив;
ОшибкаКоллекции = "Invalid data";
СтруктураРезультата = Новый Структура;
Для Каждого Запись Из МассивДанных Цикл
Если Ошибка И Транзакция Тогда
Откат = Модуль.ВыполнитьЗапросSQL("ROLLBACK", , , Соединение);
СчетчикУспешных = 0;
СтруктураРезультата.Вставить("rollback", Откат);
Прервать;
КонецЕсли;
Счетчик = Счетчик + 1;
Ошибка = Ложь;
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ОшибкаКоллекции);
Исключение
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, ОшибкаКоллекции));
Ошибка = Истина;
Продолжить;
КонецПопытки;
Результат = ДобавитьЗапись(Модуль, Таблица, Запись, Соединение);
Если Результат["result"] Тогда
СчетчикУспешных = СчетчикУспешных + 1;
Иначе
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"]));
Ошибка = Истина;
КонецЕсли;
КонецЦикла;
Если Транзакция И Не Ошибка Тогда
Завершение = Модуль.ВыполнитьЗапросSQL("COMMIT", , , Соединение);
СтруктураРезультата.Вставить("commit", Завершение);
КонецЕсли;
СтруктураРезультата.Вставить("result", МассивОшибок.Количество() = 0);
СтруктураРезультата.Вставить("rows" , СчетчикУспешных);
СтруктураРезультата.Вставить("errors", МассивОшибок);
Возврат СтруктураРезультата;
КонецФункции
Функция ПолучитьЗаписи(Знач Модуль
, Знач Таблица
, Знач Поля = "*"
, Знач Фильтры = ""
, Знач Сортировка = ""
, Знач Количество = ""
, Знач Соединение = "") Экспорт
Схема = ПустаяСхемаSQL("SELECT");
УстановитьИмяТаблицы(Схема, Таблица);
УстановитьЛимит(Схема, Количество);
ЗаполнитьПоля(Схема, Поля);
ЗаполнитьФильтры(Схема, Фильтры);
ЗаполнитьСортировку(Схема, Сортировка);
Запрос = СформироватьТекстSQL(Схема);
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, Схема["values"], , Соединение);
Возврат Результат;
КонецФункции
Функция ОбновитьЗаписи(Знач Модуль
, Знач Таблица
, Знач СтруктураЗначений
, Знач Фильтры = ""
, Знач Соединение = "") Экспорт
Схема = ПустаяСхемаSQL("UPDATE");
МассивПолей = Новый Массив;
МассивЗначений = Новый Массив;
УстановитьИмяТаблицы(Схема, Таблица);
РазделитьКоллекциюДанных(СтруктураЗначений, МассивПолей, МассивЗначений);
Схема["values"] = МассивЗначений;
Для Каждого Поле Из МассивПолей Цикл
ДобавитьПоле(Схема, Поле);
КонецЦикла;
ЗаполнитьФильтры(Схема, Фильтры);
Запрос = СформироватьТекстSQL(Схема);
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, Схема["values"], , Соединение);
Возврат Результат;
КонецФункции
Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "<имя поля для отбора>");
СтруктураФильтра.Вставить("type" , "<тип сравнения>");
СтруктураФильтра.Вставить("value", "<значение для сравнения>");
СтруктураФильтра.Вставить("union", "<связь со следующим условием: AND, OR и пр.>");
СтруктураФильтра.Вставить("raw" , "<истина - значение будет вставлено текстом, как есть, ложь - через параметр>");
Если Пустая Тогда
СтруктураФильтра = OPI_Инструменты.ОчиститьКоллекциюРекурсивно(СтруктураФильтра);
КонецЕсли;
//@skip-check constructor-function-return-section
Возврат СтруктураФильтра;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Схемы
Функция ПустаяСхемаSelect()
Схема = Новый Структура("type", "SELECT");
Схема.Вставить("table" , "");
Схема.Вставить("filter" , Новый Массив);
Схема.Вставить("order" , Новый Массив);
Схема.Вставить("limit" , 0);
Схема.Вставить("set" , Новый Массив);
Схема.Вставить("values" , Новый Массив);
Возврат Схема;
КонецФункции
Функция ПустаяСхемаInsert()
Схема = Новый Структура("type", "INSERT");
Схема.Вставить("table", "");
Схема.Вставить("set" , Новый Массив);
Возврат Схема;
КонецФункции
Функция ПустаяСхемаUpdate()
Схема = Новый Структура("type", "UPDATE");
Схема.Вставить("table" , "");
Схема.Вставить("set" , Новый Массив);
Схема.Вставить("filter" , Новый Массив);
Схема.Вставить("values" , Новый Массив);
Возврат Схема;
КонецФункции
Функция ПустаяСхемаDelete()
Схема = Новый Структура("type", "DELETE");
Схема.Вставить("table" , "");
Схема.Вставить("filter", Новый Массив);
Возврат Схема;
КонецФункции
Функция ПустаяСхемаCreate()
Схема = Новый Структура("type", "CREATE");
Схема.Вставить("table" , "");
Схема.Вставить("columns", Новый Массив);
Возврат Схема;
КонецФункции
#КонецОбласти
#Область Процессоры
Функция СформироватьТекстSelect(Знач Схема)
ПроверитьОбязательныеПоляСхемы(Схема, "table,filter,order,limit,set");
Таблица = Схема["table"];
Поля = Схема["set"];
Фильтры = Схема["filter"];
Сортировка = Схема["order"];
Количество = Схема["limit"];
ШаблонSQL = "SELECT %1 FROM %2
|%3";
БлокНастроек = СформироватьТекстНастроекSelect(Фильтры, Сортировка, Количество);
ТекстSQL = СтрШаблон(ШаблонSQL, СтрСоединить(Поля, ", "), Таблица, БлокНастроек);
Возврат ТекстSQL;
КонецФункции
Функция СформироватьТекстInsert(Знач Схема)
ПроверитьОбязательныеПоляСхемы(Схема, "table,set");
Таблица = Схема["table"];
Поля = Схема["set"];
ШаблонSQL = "INSERT INTO %1 (%2) VALUES (%3)";
Параметры = Новый Массив;
Для Н = 1 По Поля.Количество() Цикл
Параметры.Добавить("?" + OPI_Инструменты.ЧислоВСтроку(Н));
КонецЦикла;
ТекстSQL = СтрШаблон(ШаблонSQL
, Таблица
, СтрСоединить(Поля, ", ")
, СтрСоединить(Параметры, ", "));
Возврат ТекстSQL;
КонецФункции
Функция СформироватьТекстUpdate(Знач Схема)
ПроверитьОбязательныеПоляСхемы(Схема, "table,set,values");
Таблица = Схема["table"];
Поля = Схема["set"];
Фильтры = Схема["filter"];
ШаблонSQL = "UPDATE %1 SET %2 %3";
ТекстФильтра = СформироватьТекстФильтра(Фильтры);
Для Н = 0 По Поля.ВГраница() Цикл
Поля[Н] = Поля[Н] + " = ?" + OPI_Инструменты.ЧислоВСтроку(Н + 1);
КонецЦикла;
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, СтрСоединить(Поля, "," + Символы.ПС), ТекстФильтра);
Возврат ТекстSQL;
КонецФункции
Функция СформироватьТекстDelete(Знач Схема)
ТекстSQL = "";
Возврат ТекстSQL;
КонецФункции
Функция СформироватьТекстCreate(Знач Схема)
ПроверитьОбязательныеПоляСхемы(Схема, "table,columns");
Таблица = Схема["table"];
Колонки = Схема["columns"];
ШаблонSQL = "CREATE TABLE %1 (
| %2
| )";
ШаблонКолонки = "%1 %2";
МассивОписанийКолонок = Новый Массив;
Для Каждого Колонка Из Колонки Цикл
Для Каждого Элемент Из Колонка Цикл
МассивОписанийКолонок.Добавить(СтрШаблон(ШаблонКолонки, Элемент.Ключ, Элемент.Значение));
КонецЦикла;
КонецЦикла;
ОписанияКолонок = СтрСоединить(МассивОписанийКолонок, "," + Символы.ПС);
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, ОписанияКолонок);
Возврат ТекстSQL;
КонецФункции
#КонецОбласти
#Область Вспомогательные
Функция ПустаяСхемаSQL(Знач Действие)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Действие);
Действие = вРег(Действие);
Если Действие = "SELECT" Тогда
Схема = ПустаяСхемаSelect();
ИначеЕсли Действие = "INSERT" Тогда
Схема = ПустаяСхемаInsert();
ИначеЕсли Действие = "UPDATE" Тогда
Схема = ПустаяСхемаUpdate();
ИначеЕсли Действие = "DELETE" Тогда
Схема = ПустаяСхемаDelete();
ИначеЕсли Действие = "CREATE" Тогда
Схема = ПустаяСхемаCreate();
Иначе
Схема = Новый Структура;
КонецЕсли;
Возврат Схема;
КонецФункции
Функция СформироватьТекстSQL(Знач Схема)
ТекстОшибки = "Переданное значение не является валидной схемой SQL запроса";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Схема, ТекстОшибки);
ТипСхемы = "";
Если Не OPI_Инструменты.ПолеКоллекцииСуществует(Схема, "type", ТипСхемы) Тогда
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ТипСхемы = вРег(ТипСхемы);
Если ТипСхемы = "SELECT" Тогда
ТекстЗапроса = СформироватьТекстSelect(Схема);
ИначеЕсли ТипСхемы = "INSERT" Тогда
ТекстЗапроса = СформироватьТекстInsert(Схема);
ИначеЕсли ТипСхемы = "UPDATE" Тогда
ТекстЗапроса = СформироватьТекстUpdate(Схема);
ИначеЕсли ТипСхемы = "DELETE" Тогда
ТекстЗапроса = СформироватьТекстDelete(Схема);
ИначеЕсли ТипСхемы = "CREATE" Тогда
ТекстЗапроса = СформироватьТекстCreate(Схема);
Иначе
ТекстЗапроса = "";
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция СформироватьТекстНастроекSelect(Знач Фильтры, Знач Сортировка, Знач Количество)
ШаблонБлока = "%1
|%2
|%3";
ТекстФильтра = СформироватьТекстФильтра(Фильтры);
ТекстСортировки = СформироватьТекстСортировки(Сортировка);
ТекстКоличества = СформироватьТекстКоличества(Количество);
ТекстБлока = СтрШаблон(ШаблонБлока, ТекстФильтра, ТекстСортировки, ТекстКоличества);
Возврат ТекстБлока;
КонецФункции
Функция СформироватьТекстФильтра(Знач Фильтры)
Если Не ЗначениеЗаполнено(Фильтры) Тогда
Возврат "";
КонецЕсли;
ТекстФильтров = "WHERE %1";
МассивФильтров = Новый Массив;
Счетчик = 1;
Всего = Фильтры.Количество();
Для Каждого Фильтр Из Фильтры Цикл
ТекущийТекст = "%1 %2 %3 %4";
Поле = Фильтр["field"];
Тип = Фильтр["type"];
Значение = Фильтр["value"];
Соединение = Фильтр["union"];
Соединение = ?(ЗначениеЗаполнено(Соединение), Соединение, "AND");
Если Счетчик = Всего Тогда
Соединение = "";
КонецЕсли;
ТекущийТекст = СтрШаблон(ТекущийТекст, Поле, Тип, Значение, Соединение);
МассивФильтров.Добавить(ТекущийТекст);
Счетчик = Счетчик + 1;
КонецЦикла;
ТекстФильтров = СтрШаблон(ТекстФильтров, СтрСоединить(МассивФильтров, " "));
Возврат ТекстФильтров;
КонецФункции
Функция СформироватьТекстСортировки(Знач Сортировка)
Если Не ЗначениеЗаполнено(Сортировка) Тогда
Возврат "";
КонецЕсли;
ТекстСортировки = "ORDER BY %1";
МассивСортировки = Новый Массив;
Для Каждого Элемент Из Сортировка Цикл
МассивСортировки.Добавить(Элемент["field"] + " " + Элемент["type"]);
КонецЦикла;
ТекстСортировки = СтрШаблон(ТекстСортировки, СтрСоединить(МассивСортировки, ", "));
Возврат ТекстСортировки;
КонецФункции
Функция СформироватьТекстКоличества(Знач Количество)
Если Не ЗначениеЗаполнено(Количество) Тогда
Возврат "";
КонецЕсли;
ТекстКоличества = "LIMIT %1";
ТекстКоличества = СтрШаблон(ТекстКоличества, OPI_Инструменты.ЧислоВСтроку(Количество));
Возврат ТекстКоличества;
КонецФункции
Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение)
МассивПолей = Новый Массив;
МассивЗначений = Новый Массив;
Схема = ПустаяСхемаSQL("INSERT");
УстановитьИмяТаблицы(Схема, Таблица);
РазделитьКоллекциюДанных(Запись, МассивПолей, МассивЗначений);
Для Каждого Поле Из МассивПолей Цикл
ДобавитьПоле(Схема, Поле);
КонецЦикла;
Запрос = СформироватьТекстSQL(Схема);
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, МассивЗначений, , Соединение);
Возврат Результат;
КонецФункции
Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений)
ТекстОшибки = "Некорректный набор данных для обновления";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ТекстОшибки);
Для Каждого Элемент Из Запись Цикл
МассивПолей.Добавить(Элемент.Ключ);
МассивЗначений.Добавить(Элемент.Значение);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьПоля(Схема, Знач Поля)
Если Не ЗначениеЗаполнено(Поля) Тогда
Поля = "*";
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьМассив(Поля);
Для Каждого Поле Из Поля Цикл
ДобавитьПоле(Схема, Поле);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьФильтры(Схема, Знач Фильтры)
Если Не ЗначениеЗаполнено(Фильтры) Тогда
Возврат;
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьМассив(Фильтры);
Для Каждого Фильтр Из Фильтры Цикл
ДобавитьОтбор(Схема
, Фильтр["field"]
, ?(Фильтр.Свойство("type"), Фильтр["type"], "=")
, Фильтр["value"]
, ?(Фильтр.Свойство("union"), Фильтр["union"], "AND")
, ?(Фильтр.Свойство("raw"), Фильтр["raw"], Ложь));
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьСортировку(Знач Схема, Знач Сортировка)
Если Не ЗначениеЗаполнено(Сортировка) Тогда
Возврат;
КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Сортировка);
Для Каждого Элемент Из Сортировка Цикл
ДобавитьСортировку(Схема, Элемент.Ключ, Элемент.Значение);
КонецЦикла;
КонецПроцедуры
Процедура ПроверитьОбязательныеПоляСхемы(Схема, Знач Поля)
МассивОбязательныхПолей = СтрРазделить(Поля, ",");
МассивОтсутствующих = OPI_Инструменты.НайтиОтсутствующиеПоляКоллекции(Схема, МассивОбязательныхПолей);
Если ЗначениеЗаполнено(МассивОтсутствующих) Тогда
ВызватьИсключение "Отсутствуют необходимые поля схемы: " + СтрСоединить(МассивОтсутствующих, ", ");
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьКолонку(Схема, Знач Имя, Знач Тип) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип);
Если Не Схема["type"] = "CREATE" Тогда
Возврат;
КонецЕсли;
СоответствиеКолонки = Новый Соответствие;
СоответствиеКолонки.Вставить(Имя, Тип);
Схема["columns"].Добавить(СоответствиеКолонки);
КонецПроцедуры
Процедура ДобавитьПоле(Схема, Знач Имя) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
Схема["set"].Добавить(Имя);
КонецПроцедуры
Процедура ДобавитьОтбор(Схема, Знач Поле, Знач Тип, Знач Значение, Знач Группировка, Знач КакЕсть)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Группировка);
OPI_ПреобразованиеТипов.ПолучитьБулево(КакЕсть);
ОсновнаяСтруктура = Новый Структура("field,type,union"
, Поле
, Тип
, Группировка);
Если КакЕсть Тогда
ОсновнаяСтруктура.Вставить("value", Строка(Значение));
Иначе
Схема["values"].Добавить(Значение);
ПорядковыйНомер = Схема["values"].Количество();
ОсновнаяСтруктура.Вставить("value", "?" + OPI_Инструменты.ЧислоВСтроку(ПорядковыйНомер));
КонецЕсли;
Схема["filter"].Добавить(ОсновнаяСтруктура);
КонецПроцедуры
Процедура ДобавитьСортировку(Схема, Знач Поле, Знач Тип)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Поле);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Тип);
Схема["order"].Добавить(Новый Структура("field,type", Поле, Тип));
КонецПроцедуры
Процедура УстановитьИмяТаблицы(Схема, Знач Имя)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
Схема.Вставить("table", Имя);
КонецПроцедуры
Процедура УстановитьЛимит(Схема, Знач Количество)
OPI_ПреобразованиеТипов.ПолучитьЧисло(Количество);
Схема.Вставить("limit", Количество);
КонецПроцедуры
#КонецОбласти
#КонецОбласти