При разработке отчетов в 1С:Предприятии 7.7 одной из распространенных задач является получение оборотов в разрезе субконто, включая корреспонденцию счетов. Часто программисты сталкиваются с тем, что выборка возвращает пустой результат, несмотря на наличие проводок в базе данных. Давайте разберем, почему это происходит и как правильно настроить работу с объектом БухгалтерскиеИтоги.
Главная ошибка при использовании метода ВыполнитьЗапрос заключается в игнорировании параметра ТипИтогов. Если вы вызываете метод без указания этого параметра, 1С по умолчанию устанавливает значение 1. В режиме 1 система анализирует только остатки и обороты по счету в целом. Для того чтобы получить данные о корреспонденции, то есть обороты между счетами и субконто, необходимо передать значение 3.
Давайте проанализируем правильную структуру кода для получения оборотов между конкретными субконто. В этом примере мы будем извлекать данные по счету 51 (Банковские счета) в корреспонденции со счетами расчетов (60, 62, 76).
Для начала создадим объект БухгалтерскиеИтоги и настроим условия выборки:
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.БанковскиеСчета,, 1);
Ит.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты,, 1);
// Указываем счета, по которым собираем данные, и тип итогов = 3
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "51", "60,62,76", , 3);
Еще один критический момент — это перебор результатов. Когда мы используем несколько группировок, важно явно указывать вид субконто в методах ВыбратьСубконто и ПолучитьСубконто. Это исключает двусмысленность в том, какие именно аналитические разрезы перебирает программа.
Рассмотрим структуру циклов:
Ит.ВыбратьСубконто(ВидыСубконто.БанковскиеСчета);
Пока Ит.ПолучитьСубконто(ВидыСубконто.БанковскиеСчета) = 1 Цикл
Ит.ВыбратьКорСубконто(ВидыСубконто.Контрагенты);
Пока Ит.ПолучитьКорСубконто(ВидыСубконто.Контрагенты) = 1 Цикл
П_62 = Ит.КО;
Если П_62 > 0 Тогда
// Здесь мы выводим данные в таблицу
Таб.ВывестиСекцию("Субконто1_Р");
КонецЕсли;
КонецЦикла;
КонецЦикла;
3 в методе ВыполнитьЗапрос, если вам нужна корреспонденция счетов или субконто.Пока Ит.ПолучитьСубконто(...) = 1. Если цикл не входит в выполнение, проверьте период отчета и наличие проводок по указанным счетам в стандартных оборотных ведомостях.БухгалтерскиеИтоги 1С 7.7 крайне чувствительна к порядку вызовов. Обязательно используйте методы ВыбратьСубконто перед циклом, чтобы система начала индексировать выборку именно по нужному аналитическому разрезу.Следуя этим правилам, вы сможете успешно настроить любые отчеты по аналитическому учету в 1С 7.7, избежав пустых результатов и ошибок в логике обхода данных.