- •11.1. Регистры- источники данных для запроса
- •11.2. Примеры запросов к регистрам бухгалтерии
- •Структура регистра бухгалтерии
- •Движения без субконто
- •Движения с указанием субконто
- •Значения субконто
- •Остатки по счетам
- •Валютные остатки по счетам
- •Обороты по счетам
- •Обороты между счетами
- •Оборотно-сальдовая ведомость
- •Обороты ДтКт
11.2. Примеры запросов к регистрам бухгалтерии
Разберем на примерах, как извлекать из регистра бухгалтерии требуемую информацию. Реализуем некоторые стандартные бухгалтерские отчеты с помощью запросов.
Структура регистра бухгалтерии
Ниже в примерах будет использован регистр бухгалтерии Основной, поддерживающий корреспонденцию и имеющий следующую структуру:
Измерения |
|||
Организация |
балансовый |
Тип: СправочникСсылка. Организации |
|
Валюта |
Небалансовый |
Тип: СправочникСсылка.Валюты. Только для признака учета Валютный |
|
Ресурсы |
|||
Сумма |
балансовый |
Тип: Число. |
|
Количество |
Небалансовый |
Тип: Число. Только для признака учета Количественный |
|
ВалютнаяСумма |
небалансовый |
Тип: Число. Только для признака учета Валютный |
|
Реквизиты |
|||
ЖО |
|
Тип: Строка |
Движения без субконто
Самой простой тип запросов - получение детальных записей регистра. Для этого используется основная таблица-источник регистра бухгалтерии.
Обратите внимание, что для небалансовых измерений и ресурсов, а также для счета существуют поля с добавлением «Дт» и «Кт», например, ВалютаДт:
Пример 1. (запрос расположен в модуле объекта Документ.АвансовывйОтчет)
ЗапросПоПроводкам = Новый Запрос();
ЗапросПоПроводкам.УстановитьПараметр("Ссылка", Ссылка);
ЗапросПоПроводкам.Текст =
"ВЫБРАТЬ
|Хозрасчетный.СчетДт,
|Хозрасчетный.СчетКт,
|СУММА(Хозрасчетный.Сумма) КАК Сумма,
|МИНИМУМ(Хозрасчетный.НомерСтроки) КАК НомерСтроки
|ИЗ
|РегистрБухгалтерии.Основной КАК Хозрасчетный
|ГДЕ
|Хозрасчетный.Регистратор = &Ссылка
|И (НЕ(Хозрасчетный.СчетДт.Забалансовый
|ИЛИ Хозрасчетный.СчетКт.Забалансовый))
|
|СГРУППИРОВАТЬ ПО
|Хозрасчетный.СчетДт,
|Хозрасчетный.СчетКт
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ВыборкаПроводок = ЗапросПоПроводкам.Выполнить().Выбрать();
Заметьте, что эта таблица не предоставляет информацию о субконто. Для этого предназначена следующая таблица.
Движения с указанием субконто
Теперь получим список движений регистра с субконто. Для этого нужно воспользоваться таблицей ДвиженияССубконто. Для демонстрации мы включим в результат поле ВидСубконтоДт1 и другие поля, содержащие информацию о субконто по дебету и кредиту проводки.
Это реализуется в следующем запросе:
Пример 2a.
|ВЫБРАТЬ
|Период, //дата и время записи
|Организация, //балансовое измерение Организация
|СчетДт, СчетКт, //счета дебета и кредита
|Сумма, //балансовый ресурс Сумма
|ВидСубконтоДт1, СубконтоДт1, //вид и значение субконто 1 по дебету
|СубконтоДт2, //субконто 2 по дебету
|СубконтоКт1, СубконтоКт2, //субконто 1 и 2 по кредиту
|КоличествоДт КолДт, КоличествоКт КолКт, //небалансовый ресурс
|ЖО //реквизит записи ЖО
|ИЗ РегистрБухгалтерии.Основной.ДвиженияССубконто
Пример 2б.
ЗапросПоПроводкам = Новый Запрос();
ЗапросПоПроводкам.УстановитьПараметр("Ссылка", Ссылка);
ЗапросПоПроводкам.УстановитьПараметр("КурсоваяРазница", Справочники.ПрочиеДоходыИРасходы.КурсовыеРазницы);
ЗапросПоПроводкам.Текст =
"ВЫБРАТЬ
|СУММА(ВЫБОР
|КОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт1 = &КурсоваяРазница
|ТОГДА ХозрасчетныйДвиженияССубконто.Сумма
|ИНАЧЕ 0
|КОНЕЦ) КАК СуммаДт,
|СУММА(ВЫБОР
|КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1 = &КурсоваяРазница
|ТОГДА ХозрасчетныйДвиженияССубконто.Сумма
|ИНАЧЕ 0
|КОНЕЦ) КАК СуммаКт
|ИЗ
|РегистрБухгалтерии.Основной.ДвиженияССубконто(, , Регистратор =
|&Ссылка) КАК ХозрасчетныйДвиженияССубконто
|";
ВыборкаКР = ЗапросПоПроводкам.Выполнить().Выгрузить();