Главная Статьи Обмен опытом Практика использования запросов в 1С 8. Расчет среднесуточных показателей остатков.
Практика использования запросов в 1С 8. Расчет среднесуточных показателей остатков.
20.07.2010 12:23

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

 

Примерами среднесуточных показателей могут быть:

  1. Среднесуточные остатки товаров в разрезе складов, групп товаров, производителей и т.д.;
  2. Среднесуточные остатки денежных средств в разрезе касс, валют и т.д.;
  3. Среднесуточная дебиторская/кредиторская задолженность, среднесуточные капитал, инвестиции и вложения собственников.

В общем случае, алгоритм расчета среднесуточного остатка несложен для реализации средствами встроенного языка 1С. Для этого достаточно построить таблицу остатков на конец каждого дня анализа с необходимой аналитикой, просуммировать (свернуть колонки сумм по колонкам аналитик) и усреднить полученный результат.

Подобный подход нельзя назвать эффективным с точки зрения производительности, ведь для расчета придется организовывать цикл по дням и получать остатки на конец каждого дня.

Наиболее эффективно в таком случае использовать язык запросов в 1С. Ниже приведен пример текста запроса для получения таблицы среднесуточных остатков задолженности за период анализа (использована конфигурация "Управление производственным предприятием для Украины, редакция 1.1")

ВЫБРАТЬ

 

ЗадолженностьКонтрагентаРазвернутая.ДоговорКонтрагента КАК ДоговорКонтрагента,

ЗадолженностьКонтрагентаРазвернутая.Сделка КАК Сделка,

СУММА(ЗадолженностьКонтрагентаРазвернутая.СуммаСальдо) / РАЗНОСТЬДАТ(&Дата1, &Дата2, ДЕНЬ) КАК СреднесуточноеСальдо

ИЗ

(ВЫБРАТЬ

Запрос1.ДоговорКонтрагента КАК ДоговорКонтрагента,

Запрос1.Сделка КАК Сделка,

Запрос1.Период,

Запрос1.СуммаВзаиморасчетовКонечныйОстаток * РАЗНОСТЬДАТ(Запрос1.Период, ЕСТЬNULL(МИНИМУМ(Запрос2.Период), &Дата2), ДЕНЬ) КАК СуммаСальдо

ИЗ

РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&Дата1, &Дата2, День) КАК Запрос1

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&Дата1, &Дата2, День) КАК Запрос2

ПО

Запрос1.ДоговорКонтрагента = Запрос2.ДоговорКонтрагента

И Запрос1.Сделка = Запрос2.Сделка

И Запрос1.Период < Запрос2.Период

СГРУППИРОВАТЬ ПО

Запрос1.ДоговорКонтрагента,

Запрос1.Сделка,

Запрос1.Период,

Запрос1.СуммаВзаиморасчетовКонечныйОстаток

) КАК ЗадолженностьКонтрагентаРазвернутая

СГРУППИРОВАТЬ ПО

ЗадолженностьКонтрагентаРазвернутая.ДоговорКонтрагента,

ЗадолженностьКонтрагентаРазвернутая.Сделка


Параметры &Дата1 и &Дата2 используются для хранения значений границ интервала анализа. При этом следует заметить, что для правильного расчета параметр &Дата2 должен содержать значение, сдвинутое на 1 секунду после правой границы интервала анализа. К примеру, для расчета показателя за период с 01.05.2010 по 02.05.2010 необходимо установить параметр &Дата1 в значение 01.05.2010 00:00:00, а параметр &Дата2 в значение 03.05.2010 00:00:00.

 


Прокопенко Константин Игоревич

Направление бизнес-приложений
Руководитель сектора управленческого учета
ЗАТ "Спец-інвест"

 

 

Добавить комментарий


Защитный код
Обновить

 

     

   
тел. : (044) 200-02-74 © «ООО "Спец-инвест"» 2009
Все права защищены. При полном или частичном использовании материалов сайта активная ссылка на spec-i.com.ua обязательна!
e-mail: 1С@spec-i.com.ua