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