DB.Total

From SunFlurry wiki
Jump to: navigation, search
  Total, Gross1 (Запросы к накопителям)
Объект:Объект базы данных
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер и БД
Исключения:Невозможно превратить в строку, дату, число, ошибка в фильтрах и пр.
Визуальность:Нет

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

Синтаксис

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

Аргументы

  • <Реквизит суммирования (агрегации) (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'.
  • <Стандартные фильтры> - (необязательный аргумент) Стандартные фильтры описаны в статье Стандартные фильтры. Имеет смысл использовать только фильтры по реквизитам-аккумуляторам, иначе остаток будет найден неверно, так как таблица остатков содержит записи только в разрезе реквизитов-аккумуляторов.

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

Возвращается число -- остаток указанного реквизита актива на указанную дату.

Примеры

//Фрагмент выводит текущий остаток номенклатурной позиции аНоменклатура на складе аСклад за минусом резерва.
Ост:=Max(Storage.ОстаткиТМЦ.Gross1("Количество",,0,"Склад,Номенклатура",аСклад,аНоменклатура)-Storage.РезервыТМЦ.Gross1("Количество",,0,"Склад,Номенклатура",аСклад,аНоменклатура),0);
Message("Остаток позиции "+аНоменклатура+" на складе "+аСклад+": "+Ост);