Как создать отчёт о поступлении денег без использования компоновки данных?

Создание отчёта о поступлении денежных средств в 1С без использования СКД (системы компоновки данных) возможно через ручную реализацию формы отчёта, запроса, обработки результата и вывода на экран. Такой способ может использоваться в простых проектах, при обучении или в нестандартных конфигурациях, где нецелесообразно использовать СКД. Ниже описан пошаговый процесс реализации.

1. Создание внешней обработки

  1. Откройте конфигуратор.

  2. Выберите Файл → Новый → Обработка.

  3. Укажите имя, например: ОтчетПоступлениеДенег.

  4. В дереве объектов выберите Формы → Добавить форму.

  5. Назовите форму: ФормаОтчета.

2. Создание элементов формы

На управляемой форме добавьте следующие элементы:

  • Поле ввода типа "Период":

    • ДатаНачала (Тип: Дата)

    • ДатаОкончания (Тип: Дата)

  • Кнопка СформироватьОтчет.

  • Табличное поле ТаблицаОтчета, связанное с переменной ТаблицаЗначений.

Также можно добавить команду для кнопки: СформироватьОтчет.

3. Создание процедуры СформироватьОтчет

В модуле формы создайте обработку нажатия кнопки. Пример:

Процедура СформироватьОтчет(Команда)
// Проверка диапазона дат
Если ДатаНачала = Неопределено Или ДатаОкончания = Неопределено Тогда
Сообщить("Укажите период для отчета.");
Возврат;
КонецЕсли;
// Создание запроса
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Платежи.Дата КАК Дата,
Платежи.Контрагент КАК Контрагент,
Платежи.Сумма КАК Сумма,
Платежи.Договор КАК Договор
ИЗ
Документ.ПоступлениеНаРасчетныйСчет КАК Платежи
ГДЕ
Платежи.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
И
Платежи.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
// Выполнение запроса
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Очистка таблицы значений
ТаблицаОтчета = Новый ТаблицаЗначений;
ТаблицаОтчета.Колонки.Добавить("Дата");
ТаблицаОтчета.Колонки.Добавить("Контрагент");
ТаблицаОтчета.Колонки.Добавить("Сумма");
ТаблицаОтчета.Колонки.Добавить("Договор");
// Заполнение
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаОтчета.Добавить();
НоваяСтрока.Дата = Выборка.Дата;
НоваяСтрока.Контрагент = Выборка.Контрагент;
НоваяСтрока.Сумма = Выборка.Сумма;
НоваяСтрока.Договор = Выборка.Договор;
КонецЦикла;
// Обновление формы
ЭлементыФормы.ТаблицаОтчета.Обновить();
КонецПроцедуры

4. Подключение кнопки к команде

В свойствах кнопки СформироватьОтчет укажите вызов процедуры СформироватьОтчет.

5. Тестирование

  1. Откройте 1С в режиме предприятия.

  2. Запустите обработку.

  3. Укажите дату начала и окончания периода.

  4. Нажмите "Сформировать отчёт".

  5. Таблица отчета отобразится в табличном поле.

6. Дополнительные улучшения

  • Добавьте суммирование итогов через функцию ТаблицаОтчета.Итог("Сумма").

  • Добавьте фильтр по контрагенту.

  • Добавьте возможность экспорта в Excel.

  • Реализуйте группировки вручную, если нужно агрегирование.

7. Возможные источники данных

Если документ поступления денег может быть в разных документах (например, "Поступление на расчетный счет", "Поступление наличных", "Прочее поступление"), можно использовать составной тип в запросе:

ВЫБРАТЬ
Платежи.Сумма, ...
ИЗ
(ВЫБРАТЬ ... ИЗ Документ.ПоступлениеНаРасчетныйСчет
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ... ИЗ Документ.ПоступлениеНаличных
) КАК Платежи

Такой способ не зависит от системы компоновки данных и может быть легко расширен и модифицирован под конкретную задачу.