1
0
mirror of https://github.com/zerobig/fluent-request-schema-1c.git synced 2025-08-09 21:27:11 +02:00
This commit is contained in:
github-actions[bot]
2024-10-17 16:19:45 +00:00
parent e81c176871
commit f0bf5aeab4
80 changed files with 291 additions and 10885 deletions

View File

@@ -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

5
.gitignore vendored
View File

@@ -1,5 +0,0 @@
*.log
# compiled output
dist
docs/api/

BIN
404.html Normal file

Binary file not shown.

21
LICENSE
View File

@@ -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.

132
README.md
View File

@@ -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) - давно пользуюсь этими скриптами. Очень помогают.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[61],{7973:(e,a,s)=>{s.r(a),s.d(a,{default:()=>x});s(6540);var t=s(4164),d=s(1003),l=s(7559),r=s(781),i=s(5533),c=s(7763),n=s(6896),o=s(2153);const m={mdxPageWrapper:"mdxPageWrapper_j9I6"};var p=s(4848);function x(e){const{content:a}=e,{metadata:s,assets:x}=a,{title:g,editUrl:h,description:j,frontMatter:A,lastUpdatedBy:v,lastUpdatedAt:_}=s,{keywords:u,wrapperClassName:w,hide_table_of_contents:f}=A,N=x.image??A.image,k=!!(h||_||v);return(0,p.jsx)(d.e3,{className:(0,t.A)(w??l.G.wrapper.mdxPages,l.G.page.mdxPage),children:(0,p.jsxs)(r.A,{children:[(0,p.jsx)(d.be,{title:g,description:j,keywords:u,image:N}),(0,p.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,p.jsxs)("div",{className:(0,t.A)("row",m.mdxPageWrapper),children:[(0,p.jsxs)("div",{className:(0,t.A)("col",!f&&"col--8"),children:[(0,p.jsx)(n.A,{metadata:s}),(0,p.jsx)("article",{children:(0,p.jsx)(i.A,{children:(0,p.jsx)(a,{})})}),k&&(0,p.jsx)(o.A,{className:(0,t.A)("margin-top--sm",l.G.pages.pageFooterEditMetaRow),editUrl:h,lastUpdatedAt:_,lastUpdatedBy:v})]}),!f&&a.toc.length>0&&(0,p.jsx)("div",{className:"col col--2",children:(0,p.jsx)(c.A,{toc:a.toc,minHeadingLevel:A.toc_min_heading_level,maxHeadingLevel:A.toc_max_heading_level})})]})})]})})}}}]);

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[237],{3363:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var i=n(4164),o=n(1312),s=n(1107),r=n(4848);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,i.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},2237:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});n(6540);var i=n(1312),o=n(1003),s=n(781),r=n(3363),a=n(4848);function d(){const e=(0,i.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.be,{title:e}),(0,a.jsx)(s.A,{children:(0,a.jsx)(r.A,{})})]})}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[600],{7146:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"api"}')}}]);

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[864],{1661:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b","href":"/fluent-request-schema-1c/docs/getting-started/","docId":"getting-started/index","unlisted":false}]},"docs":{"getting-started/index":{"id":"getting-started/index","title":"\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b","description":"","sidebar":"tutorialSidebar"}}}}')}}]);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[254],{9498:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=n(4848),r=n(8453);const o={sidebar_label:"\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b",sidebar_position:0},i="\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b",a={id:"getting-started/index",title:"\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b",description:"",source:"@site/docs/getting-started/index.md",sourceDirName:"getting-started",slug:"/getting-started/",permalink:"/fluent-request-schema-1c/docs/getting-started/",draft:!1,unlisted:!1,editUrl:"https://github.com/zerobig/fluent-request-schema-1c/tree/main/packages/create-docusaurus/templates/shared/docs/getting-started/index.md",tags:[],version:"current",sidebarPosition:0,frontMatter:{sidebar_label:"\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b",sidebar_position:0},sidebar:"tutorialSidebar"},c={},d=[];function u(e){const t={h1:"h1",header:"header",...(0,r.R)(),...e.components};return(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"\u043d\u0430\u0447\u0430\u043b\u043e-\u0440\u0430\u0431\u043e\u0442\u044b",children:"\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b"})})}function l(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const r={},o=s.createContext(r);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]);

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[647],{7121:(e,s,r)=>{r.r(s),r.d(s,{default:()=>l});r(6540);var c=r(4164),u=r(1003),a=r(7559),d=r(2831),n=r(781),t=r(4848);function l(e){return(0,t.jsx)(u.e3,{className:(0,c.A)(a.G.wrapper.docsPages),children:(0,t.jsx)(n.A,{children:(0,d.v)(e.route.routes)})})}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[235],{8552:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]);

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[98],{1723:(n,e,s)=>{s.r(e),s.d(e,{default:()=>l});s(6540);var r=s(1003);function o(n,e){return`docs-${n}-${e}`}var t=s(3025),c=s(2831),i=s(1463),u=s(4848);function a(n){const{version:e}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(i.A,{version:e.version,tag:o(e.pluginId,e.version)}),(0,u.jsx)(r.be,{children:e.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function d(n){const{version:e,route:s}=n;return(0,u.jsx)(r.e3,{className:e.className,children:(0,u.jsx)(t.n,{version:e,children:(0,c.v)(s.routes)})})}function l(n){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a,{...n}),(0,u.jsx)(d,{...n})]})}}}]);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[742],{7093:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,64 @@
/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
* @license MIT */
/*! Bundled license information:
prismjs/prism.js:
(**
* Prism: Lightweight, robust, elegant syntax highlighting
*
* @license MIT <https://opensource.org/licenses/MIT>
* @author Lea Verou <https://lea.verou.me>
* @namespace
* @public
*)
*/
/**
* @license React
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v16.13.1
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

View File

@@ -0,0 +1 @@
(()=>{"use strict";var e,t,r,a,o,n={},c={};function f(e){var t=c[e];if(void 0!==t)return t.exports;var r=c[e]={exports:{}};return n[e].call(r.exports,r,r.exports,f),r.exports}f.m=n,e=[],f.O=(t,r,a,o)=>{if(!r){var n=1/0;for(u=0;u<e.length;u++){r=e[u][0],a=e[u][1],o=e[u][2];for(var c=!0,i=0;i<r.length;i++)(!1&o||n>=o)&&Object.keys(f.O).every((e=>f.O[e](r[i])))?r.splice(i--,1):(c=!1,o<n&&(n=o));if(c){e.splice(u--,1);var d=a();void 0!==d&&(t=d)}}return t}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,a,o]},f.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return f.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);f.r(o);var n={};t=t||[null,r({}),r([]),r(r)];for(var c=2&a&&e;"object"==typeof c&&!~t.indexOf(c);c=r(c))Object.getOwnPropertyNames(c).forEach((t=>n[t]=()=>e[t]));return n.default=()=>e,f.d(o,n),o},f.d=(e,t)=>{for(var r in t)f.o(t,r)&&!f.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((t,r)=>(f.f[r](e,t),t)),[])),f.u=e=>"assets/js/"+({48:"a94703ab",61:"1f391b9e",65:"03fe1038",69:"84c9a1dd",98:"a7bd4aaa",104:"93e67da0",235:"a7456010",254:"54c82979",324:"f920b2cc",365:"241bb739",401:"17896441",600:"360dc931",647:"5e95c892",742:"aba21aa0",795:"f3976560",864:"3f557775",987:"2615e5c5"}[e]||e)+"."+{48:"be5e0574",61:"263c413a",65:"8dfb2196",69:"764507df",98:"656def23",104:"88035f25",235:"47cad1bc",237:"7663bed8",254:"f8564b14",324:"e60c92ae",365:"ec4ac292",401:"6c4f1bfa",408:"0cae011d",600:"f6c3cf68",647:"1dd55255",742:"eb7bf6f2",795:"b971c84c",864:"afea276a",987:"e11de24a"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a={},o="docs:",f.l=(e,t,r,n)=>{if(a[e])a[e].push(t);else{var c,i;if(void 0!==r)for(var d=document.getElementsByTagName("script"),u=0;u<d.length;u++){var l=d[u];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){c=l;break}}c||(i=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,f.nc&&c.setAttribute("nonce",f.nc),c.setAttribute("data-webpack",o+r),c.src=e),a[e]=[t];var s=(t,r)=>{c.onerror=c.onload=null,clearTimeout(b);var o=a[e];if(delete a[e],c.parentNode&&c.parentNode.removeChild(c),o&&o.forEach((e=>e(r))),t)return t(r)},b=setTimeout(s.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=s.bind(null,c.onerror),c.onload=s.bind(null,c.onload),i&&document.head.appendChild(c)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/fluent-request-schema-1c/",f.gca=function(e){return e={17896441:"401",a94703ab:"48","1f391b9e":"61","03fe1038":"65","84c9a1dd":"69",a7bd4aaa:"98","93e67da0":"104",a7456010:"235","54c82979":"254",f920b2cc:"324","241bb739":"365","360dc931":"600","5e95c892":"647",aba21aa0:"742",f3976560:"795","3f557775":"864","2615e5c5":"987"}[e]||e,f.p+f.u(e)},(()=>{var e={354:0,869:0};f.f.j=(t,r)=>{var a=f.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(354|869)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>a=e[t]=[r,o]));r.push(a[2]=o);var n=f.p+f.u(t),c=new Error;f.l(n,(r=>{if(f.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;c.message="Loading chunk "+t+" failed.\n("+o+": "+n+")",c.name="ChunkLoadError",c.type=o,c.request=n,a[1](c)}}),"chunk-"+t,t)}},f.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,n=r[0],c=r[1],i=r[2],d=0;if(n.some((t=>0!==e[t]))){for(a in c)f.o(c,a)&&(f.m[a]=c[a]);if(i)var u=i(f)}for(t&&t(r);d<n.length;d++)o=n[d],f.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return f.O(u)},r=self.webpackChunkdocs=self.webpackChunkdocs||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})()})();

20
docs/.gitignore vendored
View File

@@ -1,20 +0,0 @@
# Dependencies
/node_modules
# Production
/build
# Generated files
.docusaurus
.cache-loader
# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

View File

@@ -1,41 +0,0 @@
# Website
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
### Installation
```
$ yarn
```
### Local Development
```
$ yarn start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
### Build
```
$ yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
Using SSH:
```
$ USE_SSH=true yarn deploy
```
Not using SSH:
```
$ GIT_USER=<Your GitHub username> yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

View File

@@ -1,3 +0,0 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};

View File

@@ -1,7 +0,0 @@
---
sidebar_label: "Начало работы"
sidebar_position: 0
---
# Начало работы

View File

@@ -1,137 +0,0 @@
import {themes as prismThemes} from 'prism-react-renderer';
import type {Config} from '@docusaurus/types';
import type * as Preset from '@docusaurus/preset-classic';
const config: Config = {
title: '1С Предприятие. Fluent запросы',
tagline: 'Dinosaurs are cool',
favicon: 'img/favicon.ico',
// Set the production url of your site here
url: 'https://zerobig.github.io',
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
baseUrl: '/fluent-request-schema-1c',
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
organizationName: 'zerobig',
projectName: 'fluent-request-schema-1c',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: 'ru',
locales: ['ru'],
},
presets: [
[
'classic',
{
docs: {
sidebarPath: './sidebars.ts',
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
editUrl:
'https://github.com/zerobig/fluent-request-schema-1c/tree/main/packages/create-docusaurus/templates/shared/',
},
theme: {
customCss: './src/css/custom.css',
},
} satisfies Preset.Options,
],
],
plugins: [
[
'@docusaurus/plugin-content-docs',
{
id: 'api',
path: 'api',
routeBasePath: 'api',
sidebarPath: './sidebarsAPI.ts',
// ... other options
},
],
],
themeConfig: {
// Replace with your project's social card
navbar: {
title: '1С Предприятие. Fluent запросы',
logo: {
alt: 'Логотип',
src: 'img/logo.svg',
},
items: [
{
type: 'doc',
docId: 'getting-started/index',
position: 'left',
label: 'Начало',
},
{
type: 'docSidebar',
sidebarId: 'api',
docsPluginId: 'api',
position: 'left',
label: 'API',
},
{
href: 'https://github.com/zerobig/fluent-request-schema-1c',
label: 'GitHub',
position: 'right',
},
],
},
footer: {
style: 'dark',
links: [
{
title: 'Документация',
items: [
{
label: 'Начало',
to: '/docs/getting-started',
},
],
},
{
title: 'Обратная связь',
items: [
{
label: 'Stack Overflow',
href: 'https://stackoverflow.com/questions/tagged/fluent-request-schema-1c',
},
{
label: 'GitHub Issues',
href: 'https://github.com/zerobig/fluent-request-schema-1c/issues',
},
],
},
{
title: 'Ещё',
items: [
{
label: 'GitHub',
href: 'https://github.com/zerobig/fluent-request-schema-1c',
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} Бушин Илья. Built with Docusaurus.`,
},
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.dracula,
additionalLanguages: ['bsl', 'json'],
},
} satisfies Preset.ThemeConfig,
};
export default config;

File diff suppressed because one or more lines are too long

View File

@@ -1,47 +0,0 @@
{
"name": "docs",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
"typecheck": "tsc"
},
"dependencies": {
"@docusaurus/core": "3.5.2",
"@docusaurus/preset-classic": "3.5.2",
"@mdx-js/react": "^3.0.0",
"clsx": "^2.0.0",
"prism-react-renderer": "^2.3.0",
"react": "^18.0.0",
"react-dom": "^18.0.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.5.2",
"@docusaurus/tsconfig": "3.5.2",
"@docusaurus/types": "3.5.2",
"typescript": "~5.5.2"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 3 chrome version",
"last 3 firefox version",
"last 5 safari version"
]
},
"engines": {
"node": ">=18.0"
}
}

View File

@@ -1,31 +0,0 @@
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
const sidebars: SidebarsConfig = {
// By default, Docusaurus generates a sidebar from the docs folder structure
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
export default sidebars;

View File

@@ -1,31 +0,0 @@
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
const sidebars: SidebarsConfig = {
// By default, Docusaurus generates a sidebar from the docs folder structure
api: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
export default sidebars;

View File

@@ -1,30 +0,0 @@
/**
* Any CSS included here will be global. The classic template
* bundles Infima by default. Infima is a CSS framework designed to
* work well for content-centric websites.
*/
/* You can override the default Infima variables here. */
:root {
--ifm-color-primary: #2e8555;
--ifm-color-primary-dark: #29784c;
--ifm-color-primary-darker: #277148;
--ifm-color-primary-darkest: #205d3b;
--ifm-color-primary-light: #33925d;
--ifm-color-primary-lighter: #359962;
--ifm-color-primary-lightest: #3cad6e;
--ifm-code-font-size: 95%;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
}
/* For readability concerns, you should choose a lighter palette in dark mode. */
[data-theme='dark'] {
--ifm-color-primary: #25c2a0;
--ifm-color-primary-dark: #21af90;
--ifm-color-primary-darker: #1fa588;
--ifm-color-primary-darkest: #1a8870;
--ifm-color-primary-light: #29d5b0;
--ifm-color-primary-lighter: #32d8b4;
--ifm-color-primary-lightest: #4fddbf;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
}

View File

@@ -1,32 +0,0 @@
---
sidebar_position: 0
slug: /
---
# 1С Предприятие. Fluent запросы
Библиотека позволяет писать запросы 1С Предприятия в функциональном стиле. Например, вот такой код:
```bsl
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура").ВТаблицуЗначений();
```
будет аналогичен:
```bsl
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
ТаблицаЗначений = Запрос.Выполнить().Выгрузить();
```
## Благодарности
- [YAxUnit](https://github.com/bia-technologies/yaxunit)
- [1CFilesConverter](https://github.com/arkuznetsov/1CFilesConverter)
## Лицензия
Copyright © 2024 [Бушин Илья](https://github.com/zerobig/)
Distributed under the [MIT License](https://www.mit.edu/~amini/LICENSE.md)

View File

@@ -1,8 +0,0 @@
{
// This file is not used in compilation. It is here just for a nice editor experience.
"extends": "@docusaurus/tsconfig",
"compilerOptions": {
"baseUrl": ".",
"moduleResolution": "node"
}
}

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 974 B

After

Width:  |  Height:  |  Size: 974 B

BIN
index.html Normal file

Binary file not shown.

View File

@@ -1,11 +0,0 @@
{
"name": "fluent-request-schema-1c",
"version": "0.0.1",
"scripts": {
"build": "npm run build:config && npm run build:extension",
"build:config": "cd scripts ",
"build:extension": "cd scripts && ext2cfe.cmd ../src/cfe ../dist/request_schema.cfe СхемаЗапроса"
},
"author": "Bushin Ilya",
"license": "MIT"
}

View File

@@ -1 +0,0 @@
V8_VERSION=8.3.25.1336

View File

@@ -1,167 +0,0 @@
@rem ----------------------------------------------------------
@rem This Source Code Form is subject to the terms of the
@rem Mozilla Public License, v.2.0. If a copy of the MPL
@rem was not distributed with this file, You can obtain one
@rem at http://mozilla.org/MPL/2.0/.
@rem ----------------------------------------------------------
@rem Codebase: https://github.com/ArKuznetsov/1CFilesConverter/
@rem ----------------------------------------------------------
@ECHO OFF
SETLOCAL
set CONVERT_VERSION=UNKNOWN
IF exist "..\VERSION" FOR /F "usebackq tokens=* delims=" %%i IN ("..\VERSION") DO set CONVERT_VERSION=%%i
echo 1C files converter v.%CONVERT_VERSION%
echo ===
echo Convert 1C configuration extension to binary format ^(*.cfe^)
set ERROR_CODE=0
IF not defined V8_VERSION set V8_VERSION=8.3.20.2290
IF not defined V8_TEMP set V8_TEMP=%TEMP%\1c
IF not "%V8_CONVERT_TOOL%" equ "designer" IF not "%V8_CONVERT_TOOL%" equ "ibcmd" set V8_CONVERT_TOOL=designer
set V8_TOOL="C:\Program Files\1cv8\%V8_VERSION%\bin\1cv8.exe"
set IBCMD_TOOL="C:\Program Files\1cv8\%V8_VERSION%\bin\ibcmd.exe"
IF not defined V8_RING_TOOL (
FOR /F "usebackq tokens=1 delims=" %%i IN (`where ring`) DO (
set V8_RING_TOOL="%%i"
)
)
set LOCAL_TEMP=%V8_TEMP%\%~n0
set IB_PATH=%LOCAL_TEMP%\tmp_db
set XML_PATH=%LOCAL_TEMP%\tmp_xml
set WS_PATH=%LOCAL_TEMP%\edt_ws
set ARG=%1
IF defined ARG set ARG=%ARG:"=%
IF "%ARG%" neq "" set V8_SRC_PATH=%ARG%
set ARG=%2
IF defined ARG set ARG=%ARG:"=%
IF "%ARG%" neq "" set V8_DST_PATH=%ARG%
set V8_DST_FOLDER=%~dp2
set V8_DST_FOLDER=%V8_DST_FOLDER:~0,-1%
set ARG=%3
IF defined ARG set ARG=%ARG:"=%
IF "%ARG%" neq "" set V8_EXT_NAME=%ARG%
set ARG=%4
IF defined ARG set ARG=%ARG:"=%
IF "%ARG%" neq "" set V8_BASE_CONFIG=%ARG%
IF not defined V8_SRC_PATH (
echo [ERROR] Missed parameter 1 - "path to folder contains 1C extension in 1C:Designer XML format or EDT project"
set ERROR_CODE=1
) ELSE (
IF not exist "%V8_SRC_PATH%" (
echo [ERROR] Path "%V8_SRC_PATH%" doesn't exist ^(parameter 1^).
set ERROR_CODE=1
)
)
IF not defined V8_DST_PATH (
echo [ERROR] Missed parameter 2 - "path to 1C configuration extension file (*.cfe)"
set ERROR_CODE=1
)
IF not defined V8_EXT_NAME (
echo [ERROR] Missed parameter 3 - "configuration extension name"
set ERROR_CODE=1
)
IF not exist "%V8_BASE_CONFIG%" (
echo [INFO] Path "%V8_BASE_CONFIG%" doesn't exist ^(parameter 4^), empty infobase will be used.
set V8_BASE_CONFIG=
)
IF %ERROR_CODE% neq 0 (
echo ===
echo [ERROR] Input parameters error. Expected:
echo %%1 - path to folder contains 1C extension in 1C:Designer XML format or EDT project
echo %%2 - path to 1C configuration extension file ^(*.cfe^)
echo %%3 - configuration extension name
echo %%4 - ^(optional^) path to 1C configuration ^(binary ^(*.cf^), 1C:Designer XML format or 1C:EDT project^)
echo or folder contains 1C infobase used for convertion
echo.
exit /b %ERROR_CODE%
)
echo [INFO] Clear temporary files...
IF exist "%LOCAL_TEMP%" rd /S /Q "%LOCAL_TEMP%"
md "%LOCAL_TEMP%"
IF not exist "%V8_DST_FOLDER%" md "%V8_DST_FOLDER%"
echo [INFO] Set infobase for export data processor/report...
set V8_BASE_CONFIG_DESCRIPTION=configuration from "%V8_BASE_CONFIG%"
IF "%V8_BASE_CONFIG%" equ "" (
md "%IB_PATH%"
echo [INFO] Creating infobase "%IB_PATH%"...
set V8_BASE_CONFIG_DESCRIPTION=empty configuration
%V8_TOOL% CREATEINFOBASE File=%IB_PATH%; /DisableStartupDialogs
goto export
)
IF exist "%V8_BASE_CONFIG%\1cv8.1cd" (
echo [INFO] Basic config source type: Infobase
set V8_BASE_CONFIG_DESCRIPTION=existed configuration
set IB_PATH=%V8_BASE_CONFIG%
goto export
)
md "%IB_PATH%"
call %~dp0conf2ib.cmd "%V8_BASE_CONFIG%" "%IB_PATH%"
IF ERRORLEVEL 0 goto export
echo [ERROR] Error cheking type of basic configuration "%V8_BASE_CONFIG%"!
echo Infobase, configuration file ^(*.cf^), 1C:Designer XML, 1C:EDT project or no configuration expected.
exit /b 1
:export
echo [INFO] Checking 1C extension source type...
IF exist "%V8_SRC_PATH%\DT-INF\" (
IF exist "%V8_SRC_PATH%\src\Configuration\Configuration.mdo" (
FOR /F "delims=" %%t IN ('findstr /r /i "<objectBelonging>" "%V8_SRC_PATH%\src\Configuration\Configuration.mdo"') DO (
echo [INFO] Source type: 1C:EDT project
md "%XML_PATH%"
md "%WS_PATH%"
goto export_edt
)
)
)
IF exist "%V8_SRC_PATH%\Configuration.xml" (
FOR /F "delims=" %%t IN ('findstr /r /i "<objectBelonging>" "%V8_SRC_PATH%\Configuration.xml"') DO (
echo [INFO] Source type: 1C:Designer XML files
set XML_PATH=%V8_SRC_PATH%
goto export_xml
)
)
echo [ERROR] Wrong path "%V8_SRC_PATH%"!
echo Folder containing configuration extension in 1C:Designer XML format or 1C:EDT project expected.
exit /b 1
:export_edt
echo [INFO] Export configuration extension from 1C:EDT format "%V8_SRC_PATH%" to 1C:Designer XML format "%XML_PATH%"...
call %V8_RING_TOOL% edt workspace export --project "%V8_SRC_PATH%" --configuration-files "%XML_PATH%" --workspace-location "%WS_PATH%"
:export_xml
echo [INFO] Loading configuration extension from XML-files "%XML_PATH%" to infobase "%IB_PATH%"...
IF "%V8_CONVERT_TOOL%" equ "designer" (
%V8_TOOL% DESIGNER /IBConnectionString File=%IB_PATH%; /DisableStartupDialogs /LoadConfigFromFiles %XML_PATH% -Extension %V8_EXT_NAME%
) ELSE (
%IBCMD_TOOL% infobase config import --db-path="%IB_PATH%" --extension=%V8_EXT_NAME% "%XML_PATH%"
)
:export_ib
echo [INFO] Export configuration extension from infobase "%IB_PATH%" configuration to "%V8_DST_PATH%"...
IF "%V8_CONVERT_TOOL%" equ "designer" (
%V8_TOOL% DESIGNER /IBConnectionString File=%IB_PATH%; /DisableStartupDialogs /DumpCfg %V8_DST_PATH% -Extension %V8_EXT_NAME%
) ELSE (
%IBCMD_TOOL% infobase config save --db-path="%IB_PATH%" --extension=%V8_EXT_NAME% "%V8_DST_PATH%"
)
echo [INFO] Clear temporary files...
IF exist "%LOCAL_TEMP%" rd /S /Q "%LOCAL_TEMP%"

1
sitemap.xml Normal file
View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://zerobig.github.io/fluent-request-schema-1c/api/%D0%A1%D0%97_%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D1%8B%D0%9F%D1%80%D0%B5%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D0%B2%D0%9A%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zerobig.github.io/fluent-request-schema-1c/api/%D0%A1%D0%97_%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D1%8B%D0%9F%D1%80%D0%B5%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D0%B2%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%9A%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zerobig.github.io/fluent-request-schema-1c/api/%D0%A1%D0%97_%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D1%8B%D0%A1%D1%85%D0%B5%D0%BC%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0%D0%9A%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zerobig.github.io/fluent-request-schema-1c/api/%D0%A1%D0%97_%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D1%8B%D0%A1%D1%85%D0%B5%D0%BC%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zerobig.github.io/fluent-request-schema-1c/api/%D0%A1%D0%97_%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D1%8B%D0%A1%D1%85%D0%B5%D0%BC%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D1%8B%D0%B9%D0%9A%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zerobig.github.io/fluent-request-schema-1c/docs/getting-started/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zerobig.github.io/fluent-request-schema-1c/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url></urlset>

View File

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<CommonModule uuid="5f1605a0-4e63-4339-b2cc-44e115be6ed7">
<Properties>
<Name>СЗ_Запрос</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: запрос</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -1,27 +0,0 @@

Функция НовыйЗапрос(ИсточникДанных, Первые = 0, Различные = Ложь, Разрешенные = Ложь) Экспорт
ПроцессорСхемЗапроса = СЗ_ПроцессорыСхемЗапросаКлиентСервер
.НовыйПроцессорСхемЗапроса(ИсточникДанных, Первые, Различные, Разрешенные);
Возврат ПроцессорСхемЗапроса;
КонецФункции
Функция Предикат() Экспорт
ПроцессорПредикатов = СЗ_ПроцессорыПредикатовКлиентСервер
.НовыйПроцессорПредикатов();
Возврат ПроцессорПредикатов;
КонецФункции
// TODO: В модуле СЗ_ПроцессорыСхемЗапросаКлиентСерверСлужебный так же регулярно требуетс
// такая структура. Рефакторинг!
Функция НовоеПоле(ИмяПоля, Источник, Псевдоним) Экспорт
Возврат Новый Структура("ИмяПоля, Источник, Псевдоним",
ИмяПоля, Источник, Псевдоним);
КонецФункции

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<CommonModule uuid="52ab0c6f-4fa1-4913-b37e-460ab1e44314">
<Properties>
<Name>СЗ_ЗапросТест</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: запрос тест</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -1,566 +0,0 @@
#Область ОбъявлениеТестов
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты
.ДобавитьТест("ИсключениеИсточникОтсутствует")
.ДобавитьТест("ИсключениеИсточникПустаяСтрока")
.ДобавитьТест("ЗапросВТаблицуЗначений")
.ДобавитьТест("ЗапросВМассив")
.ДобавитьТест("Первые")
.ДобавитьТест("Различные")
.ДобавитьТест("Разрешенные")
.ДобавитьТест("ИсключениеПолеОтсутствует")
.ДобавитьТест("ДобавитьПоляССинонимами")
.ДобавитьТест("ДобавитьНесколькоПолей")
.ДобавитьТест("ДобавитьНесколькоПолейСПереносомСтроки")
.ДобавитьТест("ДобавитьПоляССинонимамиИСписком")
.ДобавитьТест("ВсеПоляДляНеСсылочногоТипа")
.ДобавитьТест("ВсеПоляДляСсылочногоТипа")
.ДобавитьТест("ЗапросСУсловием")
.ДобавитьТест("ЛевоеСоединениеПоИсточникуСтроке")
.ДобавитьТест("ЛевоеСоединениеПоИсточникуЗапросу")
.ДобавитьТест("ЛевоеСоединениеБезПредиката")
.ДобавитьТест("ЛевоеСоединениеНесколькоУсловийВПредикате")
.ДобавитьТест("ЛевоеСоединениеПредикатЭтоПараметр")
.ДобавитьТест("ЛевоеСоединениеБезПсевдонимовВСоединении")
.ДобавитьТест("НесколькоЛевыхСоединений")
.ДобавитьТест("ВложенныйЗапрос")
.ДобавитьТест("Порядок")
.ДобавитьТест("Итоги")
.ДобавитьТест("АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений")
;
КонецПроцедуры
#КонецОбласти
#Область Тесты
#Область Базовые
Процедура ИсключениеИсточникОтсутствует() Экспорт
Предикат = СЗ_Запрос.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь)
.Получить()
;
Обработка = Обработки.СЗ_ПроцессорСхемЗапроса.Создать();
ЮТест.ОжидаетЧто(Обработка)
.Метод("ВТаблицуЗначений")
.ВыбрасываетИсключение("Источник данных запроса не определен");
КонецПроцедуры
Процедура ИсключениеИсточникПустаяСтрока() Экспорт
Предикат = СЗ_Запрос.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь)
.Получить()
;
Запрос = СЗ_Запрос.НовыйЗапрос("")
.Где(Предикат)
;
ЮТест.ОжидаетЧто(Запрос)
.Метод("ВТаблицуЗначений")
.ВыбрасываетИсключение("Источник данных запроса не определен");
КонецПроцедуры
Процедура ЗапросВТаблицуЗначений() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
КонецПроцедуры
Процедура ЗапросВМассив() Экспорт
Массив = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.ВМассив("Ссылка")
;
ЮТест.ОжидаетЧто(Массив)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(Массив.Количество())
.Больше(0)
;
КонецПроцедуры
Процедура Первые() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура", 10)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Равно(10)
;
КонецПроцедуры
Процедура Различные() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура",, Истина)
.ВТаблицуЗначений()
;
КонецПроцедуры
Процедура Разрешенные() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура",,, Истина)
.ВТаблицуЗначений()
;
КонецПроцедуры
#КонецОбласти
#Область Поля
// TODO: Поля могут быть выражениями
Процедура ИсключениеПолеОтсутствует() Экспорт
НеправильноеНаименованиеПоля = "йцукен";
Запрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать(НеправильноеНаименованиеПоля)
;
ЮТест.ОжидаетЧто(Запрос)
.Метод("ВТаблицуЗначений")
.ВыбрасываетИсключение(
СтрШаблон("Поле %1 в источнике не определено", НеправильноеНаименованиеПоля));
КонецПроцедуры
Процедура ДобавитьПоляССинонимами() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать(СЗ_Запрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры"))
.Выбрать(СЗ_Запрос.НовоеПоле("Наименование",, "НаименованиеНоменклатуры"))
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("СсылкаНоменклатуры")
.ИмеетСвойство("НаименованиеНоменклатуры")
;
КонецПроцедуры
Процедура ДобавитьНесколькоПолей() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Ссылка, Наименование, ЭтоГруппа")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("Наименование")
.ИмеетСвойство("ЭтоГруппа")
;
КонецПроцедуры
Процедура ДобавитьНесколькоПолейСПереносомСтроки() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Ссылка, Наименование,
|ЭтоГруппа")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("Наименование")
.ИмеетСвойство("ЭтоГруппа")
;
КонецПроцедуры
Процедура ДобавитьПоляССинонимамиИСписком() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать(СЗ_Запрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры"))
.Выбрать("Наименование КАК НаименованиеНоменклатуры, ЭтоГруппа")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("СсылкаНоменклатуры")
.ИмеетСвойство("НаименованиеНоменклатуры")
.ИмеетСвойство("ЭтоГруппа")
;
КонецПроцедуры
Процедура ВсеПоляДляНеСсылочногоТипа() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("РегистрСведений.КурсыВалют")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Валюта")
.ИмеетСвойство("Курс")
.ИмеетСвойство("Кратность")
;
КонецПроцедуры
Процедура ВсеПоляДляСсылочногоТипа() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.ВыбратьВсе()
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("Наименование")
.ИмеетСвойство("ЭтоГруппа")
;
КонецПроцедуры
#КонецОбласти
#Область Условия
Процедура ЗапросСУсловием() Экспорт
Предикат = СЗ_Запрос.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь)
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Где(Предикат)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
КонецПроцедуры
#КонецОбласти
#Область Соединения
Процедура ЛевоеСоединениеПоИсточникуСтроке() Экспорт
ПредикатДляСоединения = СЗ_Запрос.Предикат()
.Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель")
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка,
|НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка")
.ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("НоменклатураСоединениеСсылка")
;
КонецПроцедуры
Процедура ЛевоеСоединениеПоИсточникуЗапросу() Экспорт
ЗапросДляСоединения = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура");
ПредикатДляСоединения = СЗ_Запрос.Предикат()
.Реквизит("Ссылка").Равно("Родитель")
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка,
|НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка")
.ЛевоеСоединение(ЗапросДляСоединения, ПредикатДляСоединения)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("НоменклатураСоединениеСсылка")
;
КонецПроцедуры
Процедура ЛевоеСоединениеБезПредиката() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("РегистрСведений.ПримененияЕНВД")
.Выбрать("ПримененияЕНВД.Организация КАК Организация,
|ПримененияЕНВДСоединение.Склад КАК Склад")
.ЛевоеСоединение("РегистрСведений.ПримененияЕНВД КАК ПримененияЕНВДСоединение")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Организация")
.ИмеетСвойство("Склад")
;
КонецПроцедуры
Процедура ЛевоеСоединениеНесколькоУсловийВПредикате() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка,
|НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка")
.ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СЗ_Запрос.Предикат()
.Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель")
.Реквизит("НоменклатураСоединение.ЭтоГруппа").Равно("ИСТИНА"))
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("НоменклатураСоединениеСсылка")
;
КонецПроцедуры
Процедура ЛевоеСоединениеПредикатЭтоПараметр() Экспорт
// Подготовка
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа";
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Новый Структура("ИмяПараметра, Значение",
"Родитель", Выборка.Ссылка));
// Выполнение
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка,
|НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка")
.ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СЗ_Запрос.Предикат()
.Реквизит("НоменклатураСоединение.Родитель").Равно("&Родитель"))
.Параметры(МассивПараметров)
.ВТаблицуЗначений()
;
// Проверки
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("НоменклатураСоединениеСсылка")
;
КонецПроцедуры
Процедура ЛевоеСоединениеБезПсевдонимовВСоединении() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка, Номенклатура1.Ссылка")
.ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат()
.Реквизит("Ссылка").Равно("Родитель")
.Реквизит("ЭтоГруппа").Равно("ИСТИНА"))
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("Ссылка1")
;
КонецПроцедуры
Процедура НесколькоЛевыхСоединений() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка, Номенклатура1.Ссылка, Номенклатура2.Ссылка")
.ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат()
.Реквизит("Ссылка").Равно("Родитель")
.Реквизит("ЭтоГруппа").Равно("ИСТИНА"))
.ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат()
.Реквизит("Ссылка").Равно("Родитель")
.Реквизит("ЭтоГруппа").Равно("ИСТИНА"))
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("Ссылка1")
.ИмеетСвойство("Ссылка2")
;
КонецПроцедуры
#КонецОбласти
Процедура ВложенныйЗапрос() Экспорт
ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура");
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос)
.ВТаблицуЗначений()
;
КонецПроцедуры
Процедура Порядок() Экспорт
// Выполнение
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Упорядочить("ЭтоГруппа, Наименование")
.ВТаблицуЗначений()
;
// Проверки
// TODO:
КонецПроцедуры
Процедура Итоги() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
// TODO:
.Итоги()
.ВТаблицуЗначений()
;
КонецПроцедуры
#Область РеальныеЗапросы
Процедура АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений() Экспорт
// Подготовка
НаименованияАдресныхОбъектов = Новый Массив;
НаименованияАдресныхОбъектов.Добавить("Абонентский Ящик");
// Выполнение
Запрос = СЗ_Запрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений")
.Выбрать("Значение КАК Наименование, Сокращение")
.Сгруппировать("Значение, Сокращение")
.Упорядочить("Наименование");
Если ТипЗнч(НаименованияАдресныхОбъектов) = Тип("Массив") И НаименованияАдресныхОбъектов.Количество() > 0 Тогда
Запрос = Запрос
.Где(СЗ_Запрос.Предикат()
.Реквизит("Значение").В(НаименованияАдресныхОбъектов));
КонецЕсли;
Результат = Запрос.ВТаблицуЗначений();
// Проверки
ЮТест.ОжидаетЧто(Результат)
.ИмеетТип("ТаблицаЗначений")
;
// TODO:
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<CommonModule uuid="407489b2-2f4b-467b-9594-621de146e468">
<Properties>
<Name>СЗ_ПроцессорыПредикатовКлиентСервер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: процессоры предикатов клиент сервер</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -1,27 +0,0 @@
#Область ПрограммныйИнтерфейс
Функция НовыйПроцессорПредикатов() Экспорт
#Если Клиент Тогда
ПроцессорПредикатов = ПолучитьФорму("Обработка.СЗ_ПроцессорПредикатов.Форма.Форма");
#Иначе
ПроцессорПредикатов = Обработки.СЗ_ПроцессорПредикатов.Создать();
#КонецЕсли
Возврат ПроцессорПредикатов;
КонецФункции
Функция Выражения() Экспорт
Выражения = Новый Структура;
Выражения.Вставить("Равно", "Равно");
Выражения.Вставить("Больше", "Больше");
Выражения.Вставить("Меньше", "Меньше");
Выражения.Вставить("В", "В");
Возврат Новый ФиксированнаяСтруктура(Выражения);
КонецФункции
#КонецОбласти

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<CommonModule uuid="19b0625e-9f74-4fba-9350-914066ae1034">
<Properties>
<Name>СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: процессоры предикатов служебный клиент сервер</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -1,27 +0,0 @@
#Область ПрограммныйИнтерфейс
Процедура УстановитьИмяРеквизита(Предикат, ИмяРеквизита) Экспорт
Если Предикат = Неопределено Тогда
Предикат = Новый Структура("ИмяРеквизита, Условия",
"", Новый Массив);
КонецЕсли;
Предикат.ИмяРеквизита = ИмяРеквизита;
КонецПроцедуры
Процедура УстановитьПредикат(Предикат, ВидСравнения, Значение) Экспорт
Если Предикат = Неопределено Или ПустаяСтрока(Предикат.ИмяРеквизита) Тогда
ВызватьИсключение "Ошибочный порядок вызова функций формирования предиката";
КонецЕсли;
Условие = Новый Структура("ИмяРеквизита, ВидСравнения, Значение",
Предикат.ИмяРеквизита, ВидСравнения, Значение);
Предикат.Условия.Добавить(Условие);
КонецПроцедуры
#КонецОбласти

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<CommonModule uuid="a3e5bf50-2154-477f-9355-29b0930a73c5">
<Properties>
<Name>СЗ_ПроцессорыСхемЗапросаКлиентСервер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: процессоры схем запроса</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -1,17 +0,0 @@
#Область ПрограммныйИнтерфейс
Функция НовыйПроцессорСхемЗапроса(ИсточникДанных, Первые = 0, Различные = Ложь, Разрешенные = Ложь) Экспорт
#Если Клиент Тогда
ПроцессорСхемЗапроса = ПолучитьФорму("Обработка.СЗ_ПроцессорСхемЗапроса.Форма.Форма");
#Иначе
ПроцессорСхемЗапроса = Обработки.СЗ_ПроцессорСхемЗапроса.Создать();
#КонецЕсли
ПроцессорСхемЗапроса.УстановитьИсточникДанных(ИсточникДанных, Первые, Различные, Разрешенные);
Возврат ПроцессорСхемЗапроса;
КонецФункции
#КонецОбласти

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<CommonModule uuid="fd5aeea0-9a03-452d-ba1e-81c816846c6c">
<Properties>
<Name>СЗ_ПроцессорыСхемЗапросаСлужебный</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: процессоры схем запроса служебный</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -1,237 +0,0 @@

