DB.Totals

From SunFlurry wiki
Revision as of 08:43, 7 February 2021 by Admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  Totals, Gross (Запросы к накопителям)
Объект:Объект базы данных
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер и БД
Исключения:Невозможно превратить в строку, дату, число, ошибка в фильтрах и пр.
Визуальность:Нет

Функция выполняет запрос к таблице остатков текущего накопителя, в разрезе заданных реквизитов-аккумуляторов, накапливая остатки по заданным реквизитам актива. Остатки будут получены на указанную дату и могут иметь режим начальный остаток или конечный остаток. При вычислении остатков могут применяться фильтры по требуемым реквизитам-аккумуляторам. Функция возвращает таблицу значений, имеющую количество столбцов, совпадающих с количеством заданных реквизитов группировки и реквизитов агрегации. Имена столбцов соответствуют указанным реквизитам. Функция применима только к накопителям, имеющим таблицу остатков (записи накопителя датируются и имеется по крайней мере один реквизит-аккумулятор и один реквизит актива), для накопителей без таблицы остатков можно использовать функцию Compute.

Синтаксис

DB.Totals(<Список реквизитов группировки (STRING)>,<Список реквизитов суммирования (агрегации) (STRING)>,<Остатки на дату (DATE)>,<Режим даты (INT)>,<Стандартные фильтры>...):<Таблица итогов в требуемом разрезе (TAB)>

Аргументы

  • <Список реквизитов группировки (STRING)> - Задает наименования реквизитов группировки запроса. Каждый реквизит должен присутствовать в накопителе, каждый реквизит должен иметь признак аккумулятора.
  • <Список реквизитов суммирования (агрегации) (STRING)> - Задает наименования реквизитов агрегации запроса. Каждый реквизит должен присутствовать в накопителе, каждый реквизит должен иметь признак актив.
  • <Остатки на дату (DATE)> - Задает дату нахождения остатков.
  • <Режим даты (INT)> - Задает режим нахождения остатков на дату, доступны следующие значения:
    • 0 (по умолчанию) -- находить остатки на указанную дату (включая день даты). К примеру, для даты '31.12.2013 12:00:00' остатки будут найдены для периода с датами записей <= '31.12.2013 23:59:59.999', т.е. с записями < '01.01.2014'.
    • 1 -- находить остатки до указанной даты (не включать день даты). К примеру, для даты '31.12.2013 12:00:00' остатки будут найдены для периода с датами записей < '31.12.2013'.
    • 2 -- находить остатки на указанную дату и время (включая дату и время). К примеру, для даты '31.12.2013 12:00:00' остатки будут найдены для периода с датами записей <= '31.12.2013 12:00:00'.
    • 3 -- находить остатки до указанной даты и времени (не включая дату и время). К примеру, для даты '31.12.2013 12:00:00' остатки будут найдены для периода с датами записей < '31.12.2013 12:00:00'.
  • <Стандартные фильтры> - (необязательный аргумент) Стандартные фильтры описаны в статье Стандартные фильтры. Имеет смысл использовать только фильтры по реквизитам-аккумуляторам (не обязательно их присутствие в реквизитах группировки), иначе остаток будет найден неверно, так как таблица остатков содержит записи только в разрезе реквизитов-аккумуляторов.

Возвращаемое значение

Возвращается таблица, каждая запись которой содержит остаток указанных активов в разрезе указанных аккумуляторов.

Примеры

//Фрагмент заполняет строки документа текущими остатками склада документа за минусом резервов
//Переменные: aEl -- текущий документ
//            aTab -- строчная часть документа
aTab.ClearLines();
Tab1:=Stor.ОстаткиТМЦ.Gross("Номенклатура","Количество",,0,"Склад",aEl.Склад);
Tab2:=Stor.РезервыТМЦ.Gross("Номенклатура","Количество",,0,"Склад",aEl.Склад);
Tab2.Select();
While Tab2.Next() Do
  Tab2.Количество:=-Tab2.Количество;
EndDo;
//Добавим таблицу резервов к таблице текущих остатков
Tab1.FullJoin(Tab2,"Номенклатура","Количество");
    
Tab1.Select();
While Tab1.Next() Do
  If Round(Tab1.Количество,6)>0 Then
    aTab.AddLine("Номенклатура,Количество",Tab1.Номенклатура,Tab1.Количество);
  EndIf;
EndDo;