diff --git a/.github/workflows/deploy-documentation.yml b/.github/workflows/deploy-documentation.yml deleted file mode 100644 index b8a23f7..0000000 --- a/.github/workflows/deploy-documentation.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Сборка документации - -on: - push: - branches: - - main - # Review gh actions docs if you want to further define triggers, paths, etc - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on - -defaults: - run: - working-directory: ./docs - -jobs: - deploy: - name: Сборка документации - runs-on: ubuntu-latest - - steps: - - name: Извлечение исходников - uses: actions/checkout@v4 - - - name: Скачивание BSL-Doc - run: curl -L https://github.com/alkoleft/bsldoc/releases/download/0.1.0/bsldoc-0.1.0.jar --output ./bsldoc.jar && chmod +7 ./bsldoc.jar - - - name: Генерация описания API - run: java -jar ./bsldoc.jar ./../src/cfe ./api -f Docusaurus -s СЗ_Запрос - - - name: Установка NodeJS - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: yarn - cache-dependency-path: 'docs/yarn.lock' - - - name: Установка зависимостей Docusaurus - run: yarn install --frozen-lockfile - - - name: Сборка сайта с документацией - run: yarn build - - # Popular action to deploy to GitHub Pages: - # Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus - - name: Публикация на GitHub Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - # Build output to publish to the `gh-pages` branch: - publish_dir: ./docs/build - # The following lines assign commit authorship to the official - # GH-Actions bot for deploys to `gh-pages` branch: - # https://github.com/actions/checkout/issues/13#issuecomment-724415212 - # The GH actions bot is used by default if you didn't specify the two fields. - # You can swap them out with your own user credentials. - user_name: github-actions[bot] - user_email: 41898282+github-actions[bot]@users.noreply.github.com \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 00c7488..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -*.log - -# compiled output -dist -docs/api/ diff --git a/docs/static/.nojekyll b/.nojekyll similarity index 100% rename from docs/static/.nojekyll rename to .nojekyll diff --git a/404.html b/404.html new file mode 100644 index 0000000..8eb94e3 Binary files /dev/null and b/404.html differ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 4500526..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 Ilya Bushin - -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. \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 8a33ffa..0000000 --- a/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# 1С Предприятие. Fluent запросы - -## Мотивация - -Смотрел я на запросы в 1С, потом смотрел на то как народ создаёт библиотеки с API в "текучем" стиле. И решил это совместить. Ведь есть же такой замечательный продукт от Microsoft - [Linq](https://learn.microsoft.com/ru-ru/dotnet/csharp/linq/standard-query-operators/)! Сначала подумал что буду первопроходцем. Но оказывается всё уже придумано до нас: [Раз](https://github.com/KalyakinAG/query-model), [Два](https://infostart.ru/1c/articles/1991009/). Может быть ещё что есть, а я не нашел. - -## Описание - -Библиотека позволяет писать запросы 1С Предприятия в функциональном стиле. Например, вот такой код: -```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура").ВТаблицуЗначений(); -``` -будет аналогичен: -```bsl -Запрос = Новый Запрос; -Запрос.Текст = "ВЫБРАТЬ -| Номенклатура.Ссылка КАК Ссылка -|ИЗ -| Справочник.Номенклатура КАК Номенклатура"; - -ТаблицаЗначений = Запрос.Выполнить().Выгрузить(); -``` - -### Преимущества такого подхода: - -* уменьшение количества кода при той же читабельности / наглядности; -* избавление от уродских конструкций типа: -```bls -Запрос.ТекстЗапроса = СтрЗаменить(Запрос.ТекстЗапроса, "&Условие", "Номенклатура.ЭтоГруппа = ЛОЖЬ"); -``` - -### У существующих решений есть ряд недостатков: - -* излишне многословны; -* не готовы к применению в рабочих конфигурациях; -* не соответствуют стандартам разработки; -* статья на инфостарте так и осталась лишь статьёй, не вылившись в какую-то готовую разработку; - -### У моего решения тоже есть недостатки: - -* отсутствует автодополнение кода; -* не полная функциональность (разработка пока в статусе 'beta') - -### Личные переживания и сомнения в процессе разработки - -Сначала я был полон энтузиазма. Потом, по мере написания кода, начали появляться сомнения. Нужно ли это? Верной ли дорогой иду? Но когда я увидел как вот это: -```bsl -Функция ТаблицаАдресныхСокращений(НаименованияАдресныхОбъектов) - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | УровниСокращенийАдресныхСведений.Значение КАК Наименование, - | УровниСокращенийАдресныхСведений.Сокращение КАК Сокращение - |ИЗ - | РегистрСведений.УровниСокращенийАдресныхСведений КАК УровниСокращенийАдресныхСведений - |ГДЕ - | &Условие - | - |СГРУППИРОВАТЬ ПО - | УровниСокращенийАдресныхСведений.Значение, - | УровниСокращенийАдресныхСведений.Сокращение - | - |УПОРЯДОЧИТЬ ПО - | Наименование"; - - Если ТипЗнч(НаименованияАдресныхОбъектов) = Тип("Массив") И НаименованияАдресныхОбъектов.Количество() > 0 Тогда - Условие = "ИСТИНА"; - Иначе - Условие = "УровниСокращенийАдресныхСведений.Значение В(&АдресныеСокращения)"; - Запрос.УстановитьПараметр("АдресныеСокращения", НаименованияАдресныхОбъектов); - КонецЕсли; - Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Условие", Условие); - - Возврат Запрос.Выполнить().Выгрузить(); - -КонецФункции -``` -превратилось вот в это: -```bsl -Функция ТаблицаАдресныхСокращений(НаименованияАдресныхОбъектов) - - Запрос = СЗ_Запрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений") - .Выбрать("Значение КАК Наименование, Сокращение") - .Сгруппировать("Значение, Сокращение") - .Упорядочить("Наименование"); - - Если ТипЗнч(НаименованияАдресныхОбъектов) = Тип("Массив") И НаименованияАдресныхОбъектов.Количество() > 0 Тогда - Запрос = Запрос - .Где(СЗ_Запрос.Предикат() - .Реквизит("Значение").В(НаименованияАдресныхОбъектов)); - КонецЕсли; - - Возврат Запрос.ВТаблицуЗначений(); - -КонецФункции -``` -все сомнения отпали! 16 строк вместо 30-ти при сохранении общей читабельности. И качество кода улучшилось за счет отказа от конструкции `СтрЗаменить()`. - -По-моему это заявка на успех! - -## Документация - -Пока отсутствует. Работа ведётся. - -## Как запустить - -* Вариант 1: скачать файл с расширением cf из раздела [Releases](https://github.com/zerobig/fluent-request-schema-1c/releases) и объединить со своей конфигурацией; -* Вариант 2: скачать файл с расширением cfe из раздела [Releases](https://github.com/zerobig/fluent-request-schema-1c/releases) и установить это расширение в свою базу данных; -* Вариант 3: скачать исходники из репозитория, собрать при помощи команды `npm run build` (потребуется установленная NodeJS) и использовать результаты сборки по своему усмотрению; - -## Тестирование - -Тесты писались при помощи расширения для запуска тестов [YAxUnit](https://github.com/bia-technologies/yaxunit). И выполнялись на типовой конфигурации Управление торговлей ред.11.5 (11.5.18.41). Это надо учитывать при самостоятельном запуске тестов. - -## Идеи по дальнейшему развитию (roadmap) - -- [ ] создание документации; -- [ ] расширение API методов: - - [ ] вложенные запросы; - - [ ] пакетные запросы; - - [ ] временные таблицы; - - [ ] индексирование; -- [ ] увеличение полноты покрытия тестами; -- [ ] обработка-конструктор, которая преобразует обычный запрос 1С в "текучие" выражения и обратно; -- [ ] вариант библиотеки для [OneScript](https://github.com/EvilBeaver/OneScript). Пока не понятно, возможно ли и нужно ли? Идея на этапе исследования; -- [ ] CI/CD - -## Благодарности - -* [YAxUnit](https://github.com/bia-technologies/yaxunit) - ребята, вы лучшие! -* [1CFilesConverter](https://github.com/arkuznetsov/1CFilesConverter) - давно пользуюсь этими скриптами. Очень помогают. diff --git a/api/СЗ_ПроцессорыПредикатовКлиентСервер/index.html b/api/СЗ_ПроцессорыПредикатовКлиентСервер/index.html new file mode 100644 index 0000000..9276b4e --- /dev/null +++ b/api/СЗ_ПроцессорыПредикатовКлиентСервер/index.html @@ -0,0 +1,18 @@ + + +
+ + +