#Область ПрограммныйИнтерфейс
Функция ПолучитьРезультатЗапроса(СтруктураСхемыЗапроса) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = ПолучитьТекстЗапроса(СтруктураСхемыЗапроса, Запрос);
ДобавитьПараметрыЗапроса(СтруктураСхемыЗапроса, Запрос);
Возврат Запрос.Выполнить();
КонецФункции
Функция ПолучитьТекстЗапроса(СтруктураСхемыЗапроса, Запрос) Экспорт
Если Не ТипЗнч(СтруктураСхемыЗапроса) = Тип("Структура") Или
Не СтруктураСхемыЗапроса.Свойство("ИсточникДанных") Или
ПустаяСтрока(СтруктураСхемыЗапроса.ИсточникДанных) Тогда
ВызватьИсключение "Источник данных запроса не определен";
КонецЕсли;
СхемаЗапроса = Новый СхемаЗапроса;
ЗапросПакета = ДобавитьПолучитьПакет(СхемаЗапроса, СтруктураСхемыЗапроса);
Оператор = ДобавитьПолучитьОператор(ЗапросПакета, СтруктураСхемыЗапроса);
// Соединения добавляются раньше всех чтобы к моменту добавления полей у нас
// уже были все возможные источники данных
ДобавитьСоединения(Оператор, СтруктураСхемыЗапроса);
ДобавитьПоля(ЗапросПакета, Оператор, СтруктураСхемыЗапроса);
ДобавитьУсловия(Оператор, Запрос, СтруктураСхемыЗапроса);
ДобавитьГруппировку(Оператор, СтруктураСхемыЗапроса);
ДобавитьПорядок(ЗапросПакета, СтруктураСхемыЗапроса);
ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ДобавитьПолучитьПакет(СхемаЗапроса, СтруктураСхемыЗапроса)
ПакетЗапросов = СхемаЗапроса.ПакетЗапросов;
Если ПакетЗапросов.Количество() = 1 И СхемаЗапроса.ПолучитьТекстЗапроса() = "" Тогда
ЗапросПакета = ПакетЗапросов[0];
Иначе
ЗапросПакета = СхемаЗапроса.ПакетЗапросов.Добавить(Тип("ЗапросВыбораСхемыЗапроса"));
КонецЕсли;
Если СтруктураСхемыЗапроса.Свойство("Разрешенные") И СтруктураСхемыЗапроса.Разрешенные Тогда
ЗапросПакета.ВыбиратьРазрешенные = Истина;
КонецЕсли;
Возврат ЗапросПакета;
КонецФункции
Функция ДобавитьПолучитьОператор(ЗапросПакета, СтруктураСхемыЗапроса)
Если ЗапросПакета.Операторы.Количество() = 1 Тогда
Оператор = ЗапросПакета.Операторы[0];
Если НЕ Оператор.Источники.Количество() = 0 ИЛИ НЕ Оператор.ВыбираемыеПоля.Количество() = 0 Тогда
Оператор = Неопределено;
КонецЕсли;
КонецЕсли;
Если Оператор = Неопределено Тогда
Оператор = ЗапросПакета.Операторы.Добавить();
КонецЕсли;
Если СтруктураСхемыЗапроса.Свойство("Первые") И СтруктураСхемыЗапроса.Первые > 0 Тогда
Оператор.КоличествоПолучаемыхЗаписей = СтруктураСхемыЗапроса.Первые;
КонецЕсли;
Если СтруктураСхемыЗапроса.Свойство("Различные") И СтруктураСхемыЗапроса.Различные Тогда
Оператор.ВыбиратьРазличные = Истина;
КонецЕсли;
Оператор.Источники.Добавить(СтруктураСхемыЗапроса.ИсточникДанных);
Возврат Оператор;
КонецФункции
Процедура ДобавитьПоля(ЗапросПакета, Оператор, СтруктураСхемыЗапроса)
Если СтруктураСхемыЗапроса.Свойство("Поля") И
ТипЗнч(СтруктураСхемыЗапроса.Поля) = Тип("Массив") И
СтруктураСхемыЗапроса.Поля.Количество() > 0 Тогда
Для каждого Поле Из СтруктураСхемыЗапроса.Поля Цикл
Если Не Поле.Источник = Неопределено Тогда
ИсточникПоля = Оператор.Источники.НайтиПоПсевдониму(Поле.Источник);
Иначе
ИсточникПоля = Оператор.Источники[0];
КонецЕсли;
ДоступноеПоле = ИсточникПоля.Источник.ДоступныеПоля.Найти(Поле.ИмяПоля);
Если Не ДоступноеПоле = Неопределено Тогда
НовоеПоле = Оператор.ВыбираемыеПоля.Добавить(ДоступноеПоле);
Если Не Поле.Псевдоним = Неопределено Тогда
ЗапросПакета.Колонки[ЗапросПакета.Колонки.Количество() - 1].Псевдоним = Поле.Псевдоним;
КонецЕсли;
Иначе
ВызватьИсключение СтрШаблон("Поле %1 в источнике не определено", Поле.ИмяПоля);
КонецЕсли;
КонецЦикла;
Иначе
ЕстьСсылка = Ложь;
Для каждого Источник Из Оператор.Источники Цикл
Если Не Источник.Источник.ДоступныеПоля.Найти("Ссылка") = Неопределено Тогда
ЕстьСсылка = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не ЕстьСсылка Или (СтруктураСхемыЗапроса.Свойство("ВсеПоля") И СтруктураСхемыЗапроса.ВсеПоля) Тогда
Для каждого Источник Из Оператор.Источники Цикл
Для каждого Поле Из Источник.Источник.ДоступныеПоля Цикл
Оператор.ВыбираемыеПоля.Добавить(Поле);
КонецЦикла;
КонецЦикла;
Иначе
Оператор.ВыбираемыеПоля.Добавить(Оператор.Источники[0].Источник.ДоступныеПоля.Найти("Ссылка"));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьУсловия(Оператор, Запрос, СтруктураСхемыЗапроса)
Если СтруктураСхемыЗапроса.Свойство("Условия") И ТипЗнч(СтруктураСхемыЗапроса.Условия) = Тип("Массив") Тогда
Для каждого Условие Из СтруктураСхемыЗапроса.Условия Цикл
Оператор.Отбор.Добавить(Условие.УсловиеСтрокой);
Запрос.УстановитьПараметр(Условие.ИмяПараметра, Условие.Значение);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьСоединения(Оператор, СтруктураСхемыЗапроса)
Если СтруктураСхемыЗапроса.Свойство("Соединения") И ТипЗнч(СтруктураСхемыЗапроса.Соединения) = Тип("Массив") Тогда
Для каждого СтруктураСоединения Из СтруктураСхемыЗапроса.Соединения Цикл
ИсточникСоединения = Оператор.Источники.Добавить(СтруктураСоединения.ИсточникДанных,
СтруктураСоединения.Псевдоним);
Если Оператор.Источники[0].Соединения.Количество() = 0 Тогда
Оператор.Источники[0].Соединения.Добавить(ИсточникСоединения);
КонецЕсли;
Условия = ПроверитьНаНеоднозначностьПолей(СтруктураСоединения.Условие,
Оператор.Источники[0].Источник, ИсточникСоединения.Источник);
Соединение = Оператор.Источники[0].Соединения[Оператор.Источники[0].Соединения.Количество() - 1];
Соединение.Условие = Новый ВыражениеСхемыЗапроса(СтрСоединить(Условия, " И "));
// TODO: Строки заменить на функцию?
Если СтруктураСоединения.ТипСоединения = "Левое" Тогда
Соединение.ТипСоединения = ТипСоединенияСхемыЗапроса.ЛевоеВнешнее;
ИначеЕсли СтруктураСоединения.ТипСоединения = "Правое" Тогда
Соединение.ТипСоединения = ТипСоединенияСхемыЗапроса.ПравоеВнешнее;
ИначеЕсли СтруктураСоединения.ТипСоединения = "Внутреннее" Тогда
Соединение.ТипСоединения = ТипСоединенияСхемыЗапроса.Внутреннее;
ИначеЕсли СтруктураСоединения.ТипСоединения = "Полное" Тогда
Соединение.ТипСоединения = ТипСоединенияСхемыЗапроса.ПолноеВнешнее;
Иначе
ВызватьИсключение СтрШаблон("ДобавитьСоединения: неподдерживаемый тип соединения %1",
СтруктураСоединения.ТипСоединения);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьГруппировку(Оператор, СтруктураСхемыЗапроса)
Если СтруктураСхемыЗапроса.Свойство("Группировка") И ТипЗнч(СтруктураСхемыЗапроса.Группировка) = Тип("Массив") Тогда
Для каждого Группировка Из СтруктураСхемыЗапроса.Группировка Цикл
Оператор.Группировка.Добавить(Группировка);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьПорядок(ЗапросПакета, СтруктураСхемыЗапроса)
Если СтруктураСхемыЗапроса.Свойство("Порядок") И ТипЗнч(СтруктураСхемыЗапроса.Порядок) = Тип("Массив") Тогда
Для каждого ЭлементПорядка Из СтруктураСхемыЗапроса.Порядок Цикл
ЗапросПакета.Порядок.Добавить(ЭлементПорядка);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Функция ПроверитьНаНеоднозначностьПолей(МассивУсловий, ТаблицаОсновная, ТаблицаСоединения)
// TODO: Пока не учитывается ситуация типа: "Ссылка = Ссылка"
// Похоже вообще не имеет смысла преобразовывать условие в строку на предыдущем этапе.
// Преобразовывать надо здесь с учетом неоднозначности полей. Рефакторинг!
НовыйМассивУсловий = Новый Массив;
Для каждого Условие Из МассивУсловий Цикл
УсловиеСтрокой = Условие.УсловиеСтрокой;
Если Не Условие.ЛеваяЧасть = Неопределено И
Не ТаблицаОсновная.ДоступныеПоля.Найти(Условие.ЛеваяЧасть) = Неопределено И
Не ТаблицаСоединения.ДоступныеПоля.Найти(Условие.ЛеваяЧасть) = Неопределено Тогда
УсловиеСтрокой = СтрЗаменить(УсловиеСтрокой, Условие.ЛеваяЧасть,
ТаблицаОсновная.Псевдоним + "." + Условие.ЛеваяЧасть);
КонецЕсли;
Если Не Условие.ПраваяЧасть = Неопределено И
Не ТаблицаОсновная.ДоступныеПоля.Найти(Условие.ПраваяЧасть) = Неопределено И
Не ТаблицаСоединения.ДоступныеПоля.Найти(Условие.ПраваяЧасть) = Неопределено Тогда
УсловиеСтрокой = СтрЗаменить(УсловиеСтрокой, Условие.ПраваяЧасть,
ТаблицаСоединения.Псевдоним + "." + Условие.ПраваяЧасть);
КонецЕсли;
НовыйМассивУсловий.Добавить(УсловиеСтрокой);
КонецЦикла;
Возврат НовыйМассивУсловий;
КонецФункции
Процедура ДобавитьПараметрыЗапроса(СтруктураСхемыЗапроса, Запрос)
Если СтруктураСхемыЗапроса.Свойство("Параметры") И ТипЗнч(СтруктураСхемыЗапроса.Параметры) = Тип("Массив") Тогда
Для каждого Параметр Из СтруктураСхемыЗапроса.Параметры Цикл
Запрос.УстановитьПараметр(Параметр.ИмяПараметра, Параметр.Значение);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<CommonModule uuid="64cc4f13-8ea3-43e0-b530-031a569bfcd0">
<Properties>
<Name>СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: процессоры схем запроса служебный вызов сервера</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>true</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<CommonModule uuid="a7341127-4ed0-44b9-b3b2-007ae8f263dc">
<Properties>
<Name>СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: процессоры схем запроса служебный клиент сервер</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -1,305 +0,0 @@
#Область ПрограммныйИнтерфейс
Процедура УстановитьИсточникДанных(СхемаЗапроса, ИсточникДанных, Первые, Различные, Разрешенные) Экспорт
Если СхемаЗапроса = Неопределено Тогда
СхемаЗапроса = Новый Структура;
КонецЕсли;
СхемаЗапроса.Вставить("ИсточникДанных", ИсточникДанных);
Если Первые >= 0 Тогда
СхемаЗапроса.Вставить("Первые", Первые);
КонецЕсли;
СхемаЗапроса.Вставить("Различные", Различные);
СхемаЗапроса.Вставить("Разрешенные", Разрешенные);
КонецПроцедуры
Процедура УстановитьПервые(СхемаЗапроса, Количество) Экспорт
СхемаЗапроса.Вставить("Первые", Количество);
КонецПроцедуры
Процедура УстановитьРазличные(СхемаЗапроса) Экспорт
СхемаЗапроса.Вставить("Различные", Истина);
КонецПроцедуры
Процедура УстановитьРазрешенные(СхемаЗапроса) Экспорт
СхемаЗапроса.Вставить("Разрешенные", Истина);
КонецПроцедуры
Процедура УстановитьВыборВсехПолей(СхемаЗапроса) Экспорт
СхемаЗапроса.Вставить("ВсеПоля", Истина);
КонецПроцедуры
Процедура УстановитьПоляВыборки(СхемаЗапроса, Поля) Экспорт
Если ТипЗнч(Поля) = Тип("Строка") Тогда
НовыеПоля = ПолучитьПоляИзСтроки(Поля);
ИначеЕсли ТипЗнч(Поля) = Тип("Массив") Тогда
НовыеПоля = Поля;
ИначеЕсли ТипЗнч(Поля) = Тип("Структура") Тогда
НовыеПоля = Новый Массив;
НовыеПоля.Добавить(Поля);
Иначе
ВызватьИсключение "УстановитьПоляВыборки: неподдерживаемый тип данных в параметре ""Поля""";
КонецЕсли;
МассивПолей = Новый Массив;
Если СхемаЗапроса.Свойство("Поля") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда
МассивПолей = СхемаЗапроса.Поля;
КонецЕсли;
Для каждого НовоеПоле Из НовыеПоля Цикл
Поле = ПолучитьПоле(НовоеПоле);
МассивПолей.Добавить(Поле);
КонецЦикла;
СхемаЗапроса.Вставить("Поля", МассивПолей);
КонецПроцедуры
Процедура УстановитьУсловие(СхемаЗапроса, Предикат) Экспорт
СхемаЗапроса.Вставить("Условия", ПолучитьУсловияОтбора(Предикат));
КонецПроцедуры
Процедура ДобавитьСоединение(СхемаЗапроса, ТипСоединения, ИсточникДанных, Предикат) Экспорт
Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда
МассивСоединений = Новый Массив;
Если СхемаЗапроса.Свойство("Соединения") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда
МассивСоединений = СхемаЗапроса.Соединения;
КонецЕсли;
Псевдоним = "";
Если СтрНайти(ИсточникДанных, " КАК ") > 0 Тогда
ИнформацияОбИсточникеДанных = СтрЗаменить(ИсточникДанных, " КАК ", Символы.ПС);
ИсточникДанных = СтрПолучитьСтроку(ИнформацияОбИсточникеДанных, 1);
Псевдоним = СтрПолучитьСтроку(ИнформацияОбИсточникеДанных, 2);
КонецЕсли;
МассивСоединений.Добавить(Новый Структура("ТипСоединения, ИсточникДанных, Псевдоним, Условие",
ТипСоединения, ИсточникДанных, Псевдоним, ПолучитьУсловияСоединения(Предикат)));
СхемаЗапроса.Вставить("Соединения", МассивСоединений);
Иначе // Структура = вложенный запрос
// TODO:
КонецЕсли;
КонецПроцедуры
Процедура УстановитьГруппировку(СхемаЗапроса, Поля) Экспорт
Если ТипЗнч(Поля) = Тип("Строка") Тогда
НовыеПоля = ПолучитьПоляИзСтроки(Поля);
ИначеЕсли ТипЗнч(Поля) = Тип("Массив") Тогда
НовыеПоля = Поля;
Иначе
ВызватьИсключение "УстановитьГруппировку: неподдерживаемый тип данных в параметре ""Поля""";
КонецЕсли;
МассивПолей = Новый Массив;
Если СхемаЗапроса.Свойство("Группировка") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда
МассивПолей = СхемаЗапроса.Поля;
КонецЕсли;
Для каждого НовоеПоле Из НовыеПоля Цикл
МассивПолей.Добавить(НовоеПоле);
КонецЦикла;
СхемаЗапроса.Вставить("Группировка", МассивПолей);
КонецПроцедуры
Процедура УстановитьПорядок(СхемаЗапроса, Поля) Экспорт
Если ТипЗнч(Поля) = Тип("Строка") Тогда
НовыеПоля = ПолучитьПоляИзСтроки(Поля);
ИначеЕсли ТипЗнч(Поля) = Тип("Массив") Тогда
НовыеПоля = Поля;
Иначе
ВызватьИсключение "УстановитьПорядок: неподдерживаемый тип данных в параметре ""Поля""";
КонецЕсли;
МассивПолей = Новый Массив;
Если СхемаЗапроса.Свойство("Порядок") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда
МассивПолей = СхемаЗапроса.Поля;
КонецЕсли;
Для каждого НовоеПоле Из НовыеПоля Цикл
МассивПолей.Добавить(НовоеПоле);
КонецЦикла;
СхемаЗапроса.Вставить("Порядок", МассивПолей);
КонецПроцедуры
Процедура УстановитьПараметры(СхемаЗапроса, Параметры) Экспорт
СхемаЗапроса.Вставить("Параметры", Параметры);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ПолучитьПоляИзСтроки(СтрокаИменПолей)
МассивПолей = СтрРазделить(СтрокаИменПолей, ",", Ложь);
Для Сч = 0 По МассивПолей.Количество() - 1 Цикл
МассивПолей[Сч] = СокрЛП(МассивПолей[Сч]);
КонецЦикла;
Возврат МассивПолей;
КонецФункции
Функция ПолучитьПоле(Поле)
// TODO: Строки проверять на корректность синтаксиса - отсутствие пробелов и спец.символов
Если ТипЗнч(Поле) = Тип("Строка") Тогда
Если СтрНайти(Поле, " КАК ") > 0 Тогда
ИнформацияОПоле = СтрЗаменить(Поле, " КАК ", Символы.ПС);
Возврат Новый Структура("ИмяПоля, Источник, Псевдоним",
ПолучитьИмяПоляБезИсточника(СтрПолучитьСтроку(ИнформацияОПоле, 1)),
ПолучитьИсточникИзИмениПоля(Поле),
СтрПолучитьСтроку(ИнформацияОПоле, 2));
КонецЕсли;
Возврат Новый Структура("ИмяПоля, Источник, Псевдоним",
ПолучитьИмяПоляБезИсточника(Поле),
ПолучитьИсточникИзИмениПоля(Поле),
Неопределено);
ИначеЕсли ТипЗнч(Поле) = Тип("Структура") Тогда
Если Поле.Свойство("ИмяПоля") Тогда
Если Поле.Свойство("Источник") И Не Поле.Источник = Неопределено Тогда
Если Поле.Свойство("Псевдоним") Тогда
Возврат Поле;
КонецЕсли;
Возврат Новый Структура("ИмяПоля, Источник, Псевдоним",
ПолучитьИмяПоляБезИсточника(Поле.ИмяПоля),
ПолучитьИсточникИзИмениПоля(Поле.ИмяПоля),
Неопределено);
КонецЕсли;
Если Поле.Свойство("Псевдоним") Тогда
Возврат Новый Структура("ИмяПоля, Источник, Псевдоним",
ПолучитьИмяПоляБезИсточника(Поле.ИмяПоля),
ПолучитьИсточникИзИмениПоля(Поле.ИмяПоля),
Поле.Псевдоним);
КонецЕсли;
Возврат Новый Структура("ИмяПоля, Источник, Псевдоним",
ПолучитьИмяПоляБезИсточника(Поле.ИмяПоля),
ПолучитьИсточникИзИмениПоля(Поле.ИмяПоля),
Неопределено);
КонецЕсли;
ВызватьИсключение "ПолучитьПоле: некорректная структура передана в параметре ""Поле""";
КонецЕсли;
ВызватьИсключение "ПолучитьПоле: неподдерживаемый тип данных в параметре ""Поле""";
КонецФункции
Функция ПолучитьИмяПоляБезИсточника(ИмяПоля)
Если СтрНайти(ИмяПоля, ".") > 0 Тогда
МассивЭлементовПоля = СтрРазделить(ИмяПоля, ".");
МассивЭлементовПоля.Удалить(0);
Возврат СтрСоединить(МассивЭлементовПоля, ".");
КонецЕсли;
Возврат ИмяПоля;
КонецФункции
Функция ПолучитьИсточникИзИмениПоля(ИмяПоля)
Если СтрНайти(ИмяПоля, ".") > 0 Тогда
МассивЭлементовПоля = СтрРазделить(ИмяПоля, ".");
Возврат МассивЭлементовПоля[0];
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ПолучитьУсловияОтбора(Предикат)
// TODO: Нумерация (Сч) сквозная через все запросы
МассивУсловий = Новый Массив;
Сч = 0;
Для каждого Условие Из Предикат.Условия Цикл
ИмяПараметра = СтрШаблон("Параметр_%1", Сч);
Шаблон = ШаблонУсловия(Условие.ВидСравнения);
МассивУсловий.Добавить(Новый Структура("ИмяПараметра, УсловиеСтрокой, Значение",
ИмяПараметра, СтрШаблон(Шаблон, Условие.ИмяРеквизита, ИмяПараметра), Условие.Значение));
Сч = Сч + 1;
КонецЦикла;
Возврат МассивУсловий;
КонецФункции
Функция ПолучитьУсловияСоединения(Предикат)
МассивУсловий = Новый Массив;
Если Предикат = Неопределено Тогда
МассивУсловий.Добавить(
Новый Структура("ЛеваяЧасть, ПраваяЧасть, УсловиеСтрокой",,, "ИСТИНА"));
Возврат МассивУсловий;
КонецЕсли;
Для каждого Условие Из Предикат.Условия Цикл
Шаблон = ШаблонУсловия(Условие.ВидСравнения, Ложь);
МассивУсловий.Добавить(Новый Структура("ЛеваяЧасть, ПраваяЧасть, УсловиеСтрокой",
Условие.ИмяРеквизита, Условие.Значение, СтрШаблон(Шаблон, Условие.ИмяРеквизита, Условие.Значение)));
КонецЦикла;
Возврат МассивУсловий;
КонецФункции
Функция ШаблонУсловия(ВидСравнения, Амперсанд = Истина)
Выражения = СЗ_ПроцессорыПредикатовКлиентСервер.Выражения();
Если ВидСравнения = Выражения.Равно Тогда
Шаблон = "%1 = " + ?(Амперсанд, "&", "") + "%2";
ИначеЕсли ВидСравнения = Выражения.Больше Тогда
Шаблон = "%1 > " + ?(Амперсанд, "&", "") + "%2";
ИначеЕсли ВидСравнения = Выражения.Меньше Тогда
Шаблон = "%1 < " + ?(Амперсанд, "&", "") + "%2";
ИначеЕсли ВидСравнения = Выражения.В Тогда
Шаблон = "%1 В (" + ?(Амперсанд, "&", "") + "%2)";
Иначе
ВызватьИсключение "Неподдерживаемое выражение предиката " + ВидСравнения;
КонецЕсли;
Возврат Шаблон;
КонецФункции
#КонецОбласти

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ConfigDumpInfo xmlns="http://v8.1c.ru/8.3/xcf/dumpinfo" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" format="Hierarchical" version="2.18">
<ConfigVersions>
<Metadata name="CommonModule.СЗ_Запрос" id="5f1605a0-4e63-4339-b2cc-44e115be6ed7" configVersion="e2743c37ca1c317bbd7deb62473bdb9c92ce4b3b"/>
<Metadata name="CommonModule.СЗ_Запрос.Module" id="5f1605a0-4e63-4339-b2cc-44e115be6ed7.0" configVersion="70b897dad9d758e331d5d898768fe0344077916d"/>
<Metadata name="CommonModule.СЗ_ЗапросТест" id="52ab0c6f-4fa1-4913-b37e-460ab1e44314" configVersion="01955255914f2f02da26b7a05ec1ffe713f168e1"/>
<Metadata name="CommonModule.СЗ_ЗапросТест.Module" id="52ab0c6f-4fa1-4913-b37e-460ab1e44314.0" configVersion="ac93509d47d7c7ed87c457d0b9a528fd264ac3d6"/>
<Metadata name="CommonModule.СЗ_ПроцессорыПредикатовКлиентСервер" id="407489b2-2f4b-467b-9594-621de146e468" configVersion="d0e776fe2161eadb117e389e6d86e40d8f7927fc"/>
<Metadata name="CommonModule.СЗ_ПроцессорыПредикатовКлиентСервер.Module" id="407489b2-2f4b-467b-9594-621de146e468.0" configVersion="a3fd675572299afe5f63b59eef575cff639c35e7"/>
<Metadata name="CommonModule.СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер" id="19b0625e-9f74-4fba-9350-914066ae1034" configVersion="97824f99f8fe96dacf2d8271e35b6b11a89a7f4f"/>
<Metadata name="CommonModule.СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.Module" id="19b0625e-9f74-4fba-9350-914066ae1034.0" configVersion="dbadb525d8fa291f91fab2a1d85bd78062f506d0"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаКлиентСервер" id="a3e5bf50-2154-477f-9355-29b0930a73c5" configVersion="0a1d47680d6c53bcec9c7b566903a863ce26bf77"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаКлиентСервер.Module" id="a3e5bf50-2154-477f-9355-29b0930a73c5.0" configVersion="e4516fad653b42c44367545d251e48696271a349"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебный" id="fd5aeea0-9a03-452d-ba1e-81c816846c6c" configVersion="77f2ed6a2d9924e64f836b9a16c0664b4a5a38e8"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебный.Module" id="fd5aeea0-9a03-452d-ba1e-81c816846c6c.0" configVersion="b2fd5df72dfca291c7c509e19004d8a7117e0092"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера" id="64cc4f13-8ea3-43e0-b530-031a569bfcd0" configVersion="de76e252360ff40f9368c1eec2d95d3aa03b14e7"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера.Module" id="64cc4f13-8ea3-43e0-b530-031a569bfcd0.0" configVersion="f671df996460f1b0acc9ed4c7e27af2f5dbb660f"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер" id="a7341127-4ed0-44b9-b3b2-007ae8f263dc" configVersion="8a27beba3300dacb51abfc0f6b4c8711bb7b0b06"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.Module" id="a7341127-4ed0-44b9-b3b2-007ae8f263dc.0" configVersion="c0c07db62eb444934fc2a9860ec61233a2e25af4"/>
<Metadata name="Configuration.СхемаЗапроса" id="727bc241-bb6d-418f-b908-1102fbf1bc00" configVersion="32358f5e6e55bc199dcbf146a39e01e89463a7e7"/>
<Metadata name="DataProcessor.СЗ_ПроцессорПредикатов" id="12d6eb41-70d9-4802-8fde-b6464e23bf0b" configVersion="7bd25841e01d3196cd731359775f0af93ddbd0d1"/>
<Metadata name="DataProcessor.СЗ_ПроцессорПредикатов.ObjectModule" id="12d6eb41-70d9-4802-8fde-b6464e23bf0b.0" configVersion="7bf55d840fc4752caaf882cc4bac5e7fa7300863"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса" id="7008c53a-3e8a-4432-bff6-500c4145bab5" configVersion="dd57e1686ab74914b294900633b6e9245facc435"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса.Form.Форма" id="04cd8a25-c99d-4da9-ac0f-5703574d079f" configVersion="f910d6e757792c7cdd2137a7213495bba1da1300"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса.Form.Форма.Form" id="04cd8a25-c99d-4da9-ac0f-5703574d079f.0" configVersion="bae96f2ab9ea2a272936072451369a2851dc377f"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса.ObjectModule" id="7008c53a-3e8a-4432-bff6-500c4145bab5.0" configVersion="a7e021d94dee3eede73d29ab27db5114ad695467"/>
</ConfigVersions>
</ConfigDumpInfo>

