Как создать отчёт о поступлении денег без использования компоновки данных?
Создание отчёта о поступлении денежных средств в 1С без использования СКД (системы компоновки данных) возможно через ручную реализацию формы отчёта, запроса, обработки результата и вывода на экран. Такой способ может использоваться в простых проектах, при обучении или в нестандартных конфигурациях, где нецелесообразно использовать СКД. Ниже описан пошаговый процесс реализации.
1. Создание внешней обработки
-
Откройте конфигуратор.
-
Выберите Файл → Новый → Обработка.
-
Укажите имя, например: ОтчетПоступлениеДенег.
-
В дереве объектов выберите Формы → Добавить форму.
-
Назовите форму: ФормаОтчета.
2. Создание элементов формы
На управляемой форме добавьте следующие элементы:
-
Поле ввода типа "Период":
-
ДатаНачала (Тип: Дата)
-
ДатаОкончания (Тип: Дата)
-
-
Кнопка СформироватьОтчет.
-
Табличное поле ТаблицаОтчета, связанное с переменной ТаблицаЗначений.
Также можно добавить команду для кнопки: СформироватьОтчет.
3. Создание процедуры СформироватьОтчет
В модуле формы создайте обработку нажатия кнопки. Пример:
Процедура СформироватьОтчет(Команда)
// Проверка диапазона дат
Если ДатаНачала = Неопределено Или ДатаОкончания = Неопределено Тогда
Сообщить("Укажите период для отчета.");
Возврат;
КонецЕсли;
// Создание запроса
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Платежи.Дата КАК Дата,
Платежи.Контрагент КАК Контрагент,
Платежи.Сумма КАК Сумма,
Платежи.Договор КАК Договор
ИЗ
Документ.ПоступлениеНаРасчетныйСчет КАК Платежи
ГДЕ
Платежи.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
И
Платежи.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
// Выполнение запроса
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Очистка таблицы значений
ТаблицаОтчета = Новый ТаблицаЗначений;
ТаблицаОтчета.Колонки.Добавить("Дата");
ТаблицаОтчета.Колонки.Добавить("Контрагент");
ТаблицаОтчета.Колонки.Добавить("Сумма");
ТаблицаОтчета.Колонки.Добавить("Договор");
// Заполнение
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаОтчета.Добавить();
НоваяСтрока.Дата = Выборка.Дата;
НоваяСтрока.Контрагент = Выборка.Контрагент;
НоваяСтрока.Сумма = Выборка.Сумма;
НоваяСтрока.Договор = Выборка.Договор;
КонецЦикла;
// Обновление формы
ЭлементыФормы.ТаблицаОтчета.Обновить();
КонецПроцедуры
4. Подключение кнопки к команде
В свойствах кнопки СформироватьОтчет укажите вызов процедуры СформироватьОтчет.
5. Тестирование
-
Откройте 1С в режиме предприятия.
-
Запустите обработку.
-
Укажите дату начала и окончания периода.
-
Нажмите "Сформировать отчёт".
-
Таблица отчета отобразится в табличном поле.
6. Дополнительные улучшения
-
Добавьте суммирование итогов через функцию ТаблицаОтчета.Итог("Сумма").
-
Добавьте фильтр по контрагенту.
-
Добавьте возможность экспорта в Excel.
-
Реализуйте группировки вручную, если нужно агрегирование.
7. Возможные источники данных
Если документ поступления денег может быть в разных документах (например, "Поступление на расчетный счет", "Поступление наличных", "Прочее поступление"), можно использовать составной тип в запросе:
ВЫБРАТЬ
Платежи.Сумма, ...
ИЗ
(ВЫБРАТЬ ... ИЗ Документ.ПоступлениеНаРасчетныйСчет
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ... ИЗ Документ.ПоступлениеНаличных
) КАК Платежи
Такой способ не зависит от системы компоновки данных и может быть легко расширен и модифицирован под конкретную задачу.