Skip to content

Instantly share code, notes, and snippets.

@leoniv
Last active September 13, 2018 03:49
Show Gist options
  • Save leoniv/34847e72dddff6ad6e14 to your computer and use it in GitHub Desktop.
Save leoniv/34847e72dddff6ad6e14 to your computer and use it in GitHub Desktop.
1С ОбщийМодуль.a2sQuery - обертки для удобной работы с запросами 1С
//////////////////////////////////////////////////////////////////////////////////
// Модуль 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