View File

@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<Configuration uuid="727bc241-bb6d-418f-b908-1102fbf1bc00">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>9cd510cd-abfc-11d4-9434-004095e12fc7</xr:ClassId>
<xr:ObjectId>79fc0bfa-a7d2-4fcc-9968-cfb47caa8fd8</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>9fcd25a0-4822-11d4-9414-008048da11f9</xr:ClassId>
<xr:ObjectId>bf90fb71-1da9-4052-b179-033ccc51e8de</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>e3687481-0a87-462c-a166-9f34594f9bba</xr:ClassId>
<xr:ObjectId>a8573e3a-9a13-4e2b-9666-240ff4f3d932</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>9de14907-ec23-4a07-96f0-85521cb6b53b</xr:ClassId>
<xr:ObjectId>7e4ad5ff-f2b7-4283-a3c4-e62bfacbb5df</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>51f2d5d8-ea4d-4064-8892-82951750031e</xr:ClassId>
<xr:ObjectId>048a7528-7f13-42d2-8898-549305be15a9</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>e68182ea-4237-4383-967f-90c1e3370bc7</xr:ClassId>
<xr:ObjectId>f748cda1-e6d2-4aa2-8c76-75e9f4fe7eb7</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>fb282519-d103-4dd3-bc12-cb271d631dfc</xr:ClassId>
<xr:ObjectId>fc951404-a9cc-4c5d-bd94-f031bd348ea2</xr:ObjectId>
</xr:ContainedObject>
</InternalInfo>
<Properties>
<ObjectBelonging>Adopted</ObjectBelonging>
<Name>СхемаЗапроса</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса</v8:content>
</v8:item>
</Synonym>
<Comment/>
<ConfigurationExtensionPurpose>AddOn</ConfigurationExtensionPurpose>
<KeepMappingToExtendedConfigurationObjectsByIDs>true</KeepMappingToExtendedConfigurationObjectsByIDs>
<NamePrefix>СЗ_</NamePrefix>
<ConfigurationExtensionCompatibilityMode>Version8_3_24</ConfigurationExtensionCompatibilityMode>
<ScriptVariant>Russian</ScriptVariant>
<Vendor/>
<Version>0.0.1</Version>
<BriefInformation/>
<DetailedInformation/>
<Copyright/>
<VendorInformationAddress/>
<ConfigurationInformationAddress/>
<InterfaceCompatibilityMode>TaxiEnableVersion8_2</InterfaceCompatibilityMode>
</Properties>
<ChildObjects>
<CommonModule>СЗ_Запрос</CommonModule>
<CommonModule>СЗ_ЗапросТест</CommonModule>
<CommonModule>СЗ_ПроцессорыПредикатовКлиентСервер</CommonModule>
<CommonModule>СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер</CommonModule>
<CommonModule>СЗ_ПроцессорыСхемЗапросаКлиентСервер</CommonModule>
<CommonModule>СЗ_ПроцессорыСхемЗапросаСлужебный</CommonModule>
<CommonModule>СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера</CommonModule>
<CommonModule>СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер</CommonModule>
<DataProcessor>СЗ_ПроцессорПредикатов</DataProcessor>
<DataProcessor>СЗ_ПроцессорСхемЗапроса</DataProcessor>
</ChildObjects>
</Configuration>
</MetaDataObject>

