Last active
September 13, 2018 03:49
-
-
Save leoniv/34847e72dddff6ad6e14 to your computer and use it in GitHub Desktop.
1С ОбщийМодуль.a2sQuery - обертки для удобной работы с запросами 1С
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
////////////////////////////////////////////////////////////////////////////////// | |
// Модуль a2sQuery - обертки для удобной работы с запросами 1С. | |
// - меньше кода при работе с запросами | |
// - можно получать актуальные данные доступные текущей транзакции в отладчике | |
// - можно исследовать временные таблицы в отладчике | |
// Флаги модуля: | |
// - Сервер | |
// - ВнешнееСоединение | |
// - ВызовСервера - для обычного приложения | |
//* Interface ServerContext *///////////////////////////////////////////////////// | |
#If server then //ServerContext | |
// Функция - UnloadFlatten - выполняет запрос <QueryText> с параметрами <Parameters> | |
// используя менеджер временных таблиц <TmpManager> возвращает таблицу значений. | |
// Подробнее см. документацию 1С РезультатЗапроса.Выгрузить() | |
// | |
// Параметры: | |
// QueryText - Строка - Текст запроса | |
// Parameters - Структура - Параметры запроса | |
// TmpManager - МенеджерВременныхТаблиц - можно передать временные таблицы. Если не указан запрос будет инициирован с новым менеджером | |
// | |
// Возвращаемое значение: | |
// - ТаблицаЗначений | |
// | |
function UnloadFlatten(QueryText,Parameters=Undefined,TmpManager=Undefined) export | |
return excute(QueryText,Parameters,TmpManager).Unload() | |
endfunction | |
// Функция - UnloadByGroups - выполняет запрос <QueryText> с параметрами <Parameters> | |
// используя менеджер временных таблиц <TmpManager> возвращает дерево значений с группировкой | |
// без иерархии. | |
// Подробнее см. документацию 1С РезультатЗапроса.Выгрузить() | |
// | |
// Параметры: | |
// QueryText - Строка - Текст запроса | |
// Parameters - Структура - Параметры запроса | |
// TmpManager - МенеджерВременныхТаблиц - можно передать временные таблицы. Если не указан запрос будет инициирован с новым менеджером | |
// | |
// Возвращаемое значение: | |
// - ДеревоЗначений | |
// | |
function UnloadByGroups(QueryText,Parameters=Undefined,TmpManager=Undefined) export | |
return excute(QueryText,Parameters,TmpManager).Unload(QueryResultIteration.ByGroups) | |
endfunction | |
// Функция - UnloadByGroupsWhithHierarchy - выполняет запрос <QueryText> с параметрами <Parameters> | |
// используя менеджер временных таблиц <TmpManager> возвращает дерево значений с группировкой | |
// и иерархией. | |
// Подробнее см. документацию 1С РезультатЗапроса.Выгрузить() | |
// | |
// Параметры: | |
// QueryText - Строка - Текст запроса | |
// Parameters - Структура - Параметры запроса | |
// TmpManager - МенеджерВременныхТаблиц - можно передать временные таблицы. Если не указан запрос будет инициирован с новым менеджером | |
// | |
// Возвращаемое значение: | |
// - ДеревоЗначений | |
// | |
function UnloadByGroupsWhithHierarchy(QueryText,Parameters=Undefined,TmpManager=Undefined) export | |
return excute(QueryText,Parameters,TmpManager).Unload(QueryResultIteration.ByGroupsWithHierarchy) | |
endfunction | |
// Функция - SelectFlatten - выполняет запрос <QueryText> с параметрами <Parameters> | |
// используя менеджер временных таблиц <TmpManager> возвращает плоскую выборку. | |
// Подробнее см. документацию 1С РезультатЗапроса.Выбрать() | |
// | |
// Параметры: | |
// QueryText - Строка - Текст запроса | |
// Parameters - Структура - Параметры запроса | |
// TmpManager - МенеджерВременныхТаблиц - можно передать временные таблицы. Если не указан запрос будет инициирован с новым менеджером | |
// Groups - Строка - Список группировок по которым будет вестись обход, разделенных запятыми. | |
// GroupsForGroups - Строка - Список группировок, из которых будут выбираться значения группировок для обхода, разделенных запятыми. | |
// | |
// Возвращаемое значение: | |
// - ВыборкаИзРезультатаЗапроса | |
// | |
function SelectFlatten(QueryText,Parameters=Undefined,TmpManager=Undefined,Groups=Undefined,GroupsForGroups=Undefined) export | |
return excute(QueryText,Parameters,TmpManager).Select(QueryResultIteration.Linear,Groups,GroupsForGroups); | |
endfunction | |
// Функция - SelectFlatten - выполняет запрос <QueryText> с параметрами <Parameters> | |
// используя менеджер временных таблиц <TmpManager> возвращает выборку с группировкой. | |
// Подробнее см. документацию 1С РезультатЗапроса.Выбрать() | |
// | |
// Параметры: | |
// QueryText - Строка - Текст запроса | |
// Parameters - Структура - Параметры запроса | |
// TmpManager - МенеджерВременныхТаблиц - можно передать временные таблицы. Если не указан запрос будет инициирован с новым менеджером | |
// Groups - Строка - Список группировок по которым будет вестись обход, разделенных запятыми. | |
// GroupsForGroups - Строка - Список группировок, из которых будут выбираться значения группировок для обхода, разделенных запятыми. | |
// | |
// Возвращаемое значение: | |
// - ВыборкаИзРезультатаЗапроса | |
// | |
function SelectByGroups(QueryText,Parameters=Undefined,TmpManager=Undefined,Groups=Undefined,GroupsForGroups=Undefined) export | |
return excute(QueryText,Parameters,TmpManager).Select(QueryResultIteration.ByGroups,Groups,GroupsForGroups); | |
endfunction | |
// Функция - QuerySelectFlatten - выполняет запрос <QueryText> с параметрами <Parameters> | |
// используя менеджер временных таблиц <TmpManager> возвращает выборку с группировкой и иерархией. | |
// Подробнее см. документацию 1С РезультатЗапроса.Выбрать() | |
// | |
// Параметры: | |
// QueryText - Строка - Текст запроса | |
// Parameters - Структура - Параметры запроса | |
// TmpManager - МенеджерВременныхТаблиц - можно передать временные таблицы. Если не указан запрос будет инициирован с новым менеджером | |
// Groups - Строка - Список группировок по которым будет вестись обход, разделенных запятыми. | |
// GroupsForGroups - Строка - Список группировок, из которых будут выбираться значения группировок для обхода, разделенных запятыми. | |
// | |
// Возвращаемое значение: | |
// - ВыборкаИзРезультатаЗапроса | |
// | |
function SelectByGroupsWhithHierarchy(QueryText,Parameters=Undefined,TmpManager=Undefined,Groups=Undefined,GroupsForGroups=Undefined) export | |
return excute(QueryText,Parameters,TmpManager).Select(QueryResultIteration.ByGroupsWithHierarchy,Groups,GroupsForGroups); | |
endfunction | |
// Функция - Excute - выполняет запрос <QueryText> с параметрами <Parameters> | |
// используя менеджер временных таблиц <TmpManager> возвращает результат запроса. | |
// Подробнее см. документацию 1С Запрос.Выполнить() | |
// | |
// Параметры: | |
// QueryText - Строка - Текст запроса | |
// Parameters - Структура - Параметры запроса | |
// TmpManager - МенеджерВременныхТаблиц - можно передать временные таблицы. Если не указан запрос будет инициирован с новым менеджером | |
// | |
// Возвращаемое значение: | |
// - РезультатЗапроса | |
// | |
function Excute(QueryText,Parameters=Undefined,TmpManager=Undefined) export | |
Query = MakeQueryWhithParameters(TmpManager,QueryText,Parameters); | |
return Query.Execute(); | |
endfunction | |
// Функция - QueryExcute - выполняет пакет запросов <QueryText> с параметрами <Parameters> | |
// используя менеджер временных таблиц <TmpManager> возвращает массив результатов запроса. | |
// Подробнее см. документацию 1С Запрос.ВыполнитьПакет() | |
// | |
// Параметры: | |
// QueryText - Строка - Текст запроса | |
// Parameters - Структура - Параметры запроса | |
// TmpManager - МенеджерВременныхТаблиц - можно передать временные таблицы. Если не указан запрос будет инициирован с новым менеджером | |
// | |
// Возвращаемое значение: | |
// - Массив | |
// | |
function ExcutePakage(QueryText,Parameters=Undefined,TmpManager=Undefined) export | |
Query = MakeQueryWhithParameters(TmpManager,QueryText,Parameters); | |
return Query.ExecuteBatch(); | |
endfunction | |
#endif //ServerContext | |
//* Implementation */////////////////////////////////////////////////////////////// | |
#Region Private_ServerContext | |
#If server then | |
function MakeQueryWhithParameters(TmpManager,QueryText,Parameters) | |
Query = New Query(QueryText); | |
if TypeOf(TmpManager) = Type("TempTablesManager") then | |
Query.TempTablesManager = TmpManager; | |
else | |
Query.TempTablesManager = New TempTablesManager; | |
endif; | |
if TypeOf(Parameters) = Type("Structure") then | |
for each p in Parameters do | |
Query.SetParameter(p.key,p.value); | |
enddo; | |
endif; | |
return Query; | |
endfunction | |
#endif | |
#EndRegion //Private_ServerContext |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment