При наличии в системе 1С:Предприятие компоненты «Бухгалтерский учет» система автоматически реализует специальный механизм работы с бухгалтерскими итогами. Данный механизм обеспечивает хранение, динамический пересчет бухгалтерских итогов и их извлечение средствами встроенного языка.
Изменение бухгалтерских итогов может производиться только проводками бухгалтерских операций.
Хранение итогов поддерживается системой с детализацией до месяца. В итогах хранятся остатки и обороты по счетам с детализацией по субконто и обороты между счетами (без детализации по субконто).
Обращение к бухгалтерским итогам выполняется при помощи агрегатного объекта типа «БухгалтерскиеИтоги». Объект может работать в трех режимах:
- работа с основными итогами,
- работа с временными итогами,
- работа в режиме запроса.
Объект типа «БухгалтерскиеИтоги» при создании функцией «СоздатьОбъект()» работает в первом режиме. Переключение в другие режимы производится функциями «Рассчитать()» и «ВыполнитьЗапрос()».
Функции «ИспользоватьПланСчетов()» и «ИспользоватьРазделитель Учета()» позволяют назначить план счетов и разделитель учета по которым будут выдаваться итоги.
1. Работа с основными итогами
В пункте меню «Управление бухгалтерскими итогами» в системе «1С:Предприятие» устанавливается последний рассчитанный период. В режиме работы с основными итогами осуществляется доступ только к итогам по рассчитанный месяц включительно.
Функции работы с итогами:
- ПериодД(<ДатаНач>,<ДатаКон>) – установка периода итогов
- СНД(<Cчет>,<ТипСуммы>,<Валюта>,<Cубконто1>,…) – сальдо начальное дебетовое;
- СНК() – сальдо начальное кредитовое;
- СКД() – сальдо конечное дебетовое;
- СКК() – сальдо конечное кредитовое;
- ДО() – дебетовый оборот по счету за период;
- КО() – кредитовый оборот по счету за период;
Параметры: <Cчет> – счет, <ТипСуммы> = 1 – сумма, 2 – валютная сумма, 3 – количество, <Валюта> – значение типа “Справочник.Валюты”, <Субконто1> – значение первого субконто счета, <Субконто2> – значение второго субконто счета и т.д.
ОБ(<СчетДеб>,<СчетКред>,<ТипСуммы>,<Валюта>) – обороты между счетами;
Для получения остатков и оборотов по счетам, имеющим субсчета, используются аналогичные функции: СНДР(), СКДР(), СКДР(), СККР().
2. Работа с временными итогами
Чтобы получить итоги на любую дату нужно выполнять временный расчет (временный, потому что он хранится только во время существования переменной типа «БухгалтерскиеИтоги») с помощью функции
Рассчитать(<ДатаНач>,<ДатаКон>,<ФильтрПоСчетам>,<ТолькоСинтетика>,<ПланСчетов>,<РазделительУчета>).
В параметре <ФильтрПоСчетам> можно задать в виде строки список счетов, разделенных запятой или точкой с запятой, по которым будет делаться расчет. Если параметр <ТолькоСинтетика> = 1, то расчет будет делаться только по счетам, иначе по счетам и субконто.
3. Работа в режиме запроса
Для получения большего количества итогов (обороты и остатки по разным видам группировок) используется режим запроса.
3.1. Выполнение запроса
Перед выполнением запроса устанавливаются различные фильтры:
- ВключатьСубсчета() – устанавливать режим отбора по субсчетам.
- ИспользоватьСубконто(<ВидСубконто>,<Значение>,<ТипФильтра>,<ПоГруппам>) – устанавливать режим отбора итогов в разрезе субконто. Параметр <ВидСубконто> задается выражением типа “ВидСубконто” или строкой, содержащей имя идентификатора вида субконто. Параметр <Значение> задает конкретное значение субконто. Если <ТипФильтра>=1, тогда итоги будут разворачиваться по этому виду субконто. Если <ТипФильтра>=2, тогда итоги будут отбираться по значению субконто. Если <ТипФильтра>=3, тогда это субконто вообще не будет учитываться.
- Функцию ИспользоватьСубконто() можно выполнять несколько раз для задания в запросе нескольких видов субконто. Обращение к субконто производится по порядковому номеру (порядок определяется последовательностью команд «ИспользоватьСубконто()»).
- ИспользоватьКорСубконто(<ВидСубконто>,<Значение>,<ТипФильтра>,<ПоГруппам>) – устанавливать режим отбора итогов по корреспондирующим счетам в разрезе субконто.
Затем выполняется сам запрос функцией ВыполнитьЗапрос( <ДатаНач>,<ДатаКон>,<ФильтрПоСчетам>,<ФильтрПоКорСчетам>, <Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>),
которая возвращает 1, если запрос выполнился успешно.
Параметр <ТипИтогов> принимает следующие значения: 1 – остатки и обороты по счетам, 2 – обороты между счетами, 3 – и то и другое.
Параметр <Периодичность> может принимать следующие значения:
1 («Период») – промежуточные итоги не рассчитываются;
2 («Операция») – промежуточные итоги рассчитываются по операциям;
3 («Проводка») – по проводкам;
4 («День») – по дням;
5 («Неделя») – по неделям;
6 («Декада») – по декадам;
7 («Месяц») – по месяцам;
8 («Квартал») – по кварталам;
9 («Год») – по годам;
3.2. Обращение к результатам запроса
Для перебора группировок используются следующие функции:
- ВыбратьСчета(), ПолучитьСчет();
- ВыбратьКорСчета(), ПолучитьКорСчет();
- ВыбратьВалюты(), ПолучитьВалюту();
- ВыбратьПериоды(), ПолучитьПериод();
- ВыбратьСубконто(), ПолучитьСубконто();
- ВыбратьКорСубконто(), ПолучитьКорСубконто();
Функции получения остатков и оборотов такие же, как и при работе с основными итогами.
Пример.
БИ=СоздатьОбъект(«БухгалтерскиеИтоги»);
БИ.ИспользоватьСубконто(«Номенклатура»);
БИ.ВыполнитьЗапрос(Дата1,Дата2,«41.1»);
БИ.ВыбратьСчета();
Пока БИ.ПолучитьСчет()=1 Цикл
// выводим итоги по счету
БИ.ВыбратьСубконто(1);
Пока БИ.ПолучитьСубконто()=1 Цикл
// выводим итоги по субконто
Сообщить(«Остаток на начало по счету » + БИ.Счет.Код + « товара » + БИ.Субконто(1)+Строка(БИ.СНД(3)) + «ед.»);
КонецЦикла;
КонецЦикла;