View File

@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<DataProcessor uuid="12d6eb41-70d9-4802-8fde-b6464e23bf0b">
<InternalInfo>
<xr:GeneratedType name="DataProcessorObject.СЗ_ПроцессорПредикатов" category="Object">
<xr:TypeId>20e56103-de11-460e-989e-38009e54630a</xr:TypeId>
<xr:ValueId>207e5e5e-fb17-43ad-959f-910b588f6d68</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="DataProcessorManager.СЗ_ПроцессорПредикатов" category="Manager">
<xr:TypeId>e3602dbd-6e64-429f-99f4-b0c9a7b7102f</xr:TypeId>
<xr:ValueId>facb276b-1229-4f98-960f-86720e17c5c9</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>СЗ_ПроцессорПредикатов</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>С з процессор предикатов</v8:content>
</v8:item>
</Synonym>
<Comment/>
<UseStandardCommands>true</UseStandardCommands>
<DefaultForm/>
<AuxiliaryForm/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<ExtendedPresentation/>
<Explanation/>
</Properties>
<ChildObjects/>
</DataProcessor>
</MetaDataObject>

View File

@@ -1,44 +0,0 @@
#Область ОписаниеПеременных
Перем Предикат;
#КонецОбласти
#Область ПрограммныйИнтерфейс
Функция Реквизит(ИмяРеквизита) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьИмяРеквизита(Предикат, ИмяРеквизита);
Возврат ЭтотОбъект;
КонецФункции
Функция Равно(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Равно, Значение);
Возврат ЭтотОбъект;
КонецФункции
Функция Больше(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Больше, Значение);
Возврат ЭтотОбъект;
КонецФункции
Функция Меньше(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Меньше, Значение);
Возврат ЭтотОбъект;
КонецФункции
Функция В(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().В, Значение);
Возврат ЭтотОбъект;
КонецФункции
Функция Получить() Экспорт
Возврат Предикат;
КонецФункции
#КонецОбласти

