При разработке отчетов по задолженности в конфигурации 1С:Бухгалтерия 7.7 часто возникает задача вывести номер конкретного платежного поручения, на основании которого была сформирована проводка. Использование объекта БухгалтерскиеИтоги позволяет быстро получить ссылки на документы, однако сам по себе объект Ит.Операция.Документ является лишь ссылкой, а не развернутым контекстом строк документа. Разберем по шагам, как правильно работать с табличной частью выписки, чтобы извлечь нужные реквизиты.
Когда мы получаем документ через Ит.Операция.Документ.ТекущийДокумент(), мы работаем с объектом документа. Ошибка многих начинающих разработчиков заключается в попытке обратиться к номеру строки или содержанию проводки без инициализации табличной части. Метод ТекущийДокумент() дает нам только «шапку», а для доступа к списку платежей, находящихся внутри выписки, необходимо явно перевести документ в режим работы с табличной частью.
Чтобы получить данные о платежках, нам необходимо выполнить следующие действия:
ВыбратьСтроки() для инициализации выборки.Пока ПолучитьСтроку() = 1 для обхода всех строк документа.ПервичныйДокумент или полям НомерДокВходящий.Рассмотрим пример реализации данного алгоритма:
Док = Ит.Операция.Документ.ТекущийДокумент();
Если Док.Вид() = "Выписка" Тогда
Если Док.ВыбратьСтроки() = 1 Тогда
Пока Док.ПолучитьСтроку() = 1 Цикл
// Проверяем, есть ли привязанный первичный документ
Если Док.ПервичныйДокумент.Выбран() = 0 Тогда
// Если документа нет, берем реквизиты из самой строки
НомерПлатежки = Док.НомерДокВходящий;
ДатаПлатежки = Док.ДатаДокВходящий;
Иначе
// Если первичный документ привязан, берем данные из него
НомерПлатежки = Док.ПервичныйДокумент.НомерДок;
ДатаПлатежки = Док.ПервичныйДокумент.ДатаДок;
КонецЕсли;
// Здесь мы можем выводить полученные данные в отчет
Сообщить("Найдена платежка № " + НомерПлатежки);
КонецЦикла;
КонецЕсли;
КонецЕсли;
При реализации данного подхода проанализируем важные нюансы:
Док.ПервичныйДокумент.Выбран() перед тем, как обращаться к полям первичного документа. В противном случае, если в строке выписки не указан документ-основание, обращение через точку приведет к ошибке выполнения или пустому значению.БухгалтерскиеИтоги — ресурсоемкая операция. Если вы строите отчет за длительный период, старайтесь максимально ограничить выборку Ит.ВыполнитьЗапрос(), используя параметры контрагента и договора, чтобы в выборку попадали только нужные записи.Сообщить(Док.НомерСтроки) внутри цикла. Если значение всегда равно 0, значит, метод ВыбратьСтроки() не был вызван или не сработал.В типовых конфигурациях 1С 7.7 структура может различаться. Если вы видите, что поле НомерДокВходящий пустое, проверьте, не заполняется ли номер платежки в привязанном ПервичныйДокумент. Мы рекомендуем использовать комбинацию проверок: сначала смотрим, заполнен ли первичный документ, и если нет — обращаемся к реквизитам самой строки Док.НомерДокВходящий. Такой подход делает отчет универсальным и отказоустойчивым.
Следуя этим рекомендациям, вы сможете корректно выводить данные о платежных поручениях в любом отчете, использующем бухгалтерские итоги, обеспечивая полноту и достоверность информации о взаиморасчетах.