Печатная форма документа с суммой прописью
Условие
Создайте печатную форму для документа "РеализацияТоваровУслуг" с выводом суммы прописью.
Требования:
- Шапка: номер и дата документа, контрагент, организация
- Табличная часть: номенклатура, количество, цена, сумма
- Подвал: итоговая сумма цифрами и прописью
- Место для подписи
Формат суммы прописью
Пример: 12 345,50 руб. → "Двенадцать тысяч триста сорок пять рублей 50 копеек"
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение
Печатная форма документа с суммой прописью в 1С
В 1С:Предприятие для создания печатной формы документа используется макет печатной формы в конструкторе или программно. Рассмотрим оба подхода решения этой задачи.
Архитектура решения
1. Макет печатной формы (рекомендуется)
- Создаётся в конструкторе в разделе Макеты документа
- Используется встроенный язык 1С для добавления функциональности
- Формирование суммы прописью выполняется через встроенную функцию или модуль
2. Программный способ
- Реализация через программный интерфейс ОСП
- Более гибкий, но требует больше кода
Встроенная функция суммы прописью
В 1С:Предприятие 8 существует встроенная функция ЧислоПрописью():
// Пример использования функции
Сумма = 12345.50;
СуммаПрописью = ЧислоПрописью(
Сумма,
"Рубль",
"Копейка",
"РЕД"
);
// Результат: Двенадцать тысяч триста сорок пять рублей 50 копеек
Структура макета печатной формы
Макет содержит три основных раздела:
Шапка документа:
- Наименование и номер документа
- Дата документа
- Организация (реквизиты: название, ИНН, КПП, адрес)
- Контрагент (название, ИНН, адрес доставки/выставления)
Табличная часть:
- Колонки: номер по порядку, номенклатура, количество, единица измерения, цена, сумма
- Данные берутся из табличной части Товары документа
- Расчёт суммы по строкам
Подвал:
- Итоговая сумма цифрами
- Сумма прописью
- Место для подписей (наименования должностей и ФИ)
Программная реализация
Модуль документа с методом печати:
// ОбщийМодуль для работы с печатными формами
Функция ПолучитьМакет(ИмяМакета)
Возврат ЭтотОбъект.ПолучитьМакет(ИмяМакета);
КонецФункции
// Функция для расчёта суммы прописью
Функция СуммаПрописью(Сумма)
Возврат ЧислоПрописью(
Сумма,
"Рубль",
"Копейка",
"РЕД"
);
КонецФункции
// Процедура печати документа
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм)
Для Каждого Документ Из МассивОбъектов Цикл
Макет = ПолучитьМакет("ПечатнаяФорма");
ОбластьШапка = Макет.ОбластиДанных.Шапка;
ОбластьТабличнаяЧасть = Макет.ОбластиДанных.ТабличнаяЧасть;
// Заполнение шапки
ОбластьШапка.Параметры.НомерДокумента = Документ.Номер;
ОбластьШапка.Параметры.ДатаДокумента = Документ.Дата;
ОбластьШапка.Параметры.Организация = Документ.Организация;
ОбластьШапка.Параметры.Контрагент = Документ.Контрагент;
// Заполнение табличной части
ОбластьТабличнаяЧасть.Параметры.Товары = Документ.Товары;
// Расчёт итоговой суммы
ИтоговаяСумма = 0;
Для Каждого Строка Из Документ.Товары Цикл
ИтоговаяСумма = ИтоговаяСумма + Строка.Сумма;
КонецЦикла;
// Подвал с суммой прописью
Макет.ОбластиДанные.Подвал.Параметры.ИтоговаяСумма = ИтоговаяСумма;
Макет.ОбластиДанные.Подвал.Параметры.СуммаПрописью = СуммаПрописью(ИтоговаяСумма);
// Вывод в коллекцию печатных форм
КоллекцияПечатныхФорм.Добавить(Макет);
КонецЦикла;
КонецПроцедуры
Параметры функции ЧислоПрописью()
- Параметр 1: число или сумма для преобразования
- Параметр 2: именительный падеж валюты (ед. число) - Рубль
- Параметр 3: для дробной части - Копейка
- Параметр 4: род, число, падеж - РЕД
Важные моменты
- Форматирование даты: используй функцию Формат(Дата, ДФ=dd.MM.yyyy)
- Форматирование сумм: функция Формат(Сумма, ЧDD,00)
- Шрифты: в макете используй стандартные (Arial, Times New Roman)
- Ориентация листа: выбирай портретную или альбомную в зависимости от количества колонок
- Масштабирование: предусмотри масштабирование при печати для правильного отображения
Эта архитектура позволяет легко модифицировать печатную форму без изменения кода, а функция ЧислоПрописью() гарантирует корректное преобразование любых сумм.