View File

@@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<DataProcessor uuid="7008c53a-3e8a-4432-bff6-500c4145bab5">
<InternalInfo>
<xr:GeneratedType name="DataProcessorObject.СЗ_ПроцессорСхемЗапроса" category="Object">
<xr:TypeId>8fa76ff0-784b-4ebd-a63a-5bfed72f02c2</xr:TypeId>
<xr:ValueId>4b2cbc6f-5517-4354-9cca-09e37ffb6ef4</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="DataProcessorManager.СЗ_ПроцессорСхемЗапроса" category="Manager">
<xr:TypeId>4c35d9a4-671c-4413-b87e-b984a2286b1e</xr:TypeId>
<xr:ValueId>2db60e26-72c2-46c7-adef-d744c9274c32</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>СЗ_ПроцессорСхемЗапроса</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: процессор схем запроса</v8:content>
</v8:item>
</Synonym>
<Comment/>
<UseStandardCommands>true</UseStandardCommands>
<DefaultForm>DataProcessor.СЗ_ПроцессорСхемЗапроса.Form.Форма</DefaultForm>
<AuxiliaryForm/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<ExtendedPresentation/>
<Explanation/>
</Properties>
<ChildObjects>
<Form>Форма</Form>
</ChildObjects>
</DataProcessor>
</MetaDataObject>

