База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как создать внешнюю печатную форму «Счет клиента» в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 часа, 56 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
18 января 2026 в 18:00 #35508
пример создания внешней печатной формы счет клиента
-
18 января 2026 в 18:00 #35509
Сергей, привет!
Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.
—
### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)
### 2. В модуле обработки создаем экспортную функцию регистрации:
Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; // Вид обработки - печатная форма ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); // Назначение - для какого объекта будет доступна печатная форма ПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"})); // Наименование печатной формы в списке ПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)"); // Версия обработки ПараметрыРегистрации.Вставить("Версия", "1.0"); // Краткая информация ПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента"); // Безопасный режим (лучше Истина) ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина); // Команды - добавим команду печати ТаблицаКоманд = Новый ТаблицаЗначений; ТаблицаКоманд.Колонки.Добавить("Представление"); ТаблицаКоманд.Колонки.Добавить("Идентификатор"); ТаблицаКоманд.Колонки.Добавить("Использование"); ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение"); ТаблицаКоманд.Колонки.Добавить("Модификатор"); НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = "Печать счета клиента"; НоваяКоманда.Идентификатор = "ПечатьСчета"; НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиенте НоваяКоманда.ПоказыватьОповещение = Истина; НоваяКоманда.Модификатор = ""; ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции—
### 3. Создаем форму обработки (управляемая форма)
— Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его `СсылкаНаОбъект`.
— Добавляем кнопку «Печать» с командой «Печать».—
### 4. В модуле формы пишем процедуру печати:
&НаКлиенте Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт // Открываем форму с параметрами для печати ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника"); ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка; ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения"); ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды; ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов; ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия); КонецПроцедуры—
### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:
Функция ПечатьСчетКлиента(МассивОбъектов) Экспорт ТабДок = Новый ТабличныйДокумент; ТабДок.ВывестиСтроку("Счет клиента"); ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy")); ТабДок.ВывестиСтроку(""); ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование); ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2")); // Здесь можно добавить вывод табличной части, реквизитов и т.д. Возврат ТабДок; КонецФункции—
### 6. В модуле формы добавляем вызов печати из объекта:
&НаСервере Функция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ТабДок = ПечатьСчетКлиента(МассивОбъектов); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "СчетКлиента", "Счет клиента", ТабДок ); Возврат ТабДок; КонецФункции—
### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:
&НаКлиенте Процедура ПечатьНаКлиенте(Команда) МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(СсылкаНаОбъект); ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов); ТабДок.Показать("Счет клиента"); КонецПроцедуры—
### Итог:
— Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
— При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
— Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.—
Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.
—
Если нужно, могу помочь с конкретным кодом под твою конфигурацию.
Удачи!
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.