Как вывести две оборотно-сальдовые ведомости по счету рядом в 1С?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

Часто в процессе работы бухгалтера возникает необходимость визуального сравнения двух отчетов, например, двух оборотно-сальдовых ведомостей (ОСВ) по счету за разные периоды или для разных организаций. В типовых конфигурациях, таких как БП 3.0 КОРП, стандартный интерфейс не всегда позволяет удобно расположить два табличных документа для детального анализа. Разберем, как решить эту задачу программно и какие альтернативные подходы существуют.

Метод программного объединения табличных документов

Если задача требует именно вывода двух ведомостей в одном печатном документе, мы можем воспользоваться механизмом манипуляции объектом ТабличныйДокумент. Суть метода заключается в создании результирующего документа и последовательном переносе областей из исходных отчетов.

Рассмотрим пример кода, который позволяет вывести две ОСВ по горизонтали:


// Сначала формируем две ОСВ по счету как отдельные табличные документы
ТабДок = ОбъединитьДваТабличныхДокумента(ТабДокОСВПоСчету1, ТабДокОСВПоСчету2);
ВысотаТабДок = ТабДок.ВысотаТаблицы;
НачалоОбластиТаблицы2 = 0;

// Ищем разделитель между двумя таблицами, ориентируясь на наименование организации
Для ПерваяСтрока = 2 По ВысотаТабДок Цикл
    ТекущаяСтрокаТабДока = ТабДок.Область("R" + ПерваяСтрока + "C1");
    Если ТекущаяСтрокаТабДока.Текст = РеквизитФормыВЗначение("Объект").Организация.НаименованиеСокращенное Тогда
        НачалоОбластиТаблицы2 = ТекущаяСтрокаТабДока.Верх;
        Прервать;
    КонецЕсли;
КонецЦикла;

ОкончаниеОбластиТаблицы1 = НачалоОбластиТаблицы2 - 1;

// Переносим первую таблицу
Для i = 1 По ОкончаниеОбластиТаблицы1 Цикл
    ДокументРезультат.ВставитьОбласть(ТабДок.Область(i, 1, i, 9), ДокументРезультат.Область(i, 1, i, 9));
КонецЦикла;

// Переносим вторую таблицу в соседние колонки
НомерСтрокиПриемника = 1;
Для i = НачалоОбластиТаблицы2 По ВысотаТабДок Цикл
    ДокументРезультат.ВставитьОбласть(ТабДок.Область(i, 1, i, 9), ДокументРезультат.Область(НомерСтрокиПриемника, 11, НомерСтрокиПриемника, 19));
    НомерСтрокиПриемника = НомерСтрокиПриемника + 1;
КонецЦикла;

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

Использование штатных возможностей платформы

Прежде чем приступать к разработке сложных обработок, стоит вспомнить, что платформа 1С:Предприятие 8.3 имеет встроенные механизмы для работы с окнами:

  1. Сформируйте два отчета в разных окнах.
  2. Используйте меню в правом верхнем углу (три вертикальные точки или кнопка «Окно»).
  3. Выберите пункт «Показать вместе с другим».
  4. Выберите вариант расположения: вертикально или горизонтально.

Этот способ является наиболее быстрым и не требует написания кода, если целью является просто визуальное сравнение данных «глаза в глаза».

Аналитический подход: почему Excel может подвести

Часто возникает соблазн выгрузить данные в Excel и использовать формулы для сверки, например, по счетам 76.АВ и 62.02. Однако при автоматизации сверки стоит учитывать критические риски:

Вместо выгрузки в сторонние программы, мы рекомендуем создавать специализированный отчет на СКД (системе компоновки данных). Используя запрос к виртуальным таблицам ОстаткиИОбороты регистра бухгалтерии, вы можете объединить данные по контрагентам, договорам и документам расчетов внутри самой 1С. Это обеспечит корректное сравнение по уникальным идентификаторам объектов, исключая ошибки идентификации, свойственные таблицам Excel.

Рекомендации по реализации

Если ваши бухгалтеры настаивают на наглядности «двух обороток рядом», лучше разработать отчет, который выводит таблицу с заранее рассчитанными отклонениями. В такую таблицу можно включить колонки: Контрагент, Сумма аванса, НДС расчетный, НДС фактический и Отклонение. Это превратит процесс «крыжения» (ручной сверки) в автоматизированную проверку, что значительно повысит эффективность работы финансового отдела.

← На главную