View File

@@ -1,125 +0,0 @@
#Область ОписаниеПеременных
Перем СхемаЗапроса;
#КонецОбласти
#Область ПрограммныйИнтерфейс
Процедура УстановитьИсточникДанных(ИсточникДанных, Первые = -1, Различные = Ложь, Разрешенные = Ложь) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьИсточникДанных(СхемаЗапроса,
ИсточникДанных, Первые, Различные, Разрешенные);
КонецПроцедуры
Функция ВТаблицуЗначений() Экспорт
ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебный
.ПолучитьРезультатЗапроса(СхемаЗапроса).Выгрузить();
Возврат ТаблицаЗначений;
КонецФункции
Функция ВМассив(ИмяКолонки) Экспорт
ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебный
.ПолучитьРезультатЗапроса(СхемаЗапроса).Выгрузить();
Возврат ТаблицаЗначений.ВыгрузитьКолонку(ИмяКолонки);
КонецФункции
Функция Первые(Количество) Экспорт
// TODO:
Возврат ЭтотОбъект;
КонецФункции
Функция Различные() Экспорт
// TODO:
Возврат ЭтотОбъект;
КонецФункции
Функция Разрешенные() Экспорт
// TODO:
Возврат ЭтотОбъект;
КонецФункции
Функция Выбрать(Поля) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьПоляВыборки(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
Функция ВыбратьВсе() Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьВыборВсехПолей(СхемаЗапроса);
Возврат ЭтотОбъект;
КонецФункции
Функция Где(Предикат) Экспорт
Если ТипЗнч(Предикат) = Тип("Структура") Тогда
_Предикат = Предикат;
ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СЗ_ПроцессорПредикатов") Тогда
_Предикат = Предикат.Получить();
Иначе
ВызватьИсключение "Неверный тип предиката в методе ""Где""";
КонецЕсли;
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьУсловие(СхемаЗапроса, _Предикат);
Возврат ЭтотОбъект;
КонецФункции
Функция ЛевоеСоединение(ИсточникДанных, Предикат = Неопределено) Экспорт
// TODO: ИсточникДанных может быть структурой? Что делать в этом случае?
Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда
_ИсточникДанных = ИсточникДанных;
ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса") Тогда
_ИсточникДанных = ИсточникДанных.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип источника данных";
КонецЕсли;
Если ТипЗнч(Предикат) = Тип("Структура") Или Предикат = Неопределено Тогда
_Предикат = Предикат;
ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СЗ_ПроцессорПредикатов") Тогда
_Предикат = Предикат.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип предиката";
КонецЕсли;
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение(
СхемаЗапроса, "Левое", ИсточникДанных, _Предикат);
Возврат ЭтотОбъект;
КонецФункции
Функция Сгруппировать(Поля) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьГруппировку(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
Функция Упорядочить(Поля) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьПорядок(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
Функция Итоги() Экспорт
// TODO:
Возврат ЭтотОбъект;
КонецФункции
Функция Параметры(Параметры) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьПараметры(СхемаЗапроса, Параметры);
Возврат ЭтотОбъект;
КонецФункции
Функция Получить() Экспорт
Возврат СхемаЗапроса;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти

View File

@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<Form uuid="04cd8a25-c99d-4da9-ac0f-5703574d079f">
<Properties>
<Name>Форма</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Форма</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
<ExtendedPresentation/>
</Properties>
</Form>
</MetaDataObject>

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:DataProcessorObject.СЗ_ПроцессорСхемЗапроса</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
</Attributes>
</Form>

View File

@@ -1,133 +0,0 @@
#Область ОписаниеПеременных
&НаКлиенте
Перем СхемаЗапроса;
#КонецОбласти
#Область ПрограммныйИнтерфейс
&НаКлиенте
Процедура УстановитьИсточникДанных(ИсточникДанных, Первые = -1, Различные = Ложь, Разрешенные = Ложь) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьИсточникДанных(СхемаЗапроса,
ИсточникДанных, Первые, Различные, Разрешенные);
КонецПроцедуры
&НаКлиенте
Функция ВТаблицуЗначений() Экспорт
ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера
.ПолучитьРезультатЗапроса(СхемаЗапроса).Выгрузить();
Возврат ТаблицаЗначений;
КонецФункции
&НаКлиенте
Функция ВМассив(ИмяКолонки) Экспорт
ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера
.ПолучитьРезультатЗапроса(СхемаЗапроса).Выгрузить();
Возврат ТаблицаЗначений.ВыгрузитьКолонку(ИмяКолонки);
КонецФункции
&НаКлиенте
Функция Первые(Количество) Экспорт
// TODO:
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Различные() Экспорт
// TODO:
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Разрешенные() Экспорт
// TODO:
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Выбрать(Поля) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьПоляВыборки(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция ВыбратьВсе() Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьВыборВсехПолей(СхемаЗапроса);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Где(Предикат) Экспорт
Если ТипЗнч(Предикат) = Тип("Структура") Тогда
_Предикат = Предикат;
ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СЗ_ПроцессорПредикатов") Тогда
_Предикат = Предикат.Получить();
Иначе
ВызватьИсключение "Неверный тип предиката в методе ""Где""";
КонецЕсли;
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьУсловие(СхемаЗапроса, _Предикат);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция ЛевоеСоединение(ИсточникДанных, Предикат = Неопределено) Экспорт
// TODO: ИсточникДанных может быть структурой? Что делать в этом случае?
Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда
_ИсточникДанных = ИсточникДанных;
ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса") Тогда
_ИсточникДанных = ИсточникДанных.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип источника данных";
КонецЕсли;
Если ТипЗнч(Предикат) = Тип("Структура") Или Предикат = Неопределено Тогда
_Предикат = Предикат;
ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СЗ_ПроцессорПредикатов") Тогда
_Предикат = Предикат.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип предиката";
КонецЕсли;
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение(
СхемаЗапроса, "Левое", ИсточникДанных, _Предикат);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Сгруппировать(Поля) Экспорт
// TODO:
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Упорядочить(Поля) Экспорт
// TODO:
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Итоги() Экспорт
// TODO:
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Параметры(Параметры) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьПараметры(СхемаЗапроса, Параметры);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Получить() Экспорт
Возврат СхемаЗапроса;
КонецФункции
#КонецОбласти